Пример #1
0
        public async Task <SingleResult <AccountPublicDto> > Authorize(AccountAuthorizeDto model)
        {
            var result = new SingleResult <AccountPublicDto>();

            var jwt       = model.Token.Replace("Bearer ", "");
            var userToken = _context.UserTokens.FirstOrDefault(x => x.UserId == model.Id && x.Value == jwt);

            var isTokenLive = CheckTokenExpiration(jwt);

            if (!isTokenLive)
            {
                result.Message = "JWT token has been expired";
                return(result);
            }

            var user = await _userManager.Users.Include(x => x.ReservedBooks).FirstOrDefaultAsync(x => x.Id == model.Id);

            var roles = await GetUserRoles(user);

            result.IsSuccessful            = true;
            result.Data                    = _mapper.Map <ApplicationUser, AccountPublicDto>(user);
            result.Data.AuthorizationToken = jwt;
            result.Data.Roles              = roles;

            return(result);
        }
Пример #2
0
        public async Task <IActionResult> Authorize([FromBody] AccountAuthorizeDto model)
        {
            if (!ModelState.IsValid)
            {
                var badResult = new OperationResult();
                badResult.Message = string.Join("; ", ModelState.Values
                                                .SelectMany(x => x.Errors)
                                                .Select(x => x.ErrorMessage));
                return(new OkObjectResult(badResult));
            }

            var result = await _accountService.Authorize(model);

            return(new OkObjectResult(result));
        }