From 175b334db57442b373c1e34433ec77a5adece654 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 18 Sep 2013 19:29:58 +0200 Subject: [PATCH] Changing session registering of the user during registration. --- main/auth/inscription.php | 93 +++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/main/auth/inscription.php b/main/auth/inscription.php index 740787cdc0..5566c4418c 100644 --- a/main/auth/inscription.php +++ b/main/auth/inscription.php @@ -7,13 +7,15 @@ */ use \ChamiloSession as Session; +use Symfony\Component\EventDispatcher\EventDispatcher, + Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken, + Symfony\Component\Security\Http\Event\InteractiveLoginEvent; $language_file = array('registration', 'admin'); if (!empty($_POST['language'])) { //quick hack to adapt the registration form result to the selected registration language $_GET['language'] = $_POST['language']; } -require_once '../inc/global.inc.php'; if (api_get_setting('allow_registration') === 'false') { api_not_allowed(true); @@ -79,14 +81,12 @@ if ($user_already_registered_show_terms == false) { if (api_get_setting('openid_authentication') == 'true') { $form->addElement('text', 'openid', get_lang('OpenIDURL'), array('size' => 40)); } - // Enabled by Ivan Tcholakov, 06-APR-2009. CONFVAL_ASK_FOR_OFFICIAL_CODE = false by default. - // OFFICIAL CODE - //if (CONFVAL_ASK_FOR_OFFICIAL_CODE) { - $form->addElement('text', 'official_code', get_lang('OfficialCode'), array('size' => 40)); - if (api_get_setting('registration', 'officialcode') == 'true') { - $form->addRule('official_code', get_lang('ThisFieldIsRequired'), 'required'); - } - //} + + $form->addElement('text', 'official_code', get_lang('OfficialCode'), array('size' => 40)); + if (api_get_setting('registration', 'officialcode') == 'true') { + $form->addRule('official_code', get_lang('ThisFieldIsRequired'), 'required'); + } + // USERNAME if (api_get_setting('login_is_email') != 'true') { @@ -120,13 +120,6 @@ if ($user_already_registered_show_terms == false) { $form->addRule('phone', get_lang('ThisFieldIsRequired'), 'required'); } - // PICTURE - /*if (api_get_setting('profile', 'picture') == 'true') { - $form->addElement('file', 'picture', get_lang('AddPicture')); - $allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif'); - $form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types); - }*/ - // LANGUAGE if (api_get_setting('registration', 'language') == 'true') { $form->addElement('select_language', 'language', get_lang('Language')); @@ -228,7 +221,7 @@ if (!CustomPages::enabled()) { } } - $tool_name = get_lang('Registration', null, (!empty($_POST['language'])?$_POST['language']:$_user['language'])); + $tool_name = get_lang('Registration'); if (api_get_setting('allow_terms_conditions') == 'true' && $user_already_registered_show_terms) { $tool_name = get_lang('TermsAndConditions'); @@ -329,13 +322,31 @@ if ($form->validate()) { Session::write('is_platformAdmin', $is_admin); } else { // Creates a new user - $user_id = UserManager::create_user($values['firstname'], $values['lastname'], $values['status'], $values['email'], $values['username'], $values['pass1'], $values['official_code'], $values['language'], $values['phone'], $picture_uri, PLATFORM_AUTH_SOURCE, null, 1, 0, null, null, true); + $user_id = UserManager::create_user( + $values['firstname'], + $values['lastname'], + $values['status'], + $values['email'], + $values['username'], + $values['pass1'], + $values['official_code'], + $values['language'], + $values['phone'], + null, + PLATFORM_AUTH_SOURCE, + null, + 1, + 0, + null, + null, + true + ); // Register extra fields $extras = array(); foreach ($values as $key => $value) { if (substr($key, 0, 6) == 'extra_') { //an extra field - $extras[substr($key,6)] = $value; + $extras[substr($key, 6)] = $value; } } @@ -390,19 +401,19 @@ if ($form->validate()) { $emailsubject = get_lang('ApprovalForNewAccount',null,$values['language']).': '.$values['username']; $emailbody = get_lang('ApprovalForNewAccount',null,$values['language'])."\n"; - $emailbody .= get_lang('UserName',null,$values['language']).': '.$values['username']."\n"; + $emailbody .= get_lang('UserName',null, $values['language']).': '.$values['username']."\n"; if (api_is_western_name_order()) { - $emailbody .= get_lang('FirstName',null,$values['language']).': '.$values['firstname']."\n"; - $emailbody .= get_lang('LastName',null,$values['language']).': '.$values['lastname']."\n"; + $emailbody .= get_lang('FirstName',null, $values['language']).': '.$values['firstname']."\n"; + $emailbody .= get_lang('LastName',null, $values['language']).': '.$values['lastname']."\n"; } else { - $emailbody .= get_lang('LastName',null,$values['language']).': '.$values['lastname']."\n"; - $emailbody .= get_lang('FirstName',null,$values['language']).': '.$values['firstname']."\n"; + $emailbody .= get_lang('LastName',null, $values['language']).': '.$values['lastname']."\n"; + $emailbody .= get_lang('FirstName',null, $values['language']).': '.$values['firstname']."\n"; } - $emailbody .= get_lang('Email',null,$values['language']).': '.$values['email']."\n"; - $emailbody .= get_lang('Status',null,$values['language']).': '.$values['status']."\n\n"; + $emailbody .= get_lang('Email',null, $values['language']).': '.$values['email']."\n"; + $emailbody .= get_lang('Status',null, $values['language']).': '.$values['status']."\n\n"; $url_edit = Display::url(api_get_path(WEB_CODE_PATH).'admin/user_edit.php?user_id='.$user_id, api_get_path(WEB_CODE_PATH).'admin/user_edit.php?user_id='.$user_id); - $emailbody .= get_lang('ManageUser',null,$values['language']).": $url_edit"; + $emailbody .= get_lang('ManageUser',null, $values['language']).": $url_edit"; $admins = UserManager::get_all_administrators(); foreach ($admins as $admin_info) { @@ -436,24 +447,20 @@ if ($form->validate()) { $values = api_get_user_info($user_id); } - /* SESSION REGISTERING */ - /* @todo move this in a function */ - $_user['firstName'] = stripslashes($values['firstname']); - $_user['lastName'] = stripslashes($values['lastname']); - $_user['mail'] = $values['email']; - $_user['language'] = $values['language']; - $_user['user_id'] = $user_id; - $is_allowedCreateCourse = $values['status'] == 1; + // Symfony way to login as a user + $user = $app['orm.em']->getRepository('Entity\User')->find($user_id); + + // Here, "secured" is the name of the firewall in your security.yml + $token = new UsernamePasswordToken($user, $user->getPassword(), 'secured', $user->getRoles()); + $app['security']->setToken($token); + $request = $app['request']; - Session::write('_user', $_user); - Session::write('is_allowedCreateCourse', $is_allowedCreateCourse); + // Fire the login event + // Logging the user in above the way we do it doesn't do this automatically + $event = new InteractiveLoginEvent($request, $token); + $app['dispatcher']->dispatch("security.interactive_login", $event); - //stats - event_login(); - // last user login date is now - $user_last_login_datetime = 0; // used as a unix timestamp it will correspond to : 1 1 1970 - Session::write('user_last_login_datetime', $user_last_login_datetime); $recipient_name = api_get_person_name($values['firstname'], $values['lastname']); $text_after_registration = '

'.get_lang('Dear', null, $_user['language']).' '.stripslashes(Security::remove_XSS($recipient_name)).',

'.get_lang('PersonalSettings',null,$_user['language']).".

"; @@ -470,7 +477,7 @@ if ($form->validate()) { $text_after_registration.= '

'.get_lang('MailHasBeenSent',null,$_user['language']).'.

'; } - if ($is_allowedCreateCourse) { + if (api_is_allowed_to_create_course()) { $form_data['message'] = '

'. get_lang('NowGoCreateYourCourse',null,$_user['language']). "

"; $form_data['action'] = '../create_course/add_course.php';