Ejemplo n.º 1
0
        public async Task <AuthenticatedUser> RegisterUser(RegisterUserRequest request)
        {
            string encryptedPassword = EncrypterUtility.StringToSHA256String(value: request.Password);

            var userToRegister = new UserDrive
            {
                Name     = request.Name,
                Lastname = request.Lastname,
                Username = request.Username,
                Email    = request.Email,
                Password = encryptedPassword,
            };

            _context.UserDrive.Add(userToRegister);
            var entriesWritten = await _context.SaveChangesAsync();

            if (entriesWritten > 0)
            {
                return(await AuthenticateUser(request : new AuthenticationRequest
                {
                    EmailOrUsername = userToRegister.Email,
                    Password = request.Password,
                }
                                              ));
            }

            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Generates a JWT based on a user
        /// </summary>
        /// <param name="user">User to generate the token</param>
        /// <returns>A string representing the JWT</returns>
        private string GenerateToken(UserDrive user)
        {
            var jwtTokenHandler = new JwtSecurityTokenHandler();
            var jwtkey          = Encoding.ASCII.GetBytes(_jwtSettings.JWTKey);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[] {
                    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                    new Claim(ClaimTypes.Email, user.Email),
                    new Claim("Username", user.Username),
                }),
                Expires            = DateTime.UtcNow.AddDays(10),
                SigningCredentials = new SigningCredentials(
                    new SymmetricSecurityKey(jwtkey),
                    SecurityAlgorithms.HmacSha256Signature
                    )
            };

            return(jwtTokenHandler.WriteToken(
                       token: jwtTokenHandler.CreateToken(tokenDescriptor: tokenDescriptor)
                       ));
        }