00001 <?php
00002
00016 import('pages.user.UserHandler');
00017
00018 class RegistrationHandler extends UserHandler {
00022 function RegistrationHandler() {
00023 parent::UserHandler();
00024 }
00025
00031 function register($args, &$request) {
00032 $this->validate($request);
00033 $this->setupTemplate(true);
00034
00035 $press =& $request->getPress();
00036 $site =& $request->getSite();
00037
00038 if ($press != null) {
00039 import('classes.user.form.RegistrationForm');
00040
00041 $existingUser = $request->getUserVar('existingUser') ? 1 : 0;
00042
00043 $regForm = new RegistrationForm($site, $existingUser);
00044
00045 $regForm->initData();
00046 $regForm->display($request);
00047 } else {
00048 $pressDao =& DAORegistry::getDAO('PressDAO');
00049 $presses =& $pressDao->getEnabledPresses();
00050
00051 $templateMgr =& TemplateManager::getManager();
00052 $templateMgr->assign('source', $request->getUserVar('source'));
00053 $templateMgr->assign_by_ref('presses', $presses);
00054 $templateMgr->display('user/registerSite.tpl');
00055 }
00056 }
00057
00063 function registerUser($args, &$request) {
00064 $this->validate($request);
00065 $this->setupTemplate(true);
00066 import('classes.user.form.RegistrationForm');
00067
00068 $existingUser = $request->getUserVar('existingUser') ? 1 : 0;
00069 $site =& $request->getSite();
00070
00071 $regForm = new RegistrationForm($site, $existingUser);
00072 $regForm->readInputData();
00073
00074 if ($regForm->validate()) {
00075 $regForm->execute($request);
00076 if (Config::getVar('email', 'require_validation')) {
00077
00078
00079 $request->redirect(null, 'index');
00080 }
00081
00082 $reason = null;
00083
00084 if (Config::getVar('security', 'implicit_auth')) {
00085 Validation::login('', '', $reason);
00086 } else {
00087 Validation::login($regForm->getData('username'), $regForm->getData('password'), $reason);
00088 }
00089
00090 if ($reason !== null) {
00091 $this->setupTemplate(true);
00092 $templateMgr =& TemplateManager::getManager();
00093 $templateMgr->assign('pageTitle', 'user.login');
00094 $templateMgr->assign('errorMsg', $reason==''?'user.login.accountDisabled':'user.login.accountDisabledWithReason');
00095 $templateMgr->assign('errorParams', array('reason' => $reason));
00096 $templateMgr->assign('backLink', $request->url(null, 'login'));
00097 $templateMgr->assign('backLinkLabel', 'user.login');
00098 return $templateMgr->display('common/error.tpl');
00099 }
00100 if($source = $request->getUserVar('source'))
00101 $request->redirectUrl($source);
00102
00103 else $request->redirect(null, 'login');
00104
00105 } else {
00106 $regForm->display($request);
00107 }
00108 }
00109
00115 function registrationDisabled($args, &$request) {
00116 $this->setupTemplate(true);
00117 $templateMgr =& TemplateManager::getManager();
00118 $templateMgr->assign('pageTitle', 'user.register');
00119 $templateMgr->assign('errorMsg', 'user.register.registrationDisabled');
00120 $templateMgr->assign('backLink', $request->url(null, 'login'));
00121 $templateMgr->assign('backLinkLabel', 'user.login');
00122 $templateMgr->display('common/error.tpl');
00123 }
00124
00129 function activateUser($args, &$request) {
00130 $username = array_shift($args);
00131 $accessKeyCode = array_shift($args);
00132
00133 $press =& $request->getPress();
00134 $userDao =& DAORegistry::getDAO('UserDAO');
00135 $user =& $userDao->getByUsername($username);
00136 if (!$user) $request->redirect(null, 'login');
00137
00138
00139 import('lib.pkp.classes.security.AccessKeyManager');
00140 $accessKeyManager = new AccessKeyManager();
00141 $accessKeyHash = AccessKeyManager::generateKeyHash($accessKeyCode);
00142 $accessKey =& $accessKeyManager->validateKey(
00143 'RegisterContext',
00144 $user->getId(),
00145 $accessKeyHash
00146 );
00147
00148 if ($accessKey != null && $user->getDateValidated() === null) {
00149
00150 $user->setDisabled(false);
00151 $user->setDisabledReason('');
00152 $user->setDateValidated(Core::getCurrentDate());
00153 $userDao->updateObject($user);
00154
00155 $templateMgr =& TemplateManager::getManager();
00156 $templateMgr->assign('message', 'user.login.activated');
00157 return $templateMgr->display('common/message.tpl');
00158 }
00159 $request->redirect(null, 'login');
00160 }
00161
00166 function validate(&$request) {
00167 $press = $request->getPress();
00168 if ($press != null) {
00169 $pressSettingsDao =& DAORegistry::getDAO('PressSettingsDAO');
00170 if ($pressSettingsDao->getSetting($press->getId(), 'disableUserReg')) {
00171
00172 $this->registrationDisabled();
00173 exit;
00174 }
00175 }
00176 }
00177
00178 }
00179
00180 ?>