public async Task <Response> Handle(SignInUserCommand request, CancellationToken cancellationToken) { var result = await _signInService.SignInUser(request.UserName, request.Password); if (result.Error != null) { return(result); } var user = await _context.Users.Include(r => r.UserRoles).ThenInclude(r => r.Role).FirstOrDefaultAsync(); var userRoles = user.UserRoles.Select(d => d.Role.Name).ToList(); var jwtToken = _jWTService.GenerateJWT(user, userRoles); var tokenResult = new { token = jwtToken, type = "Bearer", expired = DateTime.Now.AddMinutes(720), roles = userRoles, email = user.Email, firstName = user.FirstName, lastName = user.LastName }; return(new Response(tokenResult)); }
public async Task <TokenResult> Handle(RegisterUserCommand request, CancellationToken cancellationToken) { if (await _context.Users.AnyAsync(x => x.Login == request.Login)) { throw new BadRequestException("This login exists"); } User user = new(){ Login = request.Login, Password = _hashPassword.Hash(request.Password) }; await _context.Users.AddAsync(user); await _context.SaveChangesAsync(cancellationToken); return(new(){ AccessToken = _iJWTService.GenerateJWT(user) }); } }
public async Task <TokenResult> Handle(LoginUserCommand request, CancellationToken cancellationToken) { User user = await _context.Users.FirstOrDefaultAsync(x => x.Login == request.Login && x.Password == _hashPassword.Hash(request.Password)) ?? throw new BadRequestException("Login or password is incorrect"); return(new(){ AccessToken = _IJWTService.GenerateJWT(user) }); }