void Handle(Input.Save action)
        {
            if (!CheckPasswordMatch(this.Password, this.ConfirmPassword))
            {
                return;
            }

            if (this.resetPassword == null)
            {
                this.Message = "Reset token already used";
                return;
            }

            if (this.resetPassword.Expire < DateTime.UtcNow)
            {
                this.Message = "Reset token expired";
                // TODO: redirect?
                return;
            }

            if (resetPassword.User == null)
            {
                this.Message = "Failed to get the user"; // TODO: Better message
                return;
            }

            string userID = resetPassword.User.GetObjectID();

            Db.Transact(() => {
                SystemUserAdmin.SetPassword(resetPassword.User, this.Password);
                // Remove resetPassord instance
                resetPassword.Delete();
            });

            this.RedirectUrl = "/UserAdmin/admin/users/" + userID;
        }