- Question multi-admin [PHP] - PHP - Programmation
Marsh Posté le 19-06-2004 à 20:54:17
Moi pour mon forum j'ai fais une table "Permissions". Ou il y a le login de la personne et tout les pouvoirs k'elle peut avoir (deplacer posts,editer,supprimer,bloker,...) et avant de faire koi ke se soit, je controle dans cette table si tout est bon
Marsh Posté le 19-06-2004 à 22:54:51
esox_ch a écrit : Moi pour mon forum j'ai fais une table "Permissions". Ou il y a le login de la personne et tout les pouvoirs k'elle peut avoir (deplacer posts,editer,supprimer,bloker,...) et avant de faire koi ke se soit, je controle dans cette table si tout est bon |
Ah oui tiens je n'y avais pas penser.
Par contre, au niveau de l'algoritme c'est un peu flou, c'est possible d'avoir un peu plus de précision sur ta méthode ?
Marsh Posté le 20-06-2004 à 09:53:46
Y a pas vraiment un algorithme. J'ai une table ou chak colone est un "pouvoir" different.Je met touit simplemtent "n" si l'utilisatewur n'a pas le pouvoir et "y" s'il l'a. Apres sur la page d'admin je fais un truc genre :
Code :
|
.....
C'est long et chiant de faire la page d'admin pask si comme moi tu as une 20ène de pouvoirs differents ... ca te fais une 20ène de if(..){..} a taper, mais apres je trouve que ca donne style ... tu peux donner les pouvoirs comme tu veux et les enlever aussi
Marsh Posté le 20-06-2004 à 11:48:31
esox_ch a écrit : Y a pas vraiment un algorithme. J'ai une table ou chak colone est un "pouvoir" different.Je met touit simplemtent "n" si l'utilisatewur n'a pas le pouvoir et "y" s'il l'a. Apres sur la page d'admin je fais un truc genre :
|
Avis personnel:
Tu devrais utiliser un booléun, ca devrait faciliter la vie, je pense
Marsh Posté le 20-06-2004 à 21:57:04
A tiens j'y avais pas pensser ... c vrai que c pas con ... Merci
Marsh Posté le 21-06-2004 à 13:23:06
Partie admin pour un forum ou pour autre chose ?
Marsh Posté le 21-06-2004 à 14:40:50
pour une section avec divers menu (ajout news, ajout lien telechargement, ajout lien site etc....)
Marsh Posté le 21-06-2004 à 16:34:19
Si tu veux on peux la scripter a 4 mains mais fo attendre la fin de la semaine, pask moi la je suis en pleins exams
Marsh Posté le 22-06-2004 à 13:10:11
J'ai 5 tables, une avec les utilisateurs (id,nom), une avec les groupes (id,nom), une avec les actions possibles dans le site(id,nom), une avec les appartenances aux groupes (idGroupe,idUtilisateur), une avec les droits des groupes pour les actions (idGroupe, idAction)
Je peux attribuer à n'importe quel groupe les droits sur autant d'actions que je veux, et je peux faire joindre un utilisateur à autant de groupes que je veux et ainsi lui donner les droits des groupes où il se trouve, c'est super pratique à gérer (exemple: des groupes "élèves","profs","administration","webadmin","webmaster"...)
Dans mon code j'ai juste à faire par exemple:
Code :
|
Ca rends les autorisations très claires dans le code et facile à mettre
(j'ai fais toute la partie admin qui va avec les tables bien sûr )
Bientôt je vais rajouter la possibilité de retirer ou d'ajouter un droit précis à un utilisateur précis, ce droit sera prioritaire sur les droits donnés par son appartenance aux différents groupes dont il fait parti
Marsh Posté le 01-07-2004 à 23:03:31
Ca m'a l'air compliqué quand même Aspegic
Avec toutes ces tables, je m'y perd.
Marsh Posté le 01-07-2004 à 23:10:16
j'ai mis au point une façon intéressante de faire. pour affiner au mieux les droits. chaque droit correspond à une puissance de 2. ainsi, en additionnant les droits, on stock dans un seul nombre tous ses droits.
ex.
poster : 1
editer : 2
effacer : 4
admin : 8
pour contrôler si la personne à les droits, une fonction
Code :
|
Marsh Posté le 02-07-2004 à 09:09:28
AlphaZone a écrit : Ca m'a l'air compliqué quand même Aspegic |
Le système est relativement long (mais pas si compliqué que ca) à créer mais aprés la gestion des droits est hyper simple pour l'utilisateur et peut être affinée à l'extrème, et pour moi rajouter des controles dans le code est mechamment simple et rapide
J'ai déjà fait d'autres systèmes d'authentification auparavant:
-simple login "admin" permettant d'avoir accés aux modifications (là c'est admin ou user, pas facile de donner des droits précis )
-droits gérés par un level (quand on veut donner à 2 utilisateurs chacun le droit sur une partie mais pas sur l'autre, c'est baisé...)
Ils montrent trés vite leur limite alors j'ai fait mon nouveau et franchement il est terrible (je pense encore l'améliorer en donnant la possibilité de retirer un droit précis à un utilisateur, en dehors des droits donnés par ses appartenances aux groupes)
Marsh Posté le 02-07-2004 à 12:46:23
esox_ch a écrit : Je crois que je préfère quand meme le mien ... |
Comme tu veux, mais quand tu aura un site avec 200 pouvoirs différents à mettre: du simple accés à chaque rubrique, aux actions telles que voir,ajouter,supprimer,modifier quelque chose, x 20 pages ca fait vite un nombre énorme de colonnes, le système finit donc par être limité (y'a une limitation aux nombre max de colonnes dans les sgbd)
Tu n'a pas de gestion de groupes (mais ca peut se rajouter sans trop de problème)
Mon système finalement c'est un principe assez proche, sauf qu'au lieu de faire 1 ligne par user avec autant de colonnes qu'il y'a de droits possibles, je fais une table avec une ligne pour chaque association user/droit. (et pour le système de groupe j'ai une table avec une ligne pour chaque association user/groupe)
As-tu déjà eu des cours sur la modélisation de bases de données
Marsh Posté le 03-07-2004 à 12:57:34
Aspegic a raison.
Et puis plus la chose est long a coder, plus l'accès est simple.
Marsh Posté le 22-07-2004 à 09:41:09
aspegic500mg a écrit : |
Non j'ai jamais eu de cours d'info de ma vie, tout ce que je sais je l'ai appris soit sur le net soit dans mes bouquins..
Le problème c'est que j'aime pas trop la gestion des pouvoirs "groupe par groupe", j'aime bien pouvoir donner n'importe quel pouvoir (et j'en ai un tas possible) à n'importe quel utilisateur ...
Mon systeme peut etre un peu "simplifié" en separant les données sur plusieurs tables (genre au lieu de mettre le nom de l'utilisateur, mettre l'id correpondant a son nom dans la table des utilisateurs ,...) mais je vois mal comment je peux changer plus ...
Marsh Posté le 22-07-2004 à 09:47:17
Pour empécher mes divers users de s'effacer les articles écrits entre eux, j'ai mis un bete WHERE :
Code :
|
Bien sur çà marche mais comme je debute avec les sessions, je vais surement trouver mieux
Mais est-ce que vous trouvez ma méthode correct ?
Marsh Posté le 22-07-2004 à 09:51:40
Moi j'aurais plutot vu un :
SELECT pseudo FROM article WHERE id='$article_id'
$farray = mysql_fetch_array($query);
if($_SESSION['pseudo'] == $farray['pseudo'])
delete();
else
die("Vous ne pouvez pas effacer des topic créés par d'autres utilisateurs" );
Marsh Posté le 02-09-2008 à 15:23:21
jagstang a écrit :
|
Bonjour,
Pouvez-vous mettre un exemple complet d'application de votre méthode ?
D'avance merci.
Marsh Posté le 19-06-2004 à 19:20:04
Bonjours à tous,
Voila je me posais une question:
Comment faire pour une gestion multi-utilisateur dans une parti d'administration ?
Comment savoir que telle personne à tel niveau et que celle-co ne peux frauder pour accèder à un niveau supérieur ?
Sur quoi basez-vous pour la sécurité des niveaux ?
De mon côté j'ai utilisé un niveau décimal. ex: superadmin = 10, newser = 1, etc...
Et je me suis basé sur le pseudo.
Donc si Niveau = XX et pseudo = TOTO alors afficher tel page.
Qu'en pensez-vous ?