Example #1
0
        public JsonResult ChangePassword(string old_p, string new_p)
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(old_p) && !string.IsNullOrWhiteSpace(new_p))
                {
                    RFLoginCache.Login(LoginUsername, old_p);
                    var oldPasswordHash = RFLoginCache.GetPasswordHash(LoginUsername);
                    RFLoginCache.Login(LoginUsername, new_p);
                    var newPasswordHash = RFLoginCache.GetPasswordHash(LoginUsername);

                    var vaults = Context.GetKeysByType <RFKeyVaultKey>();
                    if (vaults.Any())
                    {
                        foreach (var vaultKey in vaults.Values)
                        {
                            using (var secure = new RFSecureActivity(Context, LoginUsername, new RFSimpleKeyDomain(vaultKey.Root), vaultKey.Enum))
                            {
                                var vault = secure.OpenKeyVault(oldPasswordHash);
                                vault.ResetUser(LoginUsername, newPasswordHash);
                                secure.SaveKeyVault();
                            }
                        }
                    }
                }

                Context.UserLog.LogEntry(new RFUserLogEntry
                {
                    Action       = "ChangePassword",
                    Area         = "Encryption",
                    Description  = "Changed password.",
                    IsUserAction = true,
                    IsWarning    = false,
                    Username     = Username,
                    Timestamp    = DateTimeOffset.Now
                });

                return(Json(true));
            }
            catch (Exception ex)
            {
                RFLoginCache.Logout(LoginUsername);
                return(Json(JsonError.Throw("ChangePassword", ex)));
            }
        }
Example #2
0
        public JsonResult ResetMaster(string p)
        {
            try
            {
                var passwordHash = RFLoginCache.Login(LoginUsername, p);
                var vaults       = Context.GetKeysByType <RFKeyVaultKey>();
                if (vaults.Any())
                {
                    foreach (var vaultKey in vaults.Values)
                    {
                        using (var secure = new RFSecureActivity(Context, LoginUsername, new RFSimpleKeyDomain(vaultKey.Root), vaultKey.Enum))
                        {
                            var vault  = secure.OpenKeyVault(passwordHash);
                            var newKey = RFSecure.GenerateNewKey();
                            vault.ChangeMasterKey(newKey);
                            secure.SaveKeyVault();
                        }
                    }
                }

                Context.UserLog.LogEntry(new RFUserLogEntry
                {
                    Action       = "ResetMaster",
                    Area         = "Encryption",
                    Description  = "Reset Master Key.",
                    IsUserAction = true,
                    IsWarning    = false,
                    Username     = Username,
                    Timestamp    = DateTimeOffset.Now
                });

                return(Json(true));
            }
            catch (Exception ex)
            {
                RFLoginCache.Logout(LoginUsername);
                return(Json(JsonError.Throw("ResetMaster", ex)));
            }
        }