コード例 #1
0
ファイル: LocalAuth.cs プロジェクト: miahyap/ICT3x03-Team-10
        public bool RegisterUser(ref User user)
        {
            if (user.TotpToken == null)
            {
                _logger.LogInformation("TOTP token has not been generated.");
                return(false);
            }

            if (!VerifyPassword(user.Password))
            {
                _logger.LogInformation("Password verification failed.");
                return(false);
            }

            if (!VerifyUsername(user.Username))
            {
                _logger.LogInformation("Username verification failed.");
                return(false);
            }

            user.PasswordHash = Pbkdf2Password.PasswordToHash(user.Password);
            user.Uuid         = SecureGuid.CreateSecureRfc4122Guid();
            _database.AddUser(user);
            _emailSender.SendRegisterEmail(user);
            return(true);
        }
コード例 #2
0
ファイル: LocalAuth.cs プロジェクト: miahyap/ICT3x03-Team-10
        public bool LoginUser(ref User user)
        {
            User valUser;

            if (user.Username != null)
            {
                valUser = _database.GetUser(user.Username);
            }
            else if (user.Uuid != Guid.Empty)
            {
                valUser = _database.GetUser(user.Uuid);
            }
            else
            {
                _logger.LogInformation("Both username and uuid is null.");
                return(false);
            }

            if (user.Password.Length > 64)
            {
                _logger.LogInformation("Password exceeds permitted length.");
                return(false);
            }

            var randomBytes = new byte[48];

            RandomNumberGenerator.Fill(randomBytes);
            if (valUser == null)
            {
                _logger.LogInformation("Username does not exist.");
                Pbkdf2Password.CheckPasswordHash(randomBytes, "blahblahblah123");
                return(false);
            }

            if (!Pbkdf2Password.CheckPasswordHash(valUser.PasswordHash, user.Password))
            {
                _logger.LogInformation("Password is incorrect.");
                return(false);
            }

            user          = valUser;
            user.Password = null;
            return(true);
        }
コード例 #3
0
ファイル: LocalAuth.cs プロジェクト: miahyap/ICT3x03-Team-10
        public bool ChangePassword(User user, string newPassword)
        {
            if (!LoginUser(ref user))
            {
                _logger.LogInformation("User verification failed.");
                return(false);
            }

            if (!VerifyPassword(newPassword))
            {
                _logger.LogInformation("Password verification failed.");
                return(false);
            }

            user.PasswordHash = Pbkdf2Password.PasswordToHash(newPassword);
            _database.ChangePassword(user);
            _emailSender.SendChangePasswordEmail(user);
            return(true);
        }
コード例 #4
0
ファイル: LocalAuth.cs プロジェクト: miahyap/ICT3x03-Team-10
        public bool ResetPassword(ref User user, string token)
        {
            var oauthUser = _oauthProvider.VerifyUserFromOauthToken(token, OauthActionEnum.Reset);

            if (oauthUser == null)
            {
                _logger.LogInformation("Oauth handler rejected token");
                return(false);
            }

            var userNameUser = _database.GetUser(user.Username);

            if (userNameUser == null)
            {
                _logger.LogInformation("Username provided does not map to an account.");
                return(false);
            }

            if (userNameUser.Email != oauthUser.Email)
            {
                _logger.LogInformation("Attempting to reset incorrect account.");
                return(false);
            }

            if (!VerifyPassword(user.Password))
            {
                _logger.LogInformation("Password verification failed.");
                return(false);
            }

            user.PasswordHash = Pbkdf2Password.PasswordToHash(user.Password);
            user.Uuid         = userNameUser.Uuid;
            _database.ChangePassword(user);
            _emailSender.SendChangePasswordEmail(user);
            return(true);
        }