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); }
/// <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) )); }