public override void OnActionExecuting(ActionExecutingContext context)
 {
     if (!context.ModelState.IsValid)
     {
         context.Result = _responseService.GenerateResponse(context.ModelState);
     }
 }
Example #2
0
        public async Task <IActionResult> GetToken([FromBody] GetTokenModel model)
        {
            var handler = _handlerFactory(model.GrantType);

            if (handler == null)
            {
                return(_responseService.GenerateResponse(HttpStatusCode.BadRequest, $"Grant Type \"{model.GrantType}\" is not supported."));
            }

            var result = await handler.Authenticate(model);

            if (result == null)
            {
                return(_responseService.GenerateResponse(HttpStatusCode.BadRequest, "The credentials provided were invalid."));
            }

            if (result.RequiresTwoFactor || result.RequiresExternal)
            {
                return(_responseService.GenerateResponse(HttpStatusCode.BadRequest, result));
            }

            if (result.IsLockedOut)
            {
                return(_responseService.GenerateResponse(HttpStatusCode.BadRequest, "This account has been locked out, please try again later."));
            }

            if (result.User == null)
            {
                return(_responseService.GenerateResponse(HttpStatusCode.BadRequest, "The credentials provided were invalid."));
            }

            var token = await _jwtService.GenerateToken(result.User);

            return(_responseService.GenerateResponse(HttpStatusCode.OK, token));
        }
        public async Task <IActionResult> Index(int page = 1, int size = 10, string search = null, string sort = null)
        {
            var result = await _userRepository.SearchUsers(page, size, search, sort);

            var model = new UserListModel
            {
                Items           = result.Items.Select(MapUser),
                Page            = result.Page,
                Size            = result.Size,
                TotalPages      = result.TotalPages,
                TotalCount      = result.TotalCount,
                HasNextPage     = result.HasNextPage,
                HasPreviousPage = result.HasPreviousPage,
                Search          = search,
                Sort            = sort
            };

            return(_responseService.GenerateResponse(HttpStatusCode.OK, model));
        }
Example #4
0
        public async Task <IActionResult> GetProfile()
        {
            var user = await _userRepository.GetUserById(HttpContext.User.Identity.Name);

            if (user == null)
            {
                return(_responseService.GenerateResponse(HttpStatusCode.NotFound, "User could not be found."));
            }

            var model = new UserModel
            {
                Id               = user.Id.ToString(),
                EmailAddress     = user.EmailAddress,
                FirstName        = user.FirstName,
                LastName         = user.LastName,
                DateOfBirth      = user.DateOfBirth,
                IsLockedOut      = user.IsLockedOut,
                HasPassword      = user.HasPassword,
                EmailConfirmed   = user.EmailConfirmed,
                TwoFactorEnabled = user.TwoFactorEnabled,
                Picture          = user.Picture,
                Roles            = user.Roles,
                Logins           = user.Logins.Select(a => new ExternalLoginModel(a.Provider, a.ExternalId))
            };

            return(_responseService.GenerateResponse(HttpStatusCode.OK, model));
        }