* Un enregistrement de table, on appelle ça comment ? Une ligne ?
oui une ligne ou un tuple, parfois un enregistrement
avec tes dernières précisions c'est beaucoup plus clair.
La gestion de droit peux ce faire comme sur unix avec un flag lecture, un ecriture
donc une table qui liste les droits
lecture
écriture (insert)
modification (update)
suppression (a priori pas de suppression sauf pour toi

)
Donc a priori un système du genre
create table utilisateurs(
idUtilisateur int unsigned not null auto_increment primary key,
nom varchar(50) not null,
prenom varchar(50) not null,
motdepasse varchar(128) not null,
email varchar(255) not null
)engine=innodb;
create table droits(
idDroit int not null auto_increment primary key,
nom varchar(25) not null,
description varchar (150) not null
)engine=innodb;
create table pages (
idPage int unsigned not null auto_increment primary key,
idUtilisateur int unsigned not null, -- l'auteur de la page
nom varchar(50) not null,
constraint _fk_auteur_page foreign key idUtilisateur references utilisateurs(idUtilisateur)
)engine=innodb;
create table droitUtilisateurPage (
idDup int unsigned not null auto_increment primary key,
idPage int unsigned not null,
idUtilisateur int unsigned not null,
idDroit int unsigned not null,
constraint fk_pages foreign key idPage references pages(idPage),
constraint fk_utilisateur foreign key idUtilisateur references utilisateurs(idUtilisateur),
constraint fk_droit foreign key idDroit references droits(idDroit),
)engine=innodb;
les utilisateurs se connecte a l'aide d'un identifiant / mot de passe (j'ai mis l'email pour l'identifiant unique, le nom n'étant pas un bon candidat

).
Le mot de passe est un varchar 128 pour pouvoir stocker un sha-512.
Tu auras ainsi des utilisateurs, des pages des droits et une jointure de tous cela.
si un droit n'est pas présent dans la table c'est qu'il n'est pas accordé (pour alléger la table

).
donc si x veut accéder à la page modification de la page Y il faut vérifier dans la table que le couple x,Y, modification existe sinon => erreur.
cela permet une gestion très fine des droits.
l'inconvénient est les temps qu'il faut pour les attribuer.
Pour cela il est possible de créer une gestion de groupe d'utilisateur.
tu peux aussi aussi faire un petit script permettant au créateur de la page de gérer les accès lui même
Attention il te faut prévoir une échappatoire pour les admin (donc toi au minimum) afin de passer outre les droits de la table.
la soit tu ajoute un flag dans la table utilisateur (adimin / normal) soit tu ajoute dans la table tout les droit pour toutes les pages, pour toi (la première solution semble la plus performante il te suffit d'avoir cette info en session).
@+
[quote="Bosse.cie"]* Un enregistrement de table, on appelle ça comment ? Une ligne ?[/quote]
oui une ligne ou un tuple, parfois un enregistrement :)
avec tes dernières précisions c'est beaucoup plus clair.
La gestion de droit peux ce faire comme sur unix avec un flag lecture, un ecriture
donc une table qui liste les droits
lecture
écriture (insert)
modification (update)
suppression (a priori pas de suppression sauf pour toi :) )
Donc a priori un système du genre
[sql]
create table utilisateurs(
idUtilisateur int unsigned not null auto_increment primary key,
nom varchar(50) not null,
prenom varchar(50) not null,
motdepasse varchar(128) not null,
email varchar(255) not null
)engine=innodb;
create table droits(
idDroit int not null auto_increment primary key,
nom varchar(25) not null,
description varchar (150) not null
)engine=innodb;
create table pages (
idPage int unsigned not null auto_increment primary key,
idUtilisateur int unsigned not null, -- l'auteur de la page
nom varchar(50) not null,
constraint _fk_auteur_page foreign key idUtilisateur references utilisateurs(idUtilisateur)
)engine=innodb;
create table droitUtilisateurPage (
idDup int unsigned not null auto_increment primary key,
idPage int unsigned not null,
idUtilisateur int unsigned not null,
idDroit int unsigned not null,
constraint fk_pages foreign key idPage references pages(idPage),
constraint fk_utilisateur foreign key idUtilisateur references utilisateurs(idUtilisateur),
constraint fk_droit foreign key idDroit references droits(idDroit),
)engine=innodb;
[/sql]
les utilisateurs se connecte a l'aide d'un identifiant / mot de passe (j'ai mis l'email pour l'identifiant unique, le nom n'étant pas un bon candidat :) ).
Le mot de passe est un varchar 128 pour pouvoir stocker un sha-512.
Tu auras ainsi des utilisateurs, des pages des droits et une jointure de tous cela.
si un droit n'est pas présent dans la table c'est qu'il n'est pas accordé (pour alléger la table :) ).
donc si x veut accéder à la page modification de la page Y il faut vérifier dans la table que le couple x,Y, modification existe sinon => erreur.
cela permet une gestion très fine des droits.
l'inconvénient est les temps qu'il faut pour les attribuer.
Pour cela il est possible de créer une gestion de groupe d'utilisateur.
tu peux aussi aussi faire un petit script permettant au créateur de la page de gérer les accès lui même :mrgreen:
Attention il te faut prévoir une échappatoire pour les admin (donc toi au minimum) afin de passer outre les droits de la table.
la soit tu ajoute un flag dans la table utilisateur (adimin / normal) soit tu ajoute dans la table tout les droit pour toutes les pages, pour toi (la première solution semble la plus performante il te suffit d'avoir cette info en session).
@+