Adding md5, none password support.

1.10.x
Julio Montoya 11 years ago
parent 9b443fe553
commit 869e1ccb1a
  1. 10
      app/config/config.yml
  2. 68
      main/admin/user_edit.php
  3. 48
      main/inc/lib/usermanager.lib.php
  4. 2
      src/Chamilo/CoreBundle/Resources/config/services.yml
  5. 23
      src/Chamilo/UserBundle/Security/Encoder.php

@ -199,11 +199,11 @@ doctrine_migrations:
table_name: chamilo_migration_versions
name: Chamilo Migrations
fos_advanced_encoder:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
legacy_encoder:
id: chamilo_core.encoder
#fos_advanced_encoder:
# encoders:
# FOS\UserBundle\Model\UserInterface: sha512
# legacy_encoder:
# id: chamilo_core.encoder
sonata_admin:
title: Chamilo

@ -204,43 +204,13 @@ $form->addElement(
$status,
array(
'id' => 'status_select',
'onchange' => 'javascript: display_drh_list();',
'class' => 'chzn-select'
'class' => 'chzn-select',
'multiple' => 'multiple'
)
);
$display = isset($user_data['status']) && ($user_data['status'] == STUDENT || (isset($_POST['status']) && $_POST['status'] == STUDENT)) ? 'block' : 'none';
/*
$form->addElement('html', '<div id="drh_list" style="display:'.$display.';">');
$drh_select = $form->addElement('select', 'hr_dept_id', get_lang('Drh'), array(), 'id="drh_select"');
$drh_list = UserManager :: get_user_list(array('status' => DRH), api_sort_by_first_name() ? array('firstname', 'lastname') : array('lastname', 'firstname'));
if (count($drh_list) == 0) {
$drh_select->addOption('- '.get_lang('ThereIsNotStillAResponsible', '').' -', 0);
} else {
$drh_select->addOption('- '.get_lang('SelectAResponsible').' -', 0);
}
foreach($drh_list as $drh) {
$drh_select->addOption(api_get_person_name($drh['firstname'], $drh['lastname']), $drh['user_id']);
}
$form->addElement('html', '</div>');
*/
//Language
/*if (api_is_platform_admin()) {
$group = array();
$group[] =$form->createElement('radio', 'platform_admin', null, get_lang('Yes'), 1);
$group[] =$form->createElement('radio', 'platform_admin', null, get_lang('No'), 0);
$user_data['status'] == 1 ? $display = 'block':$display = 'none';
$form->addElement('html', '<div id="id_platform_admin" style="display:'.$display.'">');
$form->addGroup($group, 'admin', get_lang('PlatformAdmin'), null, false);
$form->addElement('html', '</div>');
}*/
//Language
$form->addElement('select_language', 'language', get_lang('Language'));
@ -252,8 +222,17 @@ $form->addGroup($group, 'mail', get_lang('SendMailToNewUser'), '&nbsp;', false);
// Registration Date
$creatorInfo = api_get_user_info($user_data['creator_id']);
$date = sprintf(get_lang('CreatedByXYOnZ'), 'user_information.php?user_id='.$user_data['creator_id'], $creatorInfo['username'], $user_data['registration_date']);
$form->addElement('html', '<div class="control-group"><label class="control-label">'.get_lang('RegistrationDate').'</label><div class="controls">'.$date.'</div></div>');
$date = sprintf(
get_lang('CreatedByXYOnZ'),
'user_information.php?user_id='.$user_data['creator_id'],
$creatorInfo['username'],
$user_data['registration_date']
);
$form->addElement(
'label',
get_lang('RegistrationDate'),
$date
);
// Expiration Date
if (!$user_data['platform_admin']) {
@ -309,15 +288,17 @@ if ($expiration_date == '0000-00-00 00:00:00') {
}
$user = Database::getManager()->getRepository('ChamiloUserBundle:User')->find($user_data['user_id']);
/*$roles = $user->getGroups();
$roles = $user->getGroups();
$role = array();
$roleToArray = array();
if (!empty($roles)) {
$role = current($roles);
$role = $role->getId();
foreach($roles as $role) {
$roleId = $role->getId();
$roleToArray[] = $roleId;
}
}
$user_data['status'] = $role;*/
$user_data['status'] = $roleToArray;
$form->setDefaults($user_data);
$error_drh = false;
@ -352,7 +333,7 @@ if ($form->validate()) {
$email = $user['email'];
$phone = $user['phone'];
$username = $user['username'];
$status = intval($user['status']);
$status = $user['status'];
$send_mail = intval($user['send_mail']);
$reset_password = intval($user['reset_password']);
$hr_dept_id = isset($user['hr_dept_id']) ? intval($user['hr_dept_id']) : null;
@ -366,7 +347,7 @@ if ($form->validate()) {
$active = isset($user['active']) ? intval($user['active']) : 0;
if (api_get_setting('login_is_email') == 'true') {
if (api_get_setting('profile.login_is_email') == 'true') {
$username = $email;
}
@ -393,9 +374,10 @@ if ($form->validate()) {
$reset_password
);
if (api_get_setting('openid_authentication') == 'true' && !empty($user['openid'])) {
/*if (api_get_setting('openid_authentication') == 'true' && !empty
($user['openid'])) {
$up = UserManager::update_openid($user_id, $user['openid']);
}
}*/
// Using the extra field value obj
$extraFieldValues = new ExtraFieldValue('user');

@ -777,13 +777,18 @@ class UserManager
$auth_source = $auth_source;
}
if ($user_id != strval(intval($user_id))) return false;
if ($user_id === false) return false;
if ($user_id != strval(intval($user_id))) {
return false;
}
//Checking the user language
$languages = api_get_languages();
if (!in_array($language, $languages['folder'])) {
$language = api_get_setting('platformLanguage');
if ($user_id === false) {
return false;
}
// Checking the user language.
$languages = api_get_platform_isocodes();
if (!in_array($language, $languages)) {
$language = Container::getTranslator()->getLocale();
}
if (!is_null($password)) {
@ -802,6 +807,8 @@ class UserManager
}
}
$em = Database::getManager();
/** @var Chamilo\UserBundle\Entity\User $user */
@ -818,10 +825,13 @@ class UserManager
if ($user_info['active'] != $active) {
self::change_active_state($user_id, $active);
}
// Adding user
$user->setLastname($lastname)
// Updating user
$user
->setLastname($lastname)
->setFirstname($firstname)
->setPassword($password)
//->setPassword($password)
->setUsername($username)
->setAuthSource($auth_source)
->setLanguage($language)
@ -834,10 +844,26 @@ class UserManager
->setHrDeptId($hr_dept_id)
;
$group = $em->getRepository('ChamiloUserBundle:Group')->find($status);
$user->addGroup($group);
if (!empty($original_password)) {
$user->setPlainPassword($original_password);
}
if (is_array($status)) {
foreach ($status as $groupId) {
$group = $em->getRepository('ChamiloUserBundle:Group')->find($groupId);
$user->addGroup($group);
}
} else {
$group = $em->getRepository('ChamiloUserBundle:Group')->find(
$status
);
$user->addGroup($group);
}
Container::getUserManager()->updateUser($user, true);
if (!empty($email) && $send_email) {
//Container::getMailer()->send()
$recipient_name = api_get_person_name($firstname, $lastname, null, PERSON_NAME_EMAIL_ADDRESS);
$emailsubject = '['.api_get_setting('platform.site_name').'] '.get_lang('YourReg').' '.api_get_setting('platform.site_name');
$sender_name = api_get_person_name(

@ -125,9 +125,9 @@ services:
chamilo_core.encoder:
class: Chamilo\UserBundle\Security\Encoder
arguments: ['%password_encryption%']
# Settings
chamilo_core.settings_schema.admin:
class: Chamilo\CoreBundle\Settings\AdminSettingsSchema
tags:

@ -11,6 +11,15 @@ use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface;
*/
class Encoder implements PasswordEncoderInterface
{
protected $method;
/**
* @param $method
*/
public function __construct($method)
{
$this->method = $method;
}
/**
* @param string $raw
* @param string $salt
@ -18,8 +27,20 @@ class Encoder implements PasswordEncoderInterface
*/
public function encodePassword($raw, $salt)
{
$encrypted = null;
switch ($this->method) {
case 'sha1':
$encrypted = sha1($raw);
break;
case 'md5':
$encrypted = md5($raw);
break;
case 'none':
$encrypted = $raw;
}
// Do not use salt here.
return sha1($raw);
return $encrypted;
}
/**

Loading…
Cancel
Save