[PHP/mySQL] Création d'un intranet

Bonjour à tous :slight_smile:

Je dois créer un intranet qui va accueillir différentes fonctionnalités: comptabilité, gestion du site web, gestion des clients, etc…

Je souhaiterais créer un intranet avec plusieurs niveaux d’accès: un accès super administrateur, comptable, rédacteur, …

Chaque personne ayant accès à l’administration n’aura le droit de visualiser que certaines pages (le rédacteur n’a pas le droit de visualiser une page de comptabilité).

A première vue, cela ne me pose pas problèmes de réaliser un tel système… mais le site étant appellé à évoluer j’aimerais faire quelque-chose d’assez automatisé, c’est à dire qu’en créant une nouvelle page sur l’administration on puisse lui donner que certains droits. (Sans pour autant rentrer dans le code)

C’est là que je bloque je ne vois pas trop comment automatiser les choses …

Et en plus de cet intranet, je dois réaliser un sytème permettant de créer des espaces clients(un client ne pourra bien sûr voir que son espace réservé), le plus dynamiquement possible. Ces espaces regrouperont des informations, maquettes, débuts de projets pour le client puisse les consulter en ligne.

Un petit aiguillage serait le bienvenue … conseils, liens, codes exemples car là je ne vois pas trop comment m’y prendre pour faire quelque chose de vraiment dynamique et le plus sécurisé possible.

Merci d’avance pour vos réponses :jap:

Regarde du coté des portails du genre xoops, phpnuke, …, ça te permettra de voir comment il gere plusieurs niveau d’administration, et la visibilité des modules, et la gestion des droits des utilisateurs.

Ok je vais déjà regarder de ce côté là merci :slight_smile:

Pour le moment je pense mettre en place un truc dans le genre:

Sur chaque page: un code genre “acbde” … chaque lettre correspondant à un accès différent(a = super administrateur , b = comptable)

Lorqu’un admin s’est logué avec succès je stocke son login, son Ip de connexion, l’heure d’accès au site.

Après sur chaque page, je vérifie si l’utilisateur existe, s’il a les droits appropriés à la page, si son IP est la même et s’il n’est pas connecté depuis XXX secondes.
Si ce n’est pas le cas il est renvoyé sur la page d’identification.

Je sais pas trop si ma métode est viable …

Mais bon pour ce qui est des espaces réservés aux clients je ne vois pas comment m’y prendre… le système de code “abcd” étant inadapté dans ce cas précis …

:fou:

y a un système assez simple à mettre en place, un peu semblable aux lettres

il faut définir des accès
par exemple:
1= Accès panneau compta
2= Acces gestion site
4= Accès rédaction
8= Accès gestion utilisateurs
etc…

et pour chaque utilisateur, un code d’accès lui est associé

par exemple 1 ne donne accès qu’à la compta, alors que 5 (4+1) donne acces a la compta et a la rédaction
Les super utilisateurs auront l’accès le plus haut (ici 15)

Cette méthode à l’avantage de permettre un nombre illimité d’accès différents, donc niveau évolution, c’est pas mal, c’est assez simple à gérer

tu peux par exemple définir pour chaque accès une constante
define(“ACCES_COMPTA”,1);

et il me semble que pour savoir si un utilisateur, donc le droit d’accès est $axx, à le droit ACCES_COMPTA
il suffit de faire
if($axx & ACCES_COMPTA)

pour ce ‘if’, je n’ai pas testé si cela fonctionne, j’utilisais une autre méthode avant, mais j’ai trouvé ca ici

je fais actuellement un site intranet de gestion d’un parc informatique.

à l’accueil, la personne s’identifie et son statut est stocké grace aux sessions. le statut donne un menu plus ou moins fourni selon les pouvoirs. à chaque page consultée je vérifie dans la session si la personne a les droits de visiter cette page. Moi je fais les tests page par page car mon nombre de pages est fini et qu’il n’y a pas d’accès libre (authentification obligatoire).

Pour ton cas, tu pourrais eventuelement faire une table ds une bdd associant des users à des pages, avec une requete tu vérifies si la session en cours a le droit d’etre dans cette page

Ok merci pour ta solution mais avec cette méthode chaque page contient les constantes d’accès en début de fichier… ils erait petu-être préfèrable de stocker l’ensemble des pages de l’admin avec une table avec le code accès qui lui est associée …

Ouè je pense faire comme ça :jap:

Si vous avez encore des remarques ou conseils je suis preneur

c’était juste un exemple, tu peux adapter après :stuck_out_tongue:

:slight_smile: okich

reference t page dans une base et associe les droits dans la base avec des enregistrements du style

idpage;type_droit;groupe
avec des meta identifiants ALLPAGES, ROOT, PUBLIC, etc

moi je gere comme ça et c pas trop compliqué tout en etant tres souple

ensuite faut une autre table pour definir les groupe par rapport au user mais la normal !

je ne vois pas pourquoi tu veux stocker le type_droit vu que t’as le groupe et qu’un groupe est associé justement à un type de droits … :??:

ouep je fait aussi de cette manierre la

j’ai une table Group
j’ai une table user
j’ai une table module
j’ai une table droit

chaque user appartient a un groupe, chaque groupe a acces a des modules, et chaque groupe a des droits sur les modules. En gros c’est un system dans le genre unix comme chmod et chown. De ce fait tu peux tout imaginer, par contre il faut faire attention a bien gerer ça sinon s’il y a beaucoup de users les requetes sont plus longue et il y a des jointures de partout.

pthichat << les index c cool ! :slight_smile:

ben c juste que tu crée t groupe tu defini tou les asso avec les login et la tu te rend compte ou on te demande de modifier ce qua le droit de faire ce groupe…

c plus simple de dire je rajoute ce droit a ce groupe que de changer toute les personnes du groupe pour un autre …

en fait c une question de conception :

  • un groupe c un ensemble de personne point
  • un droit c un acces a une ressource

tu peux fusionner c deux notions mais c pas plus simple pour autant…

Ben oui c’est bien comme ça que je comptais faire … d’où ma questino en fait … ou alors j’ai rien compris du tout …

quand tu dis on enregistre :

idpage;type_droit;groupe

ce n’est pas à faire dans une unique table …

sisi enfin c pas grave chacun doit faire comme il l’entend

ok :slight_smile: