|
@@ -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 = '<p>'.get_lang('Dear', null, $_user['language']).' '.stripslashes(Security::remove_XSS($recipient_name)).',<br /><br />'.get_lang('PersonalSettings',null,$_user['language']).".</p>";
|
|
@@ -470,7 +477,7 @@ if ($form->validate()) {
|
|
|
$text_after_registration.= '<p>'.get_lang('MailHasBeenSent',null,$_user['language']).'.</p>';
|
|
|
}
|
|
|
|
|
|
- if ($is_allowedCreateCourse) {
|
|
|
+ if (api_is_allowed_to_create_course()) {
|
|
|
$form_data['message'] = '<p>'. get_lang('NowGoCreateYourCourse',null,$_user['language']). "</p>";
|
|
|
$form_data['action'] = '../create_course/add_course.php';
|
|
|
|