Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }