public static authenticatePlaintext ( $username, $password ) : null | |
||
$username | ||
$password | ||
리턴 | null | |
public function loginAction() { $user = null; try { \Pimcore::getEventManager()->trigger("admin.login.login.authenticate", $this, ["username" => $this->getParam("username"), "password" => $this->getParam("password")]); $user = $this->getUser(); if (!$user instanceof User) { if ($this->getParam("password")) { $user = Tool\Authentication::authenticatePlaintext($this->getParam("username"), $this->getParam("password")); if (!$user) { throw new \Exception("Invalid username or password"); } } else { if ($this->getParam("token")) { $user = Tool\Authentication::authenticateToken($this->getParam("username"), $this->getParam("token")); if (!$user) { throw new \Exception("Invalid username or token"); } // save the information to session when the user want's to reset the password // this is because otherwise the old password is required => see also PIMCORE-1468 if ($this->getParam("reset")) { Tool\Session::useSession(function ($adminSession) { $adminSession->password_reset = true; }); } } else { throw new \Exception("Invalid authentication method, must be either password or token"); } } } } catch (\Exception $e) { //see if module or plugin authenticates user \Pimcore::getEventManager()->trigger("admin.login.login.failed", $this, ["username" => $this->getParam("username"), "password" => $this->getParam("password")]); $user = $this->getUser(); if (!$user instanceof User) { $this->writeLogFile($this->getParam("username"), $e->getMessage()); \Logger::info("Login failed: " . $e); } } if ($user instanceof User && $user->getId() && $user->isActive() && $user->getPassword()) { Tool\Session::useSession(function ($adminSession) use($user) { $adminSession->user = $user; Tool\Session::regenerateId(); }); if ($this->getParam('deeplink')) { $this->redirect('/admin/login/deeplink/?' . $this->getParam('deeplink')); } else { $this->redirect("/admin/?_dc=" . time()); } } else { $this->redirect("/admin/login/?auth_failed=true"); exit; } }
public function updateCurrentUserAction() { $this->protectCSRF(); $user = $this->getUser(); if ($user != null) { if ($user->getId() == $this->getParam("id")) { $values = \Zend_Json::decode($this->getParam("data")); unset($values["name"]); unset($values["id"]); unset($values["admin"]); unset($values["permissions"]); unset($values["roles"]); unset($values["active"]); if (!empty($values["new_password"])) { $oldPasswordCheck = false; if (empty($values["old_password"])) { // if the user want to reset the password, the old password isn't required $oldPasswordCheck = Tool\Session::useSession(function ($adminSession) use($oldPasswordCheck) { if ($adminSession->password_reset) { return true; } return false; }); } else { // the password has to match $checkUser = Tool\Authentication::authenticatePlaintext($user->getName(), $values["old_password"]); if ($checkUser) { $oldPasswordCheck = true; } } if ($oldPasswordCheck && $values["new_password"] == $values["retype_password"]) { $values["password"] = Tool\Authentication::getPasswordHash($user->getName(), $values["new_password"]); } else { $this->_helper->json(["success" => false, "message" => "password_cannot_be_changed"]); } } $user->setValues($values); $user->save(); $this->_helper->json(["success" => true]); } else { \Logger::warn("prevented save current user, because ids do not match. "); $this->_helper->json(false); } } else { $this->_helper->json(false); } }