Droits d'accès - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Droits d'accès (/showthread.php?tid=4928) |
Droits d'accès - Thib4s - 22-06-2010 Bonjour à tous, Je sais que ces derniers temps je poste beaucoup mais bon apprendre un nouveau langage amène à se poser de nouvelles questions. Celle du jour n'est pas vraiment "technique" mais plutôt "pratique". J'ai déjà bien avancé dans a création de mon Broswer Game (4-5%, inscription, connexion, modules news complet, assistant de création de personnage et DLA implantée, avec rails on code quand même vachement vite ) mais je me heurte à une question... Actuellement les outils d'administration pour les différents modules sont opérationnel (gestion des news, etc...) mais la question que je me pose est "Quel est le meilleur moyen pour gérer les niveau d'accès". J'utilise pour l'instant un système avec un champ "level" dans ma table user et une fonction : Code : def restrict_access(level) un visiteur = pas de level un membre = level 1 un modérateur = level 6 un super modérateur = level 8 un admin = level 10 Donc si je veux restreindre une page comme l'inscription à tous les utilisateurs loggé je met un restrict_access(0). Maintenant le problème de ce système est que je suis obligé de le placer dans chacune des méthodes de mes controllers :S Sous CakePHP j'utilisait le moteur ACL qui était assez lourd à mettre en place avec une config un peu litigieuse. Selon vous je dois aussi faire sa pour rails ou bien garder ma méthode qui est pas très "DRY" RE: Droits d'accès - php_addict - 22-06-2010 je suis pas certain que ceci: http://www.jeuweb.org/showthread.php?tid=6382 puisse t'aider mais bon... RE: Droits d'accès - Sephi-Chan - 22-06-2010 Je préfère utiliser des rôles. Une table de rôles et une table de liaison entre les rôles et les utilisateurs. Sephi-Chan RE: Droits d'accès - Ter Rowan - 22-06-2010 comme Sephi, plutôt deux tables, voire 3/4tables même, en plus de la table utilisateur à deux tables : table rôle table rôle + utilisateur (table utilisateur) à 3/4 tables : table rôle table profil table rôle + profil (table utilisateur avec colonne profil) OU table utilisateur + profil l'intérêt du rôle c'est de définir les possibilités d'actions unitaires (tel rôle peut faire telles choses) il permet en plus par rapport au "level" de séparer les droits : "un administrateur n'a pas le droit de réaliser certaines actions d'un modérateur et un modérateur n'a pas les droits de réaliser certaines actions d'un administrateur" ==> impossible avec les "level" l'intérêt du profil c'est de simplifier l'attribution des rôles à un utilisateur profil A possède rôles 1 3 5 6 7 profil B possède rôles 1 2 4 5 8 plus facile à gérer pour un individu. Et puis on peut élargir le profil à autre chose que des rôles mais aussi des périmètres, voire des conditions périmètre croisé rôle exemple sur un forum "RP" les chefs de guilde ont un rôle de modérateur sur le périmètre du sous forum de leur guilde, un rôle d'utilisateur sur le périmètre des sous forums publics et aucun droit sur le périmètre des sous forums des autres guildes RE: Droits d'accès - Thib4s - 23-06-2010 Merci pour vos idées, je pense que je vais adopter Ma BDD devra ressembler à ça alors ? - users (infos de connexion, has_one :user_profile, has_one :user_stat, has_many :user_awards, has_many :user_roles) - user_profiles (les profils, belongs_to :user) - user_stats (les statistiques pour les awards, belongs_to :user) - user_awards (les récompenses, belongs_to :user) - user_roles (belongs_to :user) Sa fait pas bcp de liaisons ? RE: Droits d'accès - Sephi-Chan - 23-06-2010 Ben non, ça fait rien d'avoir beaucoup de relations. Elles sont juste là pour aider ActiveRecord à écrire les requêtes SQL. Sephi-Chan |