Пример #1
0
            public async Task <AuthenticationResponse> Handle(LoginUserQuery request, CancellationToken cancellationToken)
            {
                var user = await _context.Users.FirstOrDefaultAsync(x => x.Username == request.Username.ToLower());

                if (user == null)
                {
                    throw new AuthException();
                }

                // compare password logic.
                if (!_passwordService.ComparePassword(request.Password, user.PasswordHash, user.PasswordSalt))
                {
                    throw new AuthException();
                }
                // add jwt token service.
                var tokenResponse = _jwtService.GenerateToken(new TokenGenerationDto {
                    UserId         = user.Id,
                    NameIdentifier = user.Username
                });

                // save token to db
                user.AuthToken = tokenResponse.Token;

                await _context.SaveChangesAsync(cancellationToken);

                return(tokenResponse);
            }