public static string CreateJwt(String username, String email, UserTypes role, long ttlMillis) { if (username == null) { throw new ArgumentNullException(nameof(username)); } if (role.ToString() == null) { throw new ArgumentNullException(nameof(role)); } var currentTime = GetNistTime(); var expiration = currentTime + ttlMillis; var payload = new Dictionary <string, string>() { { "iss", username }, { "sub", email }, { "iat", currentTime.ToString() }, { "exp", expiration.ToString() }, { "role", role.ToString() } }; var secretKey = SecretKey.GetSecretKey(); var key = Encoding.ASCII.GetBytes(secretKey); var token = Jose.JWT.Encode(payload, key, JwsAlgorithm.HS256); return(token); }
internal static bool CheckRole(string token, UserTypes typeRequested) { var decodedToken = Decode(token); var tokenRole = decodedToken["role"].ToString(); var userRepository = new UserRepository(); User user = userRepository.GetByUsername(decodedToken["iss"].ToString()); var userRole = user.Type; if (userRole == UserTypes.Administrator.ToString()) { return(true); } if (userRole != tokenRole) { return(false); } if (tokenRole == typeRequested.ToString()) { return(true); } return(false); }
private async Task <User> CheckUserAsync( string document, string firstName, string lastName, string email, string phone, string address, UserTypes userType) { User user = await _userHelper.GetUserAsync(email); if (user == null) { user = new User { FirstName = firstName, LastName = lastName, Email = email, UserName = email, PhoneNumber = phone, Address = address, Document = document, City = _context.Cities.FirstOrDefault(), UserType = userType }; await _userHelper.AddUserAsync(user, "123456"); await _userHelper.AddUserToRoleAsync(user, userType.ToString()); string token = await _userHelper.GenerateEmailConfirmationTokenAsync(user); await _userHelper.ConfirmEmailAsync(user, token); } return(user); }
public CustomAuthorization(UserTypes userType) { _roleName = userType.ToString(); }