platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 2011
-
2 mai 2006 à 10:53
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 2011
-
3 mai 2006 à 08:12
Bonjour a tous :)
Je dois actuellement réaliser un outil devant pouvoir être utilisé par
plusieurs utilisateurs, pour un Lycée, donc par exemple élèves, profs,
CPE, secrétariat, .... L'architecture est organisée autour de
différents modules, par exemple gestion des notes, des absences, des
remplacements des profs, etc...
Mon souci est que chaque personne ne doit pas avoir les mêmes droits
d'accès, forcément (mais pourquoi les élèves ont pas le droit de
modification sur les notes ? :p)
Or, je sais pas du tout comment m'en sortir à cause de l'architecture
modulaire... Etant donné qu'on ne sait pas à priori le nombre de
modules qui seront disponibles, je ne vois pas du tout comment
implémenter les droits d'accès.De plus, l'accès ne doit pas se faire au
niveau du module même mais au niveau de chaque fonctionnalité du module
: un élève pourra consulter ses notes, mais pas les modifier...
J'ai pensé à utiliser un champ de bits ou une chaîne de caractères du
style --X-- dans une base SQL, chaque caractère représentant un droit d'accès pour une
fonction d'un module particulier, avec un substr pour l'accès à un
droit particulier... Mais comme on ne connaît ni le nombre de modules
ni le nombre de fonctions par module, est-ce la meilleure solution ?
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 2 mai 2006 à 11:18
Tu pourrais faire en sorte que par exemple un élève ait un droit qu'on nomerait 0, un prof 1, une secrétaire 2 et ainsi de suite, bref plus on remonte dans la hiérarchie plus ton grade de droits augmente.
A la connexion tu définit une superglobale du nom de droit avec la valeur de du champ dans ta base de donnée(d'après la fonction de la personne dans l'école, soit lycéen ou prof etc...) et au début de tes fonctions tu fais un test par rapport à cette superglobale (par exemple $_SESSION['droits'] > 0 limiterais l'accès à tous les non élèves).
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 20112 2 mai 2006 à 11:32
En fait j'avais également pensé à ta méthode, mais l'organisation ne peut pas être hiérarchique...
On peut par exemple définir que le secrétariat est d'un niveau supérieur au prof, mais les secrétaires n'ont quand meme pas le droit de modification sur les notes. La personne souhaite absolument avoir un outil dans lequel les droits sont limités au strict minimum, rien de plus que ce qu'on a besoin... Il est donc hors de question pour eux de laisser les secrétaires modifier ou supprimer les notes :/
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 2 mai 2006 à 13:48
Et bien, tu pourrais faire un table avec plusieurs champs, par exemple :
-champs modifNote
-champs consultationNote,
-etc etc
Et pour chaque utilisateur dans le base, on met un droit, par exemple l'élève pourrait avoir pour les notes le droits 1(voir les notes) et pour consultationNote le droit 0(droit de rien), et pour la modif pour le prof on mettrait 2.
En fait l'idée serait de lister tous les droits possibles et d'en faire des champs et ensuite définir des codes pour les droits.
C'est ptet pas génial, mais ca peut s'avérer pratique dans certains cas.
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 20112 2 mai 2006 à 13:54
Oui je veux bien, mais comme on se sait pas à priori combien de modules seront disponiles, on peut pas faire un champ par droit d'accès... Mais je pense avoir trouvé une solution : une table avec 2 champs : un ID utilisateur, et une liste d'autorisations, séparées par n'importe quel caractère....
Si quelqu'un a tout de même une autre idée, je suis toujours preneur :)
Merci à vous deux en tout cas
Enjoy ++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 2 mai 2006 à 14:04
Et bien c'est pas grave si tu connais pas le nombre de modules ! A chaque fois que tu as un nouveau module qui nécessite un droit, et bien tu peux rajouter une colonne à ta table. J'en connais qui le font ...
cs_spyro666
Messages postés137Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention28 août 2007 2 mai 2006 à 14:10
Ou alors tu fais un table avec les droits et les ID des utilisateur ou un ID peut apparaître plusieurs fois et un droit aussi. Genre le droit d'acces pour le module 1 s'appel 1, celui pour le 2 s'appel 2 et ainsi de suite, ou si tu doit pouvoir accéder par exemple aux notes sans les modifier ce serait le droit 1, si tu peux les modifier c'est le droit 2, si tu peux mettre des absences c'est 3 et ainsi de suite.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 2 mai 2006 à 23:36
Salut,
un champ numérique pour chaque personne qui définit le "groupe de modifications", et une table "groupes" qui elle regroupe différents champs avec "modifnotes", etc... tel personne faisant partie de tel groupe pourra modifier les notes, etc..
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 20112 3 mai 2006 à 08:12
Ree :)
Merci a tous pour vos réponses, en fait on a trouvé une solution qui s'intègre parfaitement avec le système actuel... :D
On créee une table groupes, qui contient un ID de groupe, un nom et une liste de méthodes (avec les noms des objets correspondants) auxquelles il a le droit d'accéder. Après, on joint un utilisateur à un ou plusieurs groupes, pour déterminer à quelles fonctions il a le droit d'accéder...