public async Task <LoginUserResponse> LoginUserAsync(LoginUserRequest loginUserRequest) { var user = await this.GetUserAsync(loginUserRequest.Username); this.userValidationService.ValidateLoginUser(user); this.passwordService.CheckPassword(loginUserRequest.Password, user.HashedPassword); user.LastLoginDate = DateTime.UtcNow; await this.Context.SaveChangesAsync(); var accessTokenGenerationData = new AccessTokenGenerationData { UserId = user.Id, RefreshToken = Encoding.Default.GetString(user.RefreshToken), Email = user.Email, AuthorizationRole = user.AuthorizationRole }; var loginUserResponse = new LoginUserResponse { AccessToken = this.jwtSecurityTokenService.GenerateToken(accessTokenGenerationData), User = Mapper.Map <User, UserDto>(user) }; return(loginUserResponse); }
public async Task <RegisterUserResponse> RegisterUserAsync(RegisterUserRequest registerUserRequest) { var user = Mapper.Map <RegisterUserRequest, User>(registerUserRequest); this.userValidationService.ValidateRegisterUser(user); user.HashedPassword = this.passwordService.HashPassword(registerUserRequest.Password); var refreshToken = this.jwtSecurityTokenService.GenerateRefreshToken(); user.RefreshToken = Encoding.Default.GetBytes(refreshToken); user.RoleId = AnyUserExists ? (int)AuthorizationRole.User : (int)AuthorizationRole.Administrator; await Context.Users.AddAsync(user); await Context.SaveChangesAsync(); var accessTokenGenerationData = new AccessTokenGenerationData { UserId = user.Id, RefreshToken = refreshToken, Email = user.Email, AuthorizationRole = user.AuthorizationRole }; var registerUserResponse = new RegisterUserResponse { AccessToken = this.jwtSecurityTokenService.GenerateToken(accessTokenGenerationData), User = Mapper.Map <User, UserDto>(user) }; return(registerUserResponse); }
public async Task <LoginUserResponse> SilentLoginAsync() { var user = this.CurrentUser; this.userValidationService.ValidateLoginUser(user); user.LastLoginDate = DateTime.UtcNow; await this.Context.SaveChangesAsync(); var accessTokenGenerationData = new AccessTokenGenerationData { UserId = user.Id, RefreshToken = Encoding.Default.GetString(user.RefreshToken), Email = user.Email, AuthorizationRole = user.AuthorizationRole }; var loginUserResponse = new LoginUserResponse { AccessToken = this.jwtSecurityTokenService.GenerateToken(accessTokenGenerationData), User = Mapper.Map <User, UserDto>(user) }; return(loginUserResponse); }
public string GenerateToken(AccessTokenGenerationData accessTokenGenerationDto) { var claims = new ClaimsIdentity( new[] { new Claim(Constants.JwtToken.Claims.Email, accessTokenGenerationDto.Email.ToString()), new Claim(Constants.JwtToken.Claims.RefreshToken, accessTokenGenerationDto.RefreshToken), new Claim(Constants.JwtToken.Claims.UserId, accessTokenGenerationDto.UserId.ToString()), new Claim(Constants.JwtToken.Claims.Role, accessTokenGenerationDto.AuthorizationRole.ToString()) }); return(CreateNewToken(claims)); }