17 import(
'classes.handler.Handler');
23 function authorize($request, &$args, $roleAssignments) {
24 switch (
$op = $request->getRequestedOp()) {
26 import(
'lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
30 return parent::authorize($request, $args, $roleAssignments);
37 function index($args, $request) {
43 if (
Config::getVar(
'security',
'force_login_ssl') && $request->getProtocol() !=
'https') {
45 $request->redirectSSL();
49 $session = $sessionManager->getUserSession();
52 $templateMgr->assign(array(
53 'loginMessage' => $request->getUserVar(
'loginMessage'),
54 'username' => $session->getSessionVar(
'username'),
55 'remember' => $request->getUserVar(
'remember'),
56 'source' => $request->getUserVar(
'source'),
57 'showRemember' =>
Config::getVar(
'general',
'session_lifetime') > 0,
61 $loginUrl = $request->url(
null,
'login',
'signIn');
65 $templateMgr->assign(
'loginUrl', $loginUrl);
67 $templateMgr->display(
'frontend/pages/userLogin.tpl');
77 if ($context && $request->getUserVar(
'source') ==
'' && array_intersect(
78 array(ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR, ROLE_ID_AUTHOR, ROLE_ID_REVIEWER, ROLE_ID_ASSISTANT),
81 return $request->redirect($context->getPath(),
'dashboard');
84 $request->redirectHome();
94 if (
Config::getVar(
'security',
'force_login_ssl') && $request->getProtocol() !=
'https') {
96 $request->redirectSSL();
99 $user =
Validation::login($request->getUserVar(
'username'), $request->getUserVar(
'password'), $reason, $request->getUserVar(
'remember') ==
null ?
false :
true);
100 if ($user !==
false) {
101 if ($user->getMustChangePassword()) {
104 $request->redirect(
null,
null,
'changePassword', $user->getUsername());
107 $source = $request->getUserVar(
'source');
109 if (preg_match(
'#^/\w#', $source) === 1) {
110 $request->redirectUrl($source);
112 if ($redirectNonSsl) {
113 $request->redirectNonSSL();
121 $session = $sessionManager->getUserSession();
123 $templateMgr->assign(array(
124 'username' => $request->getUserVar(
'username'),
125 'remember' => $request->getUserVar(
'remember'),
126 'source' => $request->getUserVar(
'source'),
127 'showRemember' =>
Config::getVar(
'general',
'session_lifetime') > 0,
128 'error' => $reason===
null?
'user.login.loginError':($reason===
''?
'user.login.accountDisabled':
'user.login.accountDisabledWithReason'),
131 $templateMgr->display(
'frontend/pages/userLogin.tpl');
144 $source = $request->getUserVar(
'source');
145 if (isset($source) && !empty($source)) {
146 $request->redirectUrl($request->getProtocol() .
'://' . $request->getServerHost() . $source,
false);
148 $request->redirect(
null, $request->getRequestedPage());
158 $templateMgr->display(
'frontend/pages/userLostPassword.tpl');
168 $email = $request->getUserVar(
'email');
170 $user = $userDao->getUserByEmail($email);
173 $templateMgr->assign(
'error',
'user.login.lostPassword.invalidUser');
174 $templateMgr->display(
'frontend/pages/userLostPassword.tpl');
178 import(
'lib.pkp.classes.mail.MailTemplate');
180 $site = $request->getSite();
182 $mail->assignParams(array(
183 'url' => $request->url(
null,
'login',
'resetPassword', $user->getUsername(), array(
'confirm' => $hash)),
184 'siteTitle' => $site->getLocalizedTitle()
186 $mail->addRecipient($user->getEmail(), $user->getFullName());
189 $templateMgr->assign(array(
190 'pageTitle' =>
'user.login.resetPassword',
191 'message' =>
'user.login.lostPassword.confirmationSent',
192 'backLink' => $request->url(
null, $request->getRequestedPage()),
193 'backLinkLabel' =>
'user.login',
195 $templateMgr->display(
'frontend/pages/message.tpl');
206 $username = isset($args[0]) ? $args[0] :
null;
208 $confirmHash = $request->getUserVar(
'confirm');
210 if ($username ==
null || ($user = $userDao->getByUsername($username)) ==
null) {
211 $request->redirect(
null,
null,
'lostPassword');
217 $templateMgr->assign(array(
218 'errorMsg' =>
'user.login.lostPassword.invalidHash',
219 'backLink' => $request->url(
null,
null,
'lostPassword'),
220 'backLinkLabel' =>
'user.login.resetPassword',
222 $templateMgr->display(
'frontend/pages/error.tpl');
228 if ($user->getAuthId()) {
230 $auth = $authDao->getPlugin($user->getAuthId());
234 $auth->doSetUserPassword($user->getUsername(), $newPassword);
240 $user->setMustChangePassword(1);
241 $userDao->updateObject($user);
244 $site = $request->getSite();
245 import(
'lib.pkp.classes.mail.MailTemplate');
248 $mail->assignParams(array(
249 'username' => $user->getUsername(),
250 'password' => $newPassword,
251 'siteTitle' => $site->getLocalizedTitle()
253 $mail->addRecipient($user->getEmail(), $user->getFullName());
254 if (!$mail->send()) {
255 import(
'classes.notification.NotificationManager');
257 $notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array(
'contents' => __(
'email.compose.error')));
260 $templateMgr->assign(array(
261 'pageTitle' =>
'user.login.resetPassword',
262 'message' =>
'user.login.lostPassword.passwordSent',
263 'backLink' => $request->url(
null, $request->getRequestedPage()),
264 'backLinkLabel' =>
'user.login',
266 $templateMgr->display(
'frontend/pages/message.tpl');
277 $templateMgr->setupBackendPage();
278 $templateMgr->assign([
279 'pageTitle' => __(
'user.changePassword'),
282 import(
'lib.pkp.classes.user.form.LoginChangePasswordForm');
284 $passwordForm->initData();
285 if (isset($args[0])) {
286 $passwordForm->setData(
'username', $args[0]);
288 $passwordForm->display($request);
297 import(
'lib.pkp.classes.user.form.LoginChangePasswordForm');
300 $passwordForm->readInputData();
302 if ($passwordForm->validate()) {
303 if ($passwordForm->execute()) {
304 $user =
Validation::login($passwordForm->getData(
'username'), $passwordForm->getData(
'password'), $reason);
308 $passwordForm->display($request);
318 if (isset($args[0]) && !empty($args[0])) {
319 $userId = (int)$args[0];
320 $session = $request->getSession();
326 $templateMgr->assign(array(
327 'pageTitle' =>
'manager.people',
328 'errorMsg' =>
'manager.people.noAdministrativeRights',
329 'backLink' => $request->url(
null,
null,
'people',
'all'),
330 'backLinkLabel' =>
'manager.people.allUsers',
332 return $templateMgr->display(
'frontend/pages/error.tpl');
336 $newUser = $userDao->getById($userId);
338 if (isset($newUser) && $session->getUserId() != $newUser->getId()) {
339 $session->setSessionVar(
'signedInAs', $session->getUserId());
340 $session->setSessionVar(
'userId', $userId);
341 $session->setUserId($userId);
342 $session->setSessionVar(
'username', $newUser->getUsername());
347 $request->redirect(
null, $request->getRequestedPage());
357 $session = $request->getSession();
358 $signedInAs = $session->getSessionVar(
'signedInAs');
360 if (isset($signedInAs) && !empty($signedInAs)) {
361 $signedInAs = (int)$signedInAs;
364 $oldUser = $userDao->getById($signedInAs);
366 $session->unsetSessionVar(
'signedInAs');
368 if (isset($oldUser)) {
369 $session->setSessionVar(
'userId', $signedInAs);
370 $session->setUserId($signedInAs);
371 $session->setSessionVar(
'username', $oldUser->getUsername());
383 $requestVars = $request->getUserVars();
384 if (isset($requestVars[
'redirectUrl']) && !empty($requestVars[
'redirectUrl'])) {
385 $request->redirectUrl($requestVars[
'redirectUrl']);
400 $mail->setReplyTo($site->getLocalizedContactEmail(), $site->getLocalizedContactName());
410 if ($request->getContext()) $request->redirect(
null,
'submissions');
411 else $request->redirect(
null,
'user');
419 parent::setupTemplate($request);