diff --git a/docs/AdminUsers.md b/docs/AdminUsers.md index ebc727b26..b47d4076f 100644 --- a/docs/AdminUsers.md +++ b/docs/AdminUsers.md @@ -7,25 +7,180 @@ une base de données SQL. /!\ Il est prévu de développer un connecteur vers LDAP, mais ce n'est pas encore disponible (avis aux volontaires, voir https://www-lipn.univ-paris13.fr/projects/scodoc/ticket/140) -### Base de données utilisateurs -Il est conseillé de placer la table utilisateurs dans une base de données séparées de celle -des notes, afin de pouvoir la partager entre plusieurs UFRs ou départements sans compromettre -la sécurité des données. Dans l'installation standard ([GuideInstallDebianDix](GuideInstallDebianDix.md)), il s'agit de la base -**SCOUSERS**. +### Principes généraux -La table **sco_users** contient: +Depuis ScoDoc 9.0, la liste des utilisateurs est enregistrée dans la base de données unique SCODOC (en production) (voir la partie implémentation pour plus de détails) + +Les entités gérées par scodoc sont : +- Les utilisateurs ; +- les rôles ; +- en liaison avec les départements. + +#### L'entité utilisateur +- possède les propriétés habituelles (nom, prénom, user_name, email) +- peut être associé à un département ou pas (cas d'un administrateur gérant plusieurs départements) +- assure un ou plusieurs rôles + +#### L'entité rôle +Un rôle est le regroupement d'un certain nombre de privilèges. +C'est généralement la combinaison d'un département et d'un type d'utilisation. +Actuellement au nombre de quatre (susceptible d'être étendu) : +- Administrateur +- Secrétariat +- Enseignant +- Observateur +Le type d'utilisation donne certains privilèges (par exemple la faculté de saisir des notes, de justifier des absences, de modifier la définition des programmes, ...) + +_Exemple:_ + +L'utilisateur 'Dupont' est responsable scodoc pour son département 'RT' mais intervient également en enseignement au département GEII. +On pourra lui attribuer les rôles `AdminRT` et `EnsGEII`, ce qui lui permettra : + +- de gérer les utilisateurs du (seul) département RT : +Privilèges associés : `Gérer les utlisateurs (Sco Users Manage)`, `Changer les formations (Sco Change Formation)`, ... +- d'accéder aux vues enseignant pour le département GEII : +Privilèges associés : `Voir les parties pour les enseignants (Sco View Ens)`, `Saisir des absences (Sco Change Absences)`, ... + +Pour une description plus fine des privilèges, voir [ConfigPermissions](ConfigPermissions.md) + +### Opérations et cycle de vie des utilisateurs + +Un compte utilisateur peut être modifié par 3 types d'utilisateurs : + +- L'utilisateur lui-même ; +- un administrateur du département de rattachement de l'utilisateur ; +- le super administrateur. + +Les opérations existantes sont : + +- La création ; +- la demande de renouvellement de mot de passe; +- la désactivation. + +Notes: + +- La suppression d'un utilisateur est impossible (nécessité de garder la trace des anciens historiques) +- Le mécanisme de changement de mot de passe de scodoc 7 (par envoi d'un nouveau mot de passe par mail) a été remplacé par +l'ajout de la mention suivante dans le formulaire de connexion : + +` En cas d'oubli de votre mot de passe cliquez ici pour le réinitialiser. ` + +#### Création d'un utilisateur (par formulaire) + +La création d'un utilisateur peut être faite par un administrateur ou super administrateur. Le lien +`Ajouter un utlisateur`permettant cela se trouve dans la page de gestion des utilisateurs +(accessible par le menu latéral) + +**Le mot de passe** peut être + +- saisie par le créateur de l'utilisateur (il appartient alors au créateur de communiquer ce mot de passe à l'utilisateur final) +- initialisé à une valeur non communiquée, à charge pour l'utilisateur final de finaliser la création +du mot de passe avant d'utiliser son accès (il y est invité par un email qui lui est envoyé) + +**Les options de création (mail)** permettent également de choisir parmi les 3 scenarii suivants : + +- Un message d'accueil l'invitant à initialiser son mot de passe ; +- un message de bienvenue simple ; +- aucun message. + +Une case à cocher `envoyer un mail d'accueil à l'utlisateur` permete de choisir la troisième option (si décochée), +sinon la case suivante `indiquer par mail de changer le mot de passe initial` permet de choisir entre l'option 1 et l'option 2. + +Dans tous les cas les mails seront envoyés avec l'adresse de réponse précidée par la valeur de la variable d'environnement +`SCODOC_MAIL_FROM` (par défaut `no-reply@{serveur_mail}`) + +**Le département d'appartenance** peut être choisi si le créateur est administrateur pour plusieurs départements. Il aura alors le loisir +de sélectionner l'un des départements qu'il administre (liste déroulante). + +#### Création en masse (fichier xlsx) + +Le super-administrateur (et lui seulement) peut également créer des comptes en masse par téléversement d'un fichier au format .xlsx +par le biais du lien `importer des utilisateurs` de la même page de gestion des utilisateurs. + +La page affichée lui permet d'importer un modèle qu'il doit compléter et re-soumettre à scodoc +selon le même schéma que la saisie de note par fichier excel. + +Les colonnes à remplir sont les suivantes : + +- user_name: le nom de connexion de l'utilisateur; (obligatoire, unique dans scodoc) +- nom: le nom de l'utilisateur ; (obligatoire) +- prenom: le prénom de l'utilisateur ; (obligatoire) +- email: l'email de l'utilisateur ; (obligatoire, unique dans scodoc) +- roles: le ou les rôles attribués à l'utilisateur séparés par des virgules (exemple `Admin_RT, Ens_GEII`) +- dept: le département de rattachement de l'utilisateur (acronyme, en lettres capitales). + +_Note_: + +- Tous les utilisateurs sont créés ou aucun +- Un mail est envoyé à chaque utilisateur nouvellement créé. + +#### Changement du mot de passe + +Deux circonstances sont envisagées + +##### Oubli de mot de passe + +Lorsqu'un utilisateur a perdu son mot de passe, il a maintenant la possibilité de retrouver son accès +sans intervention d'un administrateur. Il lui suffit de demander la réinitialisation par le lien situé +sur la page de connexion. Après renseignement de son email (qui est maintenant identifiant dans scodoc), +un mail lui est envoyé. ce mail contient un lien comportant un jeton à durée limitée. Ce lien renvoie +vers la page permettant de redéfinir le mot de passe de l'utilisateur. + +##### Edition du profil + +Si l'utilisateur peut se connecter, il peut éditer son profil (et par là, modifier son email et/ou son mot de passe). +La barre latérale de l'écran principal de scodoc affiche dans le coin supérieur gauche la version courante de scodoc +ainsi que l'identification de l'utlisateur actuel. Un clic sur le nom permet à l'utilsateur +d'éditer son profil. + +#### Activation/désactivation + +Une fois créé, le compte utilisateur conserve son existence. Il peut cependant être rendu inactif: + +- soit à l'expiration de la date de validité spécifiée à la création ou lors d'un modification +- soit directement par un administrateur. + +Quelquesoit la procédure, le compte existe encore et conserve son email (il n'est donc pas possible de créer +un nouveau compte associé au même email). Il est simplement impossible de se connecter ou de modifier +le profil de ce compte par l'utlisateur lui-même. + +### Implémentation (pour les développeurs) + +Le graphe d'état ci-dessous explilcite les différents états que peux prendre un compte utilisateur +en fonction des opérations qu'il subit. + +On notera: + +1. Que la création (1) peut le placer initialement dans deux états différents selon le mode de création choisi. +2. Que l'on peut demander le renouvellement du mot de passe plusieurs fois même sans avoir complété la procédure +3. Que les états `créé`et `créé + ticket`permettent la connexion (sous réserve de la connaisssance du mot de passe). + + + + +**SCODOC**. + +La table **user** contient: + +| **Colonne** | **Type** | Contenu | Modifié par | +|-------------------|-----------------------------|--------------------------------------------------------------|----------------| +| id | integer | identifiant interne unique | 1 | +| user_name | character varying(64) | nom de login | 1 | +| email | character varying(120) | adresse mail (unique dans la base) | 1, 6 | +|nom | character varying(64) | | 1, 6 | +|prenom | character varying(64) | | 1, 6 | +|dept | character varying(32) | département de rattachement (identifiant numérique) | 1, 6 | +|active | boolean | | 1, 7, 9 | +|password_hash | character varying(128) | hash password | 1, 6 | +|password_scodoc7 | character varying(42) | deprecated (utilisé lors de la migration scodoc7 > scodoc9) | 1, 2, 4, 5, 6 | +|last_seen | timestamp without time zone | date de dernière connexion | 1, A | +|date_modif_passwd | timestamp without time zone | | 1, 2, 4, 5, 6 | +|date_created | timestamp without time zone | | 1 | +|date_expiration | timestamp without time zone | | 1 | +|passwd_temp | boolean | deprecated | | +|token | text | dernier token émis (changement de mot de passe) | 1a, 3 | +|token_expiration | timestamp without time zone | date d'expiration du dernier token émis | 1a, 3 | - **Colonne** | **Type** || Contenu - ---------- | ----- | ----- - user_id | text | identifiant interne unique - user_name | text | nom de login - passwd | text | hash password - roles | text | liste des noms de rôles, séparés par des virgules -date_modif_passwd | date | - nom | text | - prenom | text | - email | text | adresse mail - dept | text | département de rattachement (exemple "RT") /!\ encodage `utf-8`, sauf si vous avez modifié l'installation. diff --git a/docs/ScoDocApogee.md b/docs/ScoDocApogee.md index 4577642d1..94405f76d 100644 --- a/docs/ScoDocApogee.md +++ b/docs/ScoDocApogee.md @@ -27,8 +27,6 @@ Les codes Apogée des éléments constitutifs (UE et modules de ScoDoc) doivent ![SaisieCodeApoModule.png](screens/SaisieCodeApoModule.png) -De plus, il est possible d'associer plusieurs code Apogée à une UE. Ce peut être nécessaire quand les code des UE ne sont pas les même selon l'étape (par exemple la même UE étiquetée différement pour les formations initiales et les formations continues). Dans ce cas on saisi la liste des codes Apogée séparés par une virgule. - Par ailleurs, chaque semestre est associé à une étape Apogée (VET), et, en option, à un code d'élément annuel et un code d'élément semestre. Pour le deuxième semestre 5S2) du DUT R&T Villetaneuse, cela donne: * Code étape (VET): `V1RT` (l'étape est annuelle) diff --git a/docs/fig/GrapheUser.odg b/docs/fig/GrapheUser.odg new file mode 100644 index 000000000..8bf9a57c3 Binary files /dev/null and b/docs/fig/GrapheUser.odg differ diff --git a/docs/fig/GrapheUser.png b/docs/fig/GrapheUser.png new file mode 100644 index 000000000..f1c2d81f6 Binary files /dev/null and b/docs/fig/GrapheUser.png differ