Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public CustomAuthorization(UserTypes userType)
 {
     _roleName = userType.ToString();
 }