app = $app; $this->userManager = $um; $this->identityCheckStrategy = $identityCheckStrategy; } /** * @param string $currentPassword * @param string $newPassword * @throws Exception */ public function ValidateAndChangePassword($currentPassword, $newPassword) { if (!$this->CheckSecurityManagementObjects()) throw new Exception('This configuration is not secure'); $this->ValidateCurrentPassword($currentPassword); $this->ChangePassword($newPassword); } private function CheckSecurityManagementObjects() { return !(is_null($this->userManager) || is_null($this->identityCheckStrategy) || is_null($this->app->GetUserAuthorizationStrategy()) || !$this->app->GetUserAuthorizationStrategy()->IsCurrentUserLoggedIn()); } /** * @param string $currentPassword * @throws Exception */ private function ValidateCurrentPassword($currentPassword) { $errorMessage = ''; if (!$this->identityCheckStrategy->CheckUsernameAndPassword( $this->app->GetUserAuthorizationStrategy()->GetCurrentUser(), $currentPassword, $errorMessage) ) { throw new Exception(GetCaptions('UTF-8')->GetMessageString('UsernamePasswordWasInvalid')); } } /** * @param string $newPassword */ private function ChangePassword($newPassword) { $this->userManager->ChangeUserPassword($this->app->GetUserAuthorizationStrategy()->GetCurrentUserId(), $newPassword); } }