Open Journal Systems  3.3.0
RegistrationHandler.inc.php
1 <?php
2 
17 import('pages.user.UserHandler');
18 
20 
24  function initialize($request) {
25  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON);
26  parent::initialize($request);
27  }
28 
35  function register($args, $request) {
36  if (Config::getVar('security', 'force_login_ssl') && $request->getProtocol() != 'https') {
37  // Force SSL connections for registration
38  $request->redirectSSL();
39  }
40 
41  // If the user is logged in, show them the registration success page
42  if (Validation::isLoggedIn()) {
43  $this->setupTemplate($request);
44  $templateMgr = TemplateManager::getManager($request);
45  $templateMgr->assign('pageTitle', 'user.login.registrationComplete');
46  return $templateMgr->display('frontend/pages/userRegisterComplete.tpl');
47  }
48 
49  $this->validate(null, $request);
50  $this->setupTemplate($request);
51 
52  import('lib.pkp.classes.user.form.RegistrationForm');
53  $regForm = new RegistrationForm($request->getSite());
54 
55  // Initial GET request to register page
56  if (!$request->isPost()) {
57  $regForm->initData();
58  return $regForm->display($request);
59  }
60 
61  // Form submitted
62  $regForm->readInputData();
63  if (!$regForm->validate()) {
64  return $regForm->display($request);
65  }
66 
67  $regForm->execute();
68 
69  // Inform the user of the email validation process. This must be run
70  // before the disabled account check to ensure new users don't see the
71  // disabled account message.
72  if (Config::getVar('email', 'require_validation')) {
73  $this->setupTemplate($request);
74  $templateMgr = TemplateManager::getManager($request);
75  $templateMgr->assign(array(
76  'requireValidation' => true,
77  'pageTitle' => 'user.login.registrationPendingValidation',
78  'messageTranslated' => __('user.login.accountNotValidated', array('email' => $regForm->getData('email'))),
79  ));
80  return $templateMgr->fetch('frontend/pages/message.tpl');
81  }
82 
83  $reason = null;
84  if (Config::getVar('security', 'implicit_auth')) {
85  Validation::login('', '', $reason);
86  } else {
87  Validation::login($regForm->getData('username'), $regForm->getData('password'), $reason);
88  }
89 
90  if ($reason !== null) {
91  $this->setupTemplate($request);
92  $templateMgr = TemplateManager::getManager($request);
93  $templateMgr->assign(array(
94  'pageTitle' => 'user.login',
95  'errorMsg' => $reason==''?'user.login.accountDisabled':'user.login.accountDisabledWithReason',
96  'errorParams' => array('reason' => $reason),
97  'backLink' => $request->url(null, 'login'),
98  'backLinkLabel' => 'user.login',
99  ));
100  return $templateMgr->fetch('frontend/pages/error.tpl');
101  }
102 
103  $source = $request->getUserVar('source');
104  if (preg_match('#^/\w#', $source) === 1) {
105  return $request->redirectUrl($source);
106  } else {
107  // Make a new request to update cookie details after login
108  $request->redirect(null, 'user', 'register');
109  }
110  }
111 
118  function registerUser($args, $request) {
119  $this->register($args, $request);
120  }
121 
127  function activateUser($args, $request) {
128  $username = array_shift($args);
129  $accessKeyCode = array_shift($args);
130  AppLocale::requireComponents(LOCALE_COMPONENT_PKP_USER);
131  $userDao = DAORegistry::getDAO('UserDAO'); /* @var $userDao UserDAO */
132  $user = $userDao->getByUsername($username);
133  if (!$user) $request->redirect(null, 'login');
134 
135  // Checks user and token
136  import('lib.pkp.classes.security.AccessKeyManager');
137  $accessKeyManager = new AccessKeyManager();
138  $accessKeyHash = AccessKeyManager::generateKeyHash($accessKeyCode);
139  $accessKey = $accessKeyManager->validateKey(
140  'RegisterContext',
141  $user->getId(),
142  $accessKeyHash
143  );
144 
145  if ($accessKey != null && $user->getDateValidated() === null) {
146  // Activate user
147  $user->setDisabled(false);
148  $user->setDisabledReason('');
149  $user->setDateValidated(Core::getCurrentDate());
150  $userDao->updateObject($user);
151 
152  $templateMgr = TemplateManager::getManager($request);
153  $templateMgr->assign('message', 'user.login.activated');
154  return $templateMgr->display('frontend/pages/message.tpl');
155  }
156  $request->redirect(null, 'login');
157  }
158 
162  function validate($requiredContexts = null, $request = null) {
163  $context = $request->getContext();
164  $disableUserReg = false;
165  if(!$context) {
166  $contextDao = Application::getContextDAO();
167  $contexts = $contextDao->getAll(true)->toArray();
168  $contextsForRegistration = array();
169  foreach($contexts as $context) {
170  if (!$context->getData('disableUserReg')) {
171  $contextsForRegistration[] = $context;
172  }
173  }
174  if (empty($contextsForRegistration)) {
175  $disableUserReg = true;
176  }
177  } elseif($context->getData('disableUserReg')) {
178  $disableUserReg = true;
179  }
180 
181  if ($disableUserReg) {
182  $this->setupTemplate($request);
183  $templateMgr = TemplateManager::getManager($request);
184  $templateMgr->assign(array(
185  'pageTitle' => 'user.register',
186  'errorMsg' => 'user.register.registrationDisabled',
187  'backLink' => $request->url(null, 'login'),
188  'backLinkLabel' => 'user.login',
189  ));
190  $templateMgr->display('frontend/pages/error.tpl');
191  exit;
192  }
193  }
194 }
195 
196 
Application\getContextDAO
static getContextDAO()
Definition: Application.inc.php:137
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
Validation\isLoggedIn
static isLoggedIn()
Definition: Validation.inc.php:376
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Validation\login
static login($username, $password, &$reason, $remember=false)
Definition: Validation.inc.php:26
AccessKeyManager
Class defining operations for AccessKey management.
Definition: AccessKeyManager.inc.php:18
UserHandler\setupTemplate
setupTemplate($request=null)
Definition: pages/user/UserHandler.inc.php:89
RegistrationHandler\initialize
initialize($request)
Definition: RegistrationHandler.inc.php:24
RegistrationForm
Form for user registration.
Definition: RegistrationForm.inc.php:21
RegistrationHandler\validate
validate($requiredContexts=null, $request=null)
Definition: RegistrationHandler.inc.php:162
RegistrationHandler
Handle requests for user registration.
Definition: RegistrationHandler.inc.php:19
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
UserHandler
Handle API requests for user operations.
Definition: api/v1/users/UserHandler.inc.php:19
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
RegistrationHandler\registerUser
registerUser($args, $request)
Definition: RegistrationHandler.inc.php:118
RegistrationHandler\activateUser
activateUser($args, $request)
Definition: RegistrationHandler.inc.php:127
AccessKeyManager\generateKeyHash
generateKeyHash($key)
Definition: AccessKeyManager.inc.php:35
Core\getCurrentDate
static getCurrentDate($ts=null)
Definition: Core.inc.php:63