1.10.13 Login, connexion persistante
This commit is contained in:
parent
ef5de018b0
commit
d98e235dfc
@ -408,8 +408,8 @@ class helper
|
|||||||
*/
|
*/
|
||||||
public static function deleteCookie($cookieKey)
|
public static function deleteCookie($cookieKey)
|
||||||
{
|
{
|
||||||
unset($_COOKIE[$cookieKey]);
|
|
||||||
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
|
setcookie($cookieKey, '', time() - 3600, helper::baseUrl(false, false), '', false, true);
|
||||||
|
unset($_COOKIE[$cookieKey]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,7 +51,7 @@ class common
|
|||||||
const ACCESS_TIMER = 1800;
|
const ACCESS_TIMER = 1800;
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
const ZWII_VERSION = '1.10.12';
|
const ZWII_VERSION = '1.10.13';
|
||||||
|
|
||||||
// URL autoupdate
|
// URL autoupdate
|
||||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
||||||
|
@ -230,143 +230,143 @@ class user extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Désinscription de tous les utilisateurs
|
* Désinscription de tous les utilisateurs
|
||||||
* Les désinscriptions ne suppriment pas les historiques
|
* Les désinscriptions ne suppriment pas les historiques
|
||||||
*/
|
*/
|
||||||
public function usersDelete()
|
public function usersDelete()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Contenu sélectionné
|
// Contenu sélectionné
|
||||||
$courseId = $this->getUrl(2);
|
$courseId = $this->getUrl(2);
|
||||||
|
|
||||||
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||||
if (
|
if (
|
||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||||
) {
|
) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'access' => false
|
'access' => false
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inscription des utilisateurs cochés
|
// Inscription des utilisateurs cochés
|
||||||
if (
|
if (
|
||||||
isset($_POST['usersDeleteSubmit'])
|
isset($_POST['usersDeleteSubmit'])
|
||||||
) {
|
) {
|
||||||
foreach ($_POST as $keyPost => $valuePost) {
|
foreach ($_POST as $keyPost => $valuePost) {
|
||||||
// Exclure les variables post qui ne sont pas des userId et ne traiter que les non inscrits
|
// Exclure les variables post qui ne sont pas des userId et ne traiter que les non inscrits
|
||||||
if (
|
if (
|
||||||
$this->getData(['user', $keyPost]) !== null
|
$this->getData(['user', $keyPost]) !== null
|
||||||
&& $this->getData(['user', $keyPost]) !== null
|
&& $this->getData(['user', $keyPost]) !== null
|
||||||
) {
|
) {
|
||||||
$this->deleteData(['user', $keyPost]);
|
$this->deleteData(['user', $keyPost]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Liste des groupes et des profils
|
// Liste des groupes et des profils
|
||||||
$usersGroups = $this->getData(['profil']);
|
$usersGroups = $this->getData(['profil']);
|
||||||
|
|
||||||
foreach ($usersGroups as $groupId => $groupValue) {
|
foreach ($usersGroups as $groupId => $groupValue) {
|
||||||
switch ($groupId) {
|
switch ($groupId) {
|
||||||
case "-1":
|
case "-1":
|
||||||
case "0":
|
case "0":
|
||||||
break;
|
break;
|
||||||
case "3":
|
case "3":
|
||||||
self::$usersGroups['30'] = 'Administrateur';
|
self::$usersGroups['30'] = 'Administrateur';
|
||||||
$profils['30'] = 0;
|
$profils['30'] = 0;
|
||||||
break;
|
break;
|
||||||
case "1":
|
case "1":
|
||||||
case "2":
|
case "2":
|
||||||
foreach ($groupValue as $profilId => $profilValue) {
|
foreach ($groupValue as $profilId => $profilValue) {
|
||||||
if ($profilId) {
|
if ($profilId) {
|
||||||
self::$usersGroups[$groupId . $profilId] = sprintf(helper::translate('Groupe %s - Profil %s'), self::$groupPublics[$groupId], $profilValue['name']);
|
self::$usersGroups[$groupId . $profilId] = sprintf(helper::translate('Groupe %s - Profil %s'), self::$groupPublics[$groupId], $profilValue['name']);
|
||||||
$profils[$groupId . $profilId] = 0;
|
$profils[$groupId . $profilId] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Liste alphabétique
|
// Liste alphabétique
|
||||||
self::$alphabet = range('A', 'Z');
|
self::$alphabet = range('A', 'Z');
|
||||||
$alphabet = range('A', 'Z');
|
$alphabet = range('A', 'Z');
|
||||||
self::$alphabet = array_combine($alphabet, self::$alphabet);
|
self::$alphabet = array_combine($alphabet, self::$alphabet);
|
||||||
self::$alphabet = array_merge(['all' => 'Tout'], self::$alphabet);
|
self::$alphabet = array_merge(['all' => 'Tout'], self::$alphabet);
|
||||||
|
|
||||||
// Liste des inscrits dans le contenu sélectionné.
|
// Liste des inscrits dans le contenu sélectionné.
|
||||||
$users = $this->getData(['user']);
|
$users = $this->getData(['user']);
|
||||||
if (is_array($users)) {
|
if (is_array($users)) {
|
||||||
// Tri du tableau par défaut par $userId
|
// Tri du tableau par défaut par $userId
|
||||||
ksort($users);
|
ksort($users);
|
||||||
foreach ($users as $userId => $userValue) {
|
foreach ($users as $userId => $userValue) {
|
||||||
|
|
||||||
// Compte les rôles
|
// Compte les rôles
|
||||||
if (isset($profils[$this->getData(['user', $userId, 'group']) . $this->getData(['user', $userId, 'profil'])])) {
|
if (isset($profils[$this->getData(['user', $userId, 'group']) . $this->getData(['user', $userId, 'profil'])])) {
|
||||||
$profils[$this->getData(['user', $userId, 'group']) . $this->getData(['user', $userId, 'profil'])]++;
|
$profils[$this->getData(['user', $userId, 'group']) . $this->getData(['user', $userId, 'profil'])]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filtres
|
// Filtres
|
||||||
if (
|
if (
|
||||||
isset($_POST['usersFilterGroup'])
|
isset($_POST['usersFilterGroup'])
|
||||||
|| isset($_POST['usersFilterFirstName'])
|
|| isset($_POST['usersFilterFirstName'])
|
||||||
|| isset($_POST['usersFilterLastName'])
|
|| isset($_POST['usersFilterLastName'])
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// Groupe et profils
|
// Groupe et profils
|
||||||
$group = (string) $this->getData(['user', $userId, 'group']);
|
$group = (string) $this->getData(['user', $userId, 'group']);
|
||||||
$profil = (string) $this->getData(['user', $userId, 'profil']);
|
$profil = (string) $this->getData(['user', $userId, 'profil']);
|
||||||
$firstName = $this->getData(['user', $userId, 'firstname']);
|
$firstName = $this->getData(['user', $userId, 'firstname']);
|
||||||
$lastName = $this->getData(['user', $userId, 'lastname']);
|
$lastName = $this->getData(['user', $userId, 'lastname']);
|
||||||
if (
|
if (
|
||||||
$this->getInput('usersFilterGroup', helper::FILTER_INT) > 0
|
$this->getInput('usersFilterGroup', helper::FILTER_INT) > 0
|
||||||
&& $this->getInput('usersFilterGroup', helper::FILTER_STRING_SHORT) !== $group . $profil
|
&& $this->getInput('usersFilterGroup', helper::FILTER_STRING_SHORT) !== $group . $profil
|
||||||
)
|
)
|
||||||
continue;
|
continue;
|
||||||
// Première lettre du prénom
|
// Première lettre du prénom
|
||||||
if (
|
if (
|
||||||
$this->getInput('usersFilterFirstName', helper::FILTER_STRING_SHORT) !== 'all'
|
$this->getInput('usersFilterFirstName', helper::FILTER_STRING_SHORT) !== 'all'
|
||||||
&& $this->getInput('usersFilterFirstName', helper::FILTER_STRING_SHORT) !== strtoupper(substr($firstName, 0, 1))
|
&& $this->getInput('usersFilterFirstName', helper::FILTER_STRING_SHORT) !== strtoupper(substr($firstName, 0, 1))
|
||||||
)
|
)
|
||||||
continue;
|
continue;
|
||||||
// Première lettre du nom
|
// Première lettre du nom
|
||||||
if (
|
if (
|
||||||
$this->getInput('usersFilterLastName', helper::FILTER_STRING_SHORT) !== 'all'
|
$this->getInput('usersFilterLastName', helper::FILTER_STRING_SHORT) !== 'all'
|
||||||
&& $this->getInput('usersFilterLastName', helper::FILTER_STRING_SHORT) !== strtoupper(substr($lastName, 0, 1))
|
&& $this->getInput('usersFilterLastName', helper::FILTER_STRING_SHORT) !== strtoupper(substr($lastName, 0, 1))
|
||||||
)
|
)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construction du tableau
|
// Construction du tableau
|
||||||
self::$users[] = [
|
self::$users[] = [
|
||||||
template::checkbox($userId, true, '', ['class' => 'checkboxSelect']),
|
template::checkbox($userId, true, '', ['class' => 'checkboxSelect']),
|
||||||
$userId,
|
$userId,
|
||||||
$this->getData(['user', $userId, 'firstname']),
|
$this->getData(['user', $userId, 'firstname']),
|
||||||
$this->getData(['user', $userId, 'lastname']),
|
$this->getData(['user', $userId, 'lastname']),
|
||||||
$this->getData(['user', $userId, 'tags']),
|
$this->getData(['user', $userId, 'tags']),
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ajoute les effectifs aux profils du sélecteur
|
// Ajoute les effectifs aux profils du sélecteur
|
||||||
foreach (self::$usersGroups as $groupId => $groupValue) {
|
foreach (self::$usersGroups as $groupId => $groupValue) {
|
||||||
if ($groupId === 'all') {
|
if ($groupId === 'all') {
|
||||||
self::$usersGroups['all'] = self::$usersGroups['all'] . ' (' . array_sum($profils) . ')';
|
self::$usersGroups['all'] = self::$usersGroups['all'] . ' (' . array_sum($profils) . ')';
|
||||||
} else {
|
} else {
|
||||||
self::$usersGroups[$groupId] = self::$usersGroups[$groupId] . ' (' . $profils[$groupId] . ')';
|
self::$usersGroups[$groupId] = self::$usersGroups[$groupId] . ' (' . $profils[$groupId] . ')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => helper::translate('Désincription en masse'),
|
'title' => helper::translate('Désincription en masse'),
|
||||||
'view' => 'usersDelete',
|
'view' => 'usersDelete',
|
||||||
'vendor' => [
|
'vendor' => [
|
||||||
'datatables'
|
'datatables'
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -852,27 +852,27 @@ class user extends common
|
|||||||
'tutor' => $this->getInput('profilEditCourseTutor', helper::FILTER_BOOLEAN),
|
'tutor' => $this->getInput('profilEditCourseTutor', helper::FILTER_BOOLEAN),
|
||||||
// Droit d'accéder à la fenêtre de gestion pour tous les éditeurs et plus
|
// Droit d'accéder à la fenêtre de gestion pour tous les éditeurs et plus
|
||||||
'index' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN)
|
'index' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserExport', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserExport', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserAdd', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserAdd', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUsersAdd', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUsersAdd', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserDelete', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserDelete', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUsersDelete', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUsersDelete', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseEdit', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseEdit', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseBackup', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseBackup', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseRestore', helper::FILTER_BOOLEAN),
|
|| $this->getInput('profilEditCourseRestore', helper::FILTER_BOOLEAN),
|
||||||
|
|
||||||
'manage' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN)
|
'manage' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserExport', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserExport', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserAdd', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserAdd', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUsersAdd', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUsersAdd', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUserDelete', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUserDelete', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseUsersDelete', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseUsersDelete', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseEdit', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseEdit', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseBackup', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseBackup', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseRestore', helper::FILTER_BOOLEAN)
|
|| $this->getInput('profilEditCourseRestore', helper::FILTER_BOOLEAN)
|
||||||
|| $this->getInput('profilEditCourseReset', helper::FILTER_BOOLEAN),
|
|| $this->getInput('profilEditCourseReset', helper::FILTER_BOOLEAN),
|
||||||
// Droits spécifiques
|
// Droits spécifiques
|
||||||
'users' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN),
|
'users' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN),
|
||||||
'userHistory' => $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN),
|
'userHistory' => $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN),
|
||||||
@ -1125,12 +1125,12 @@ class user extends common
|
|||||||
|
|
||||||
// Exclure les espaces des cours
|
// Exclure les espaces des cours
|
||||||
/*
|
/*
|
||||||
foreach (array_keys($this->getData(['course'])) as $courseId) {
|
foreach (array_keys($this->getData(['course'])) as $courseId) {
|
||||||
self::$sharePath = array_filter(self::$sharePath, function ($key) use ($courseId) {
|
self::$sharePath = array_filter(self::$sharePath, function ($key) use ($courseId) {
|
||||||
return strpos($key, $courseId) === false;
|
return strpos($key, $courseId) === false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
self::$sharePath = array_flip(self::$sharePath);
|
self::$sharePath = array_flip(self::$sharePath);
|
||||||
self::$sharePath = array_merge(['none' => 'Aucun Accès'], self::$sharePath);
|
self::$sharePath = array_merge(['none' => 'Aucun Accès'], self::$sharePath);
|
||||||
@ -1281,10 +1281,22 @@ class user extends common
|
|||||||
// RAZ
|
// RAZ
|
||||||
$this->setData(['user', $userId, 'connectFail', 0]);
|
$this->setData(['user', $userId, 'connectFail', 0]);
|
||||||
$this->setData(['user', $userId, 'connectTimeout', 0]);
|
$this->setData(['user', $userId, 'connectTimeout', 0]);
|
||||||
// Expiration
|
|
||||||
|
// Validité du cookie
|
||||||
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? strtotime("+1 year") : 0;
|
$expire = $this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN) === true ? strtotime("+1 year") : 0;
|
||||||
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
switch ($this->getInput('userLoginLongTime', helper::FILTER_BOOLEAN)) {
|
||||||
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
case false:
|
||||||
|
// Cookie de session
|
||||||
|
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
|
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false), '', helper::isHttps(), true);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Cookie persistant
|
||||||
|
setcookie('ZWII_USER_ID', $userId, $expire, helper::baseUrl(false, false));
|
||||||
|
setcookie('ZWII_USER_PASSWORD', $this->getData(['user', $userId, 'password']), $expire, helper::baseUrl(false, false));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Accès multiples avec le même compte
|
// Accès multiples avec le même compte
|
||||||
$this->setData(['user', $userId, 'accessCsrf', $_SESSION['csrf']]);
|
$this->setData(['user', $userId, 'accessCsrf', $_SESSION['csrf']]);
|
||||||
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur
|
// Valeurs en sortie lorsque le site est en maintenance et que l'utilisateur n'est pas administrateur
|
||||||
|
Loading…
x
Reference in New Issue
Block a user