salut
j’ai la base de données suivante qui contient deux tables: (GROUPES,USERS) pour gérer les droits des groupes :
Script:
Insertion des enregistrements
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 CREATE TABLE GROUPES ( ID_GROUPE SMALLINT NOT NULL, DESCRIPTION VARCHAR(30) NOT NULL, DROITS_Button1 SMALLINT , DROITS_BUTTON2 SMALLINT, /* Keys */ CONSTRAINT PK_GROUPE PRIMARY KEY (ID_GROUPE) ); CREATE TABLE USERS ( ID_USER SMALLINT NOT NULL, NOM VARCHAR(30) NOT NULL, MotPass VARCHAR(30), ID_GROUPE SMALLINT, /* Keys */ CONSTRAINT PK_USERS PRIMARY KEY (ID_USER), /* Foreign keys */ CONSTRAINT FK_USER_GROUPES FOREIGN KEY (ID_GROUPE) REFERENCES GROUPES(ID_GROUPE) ON DELETE CASCADE ON UPDATE CASCADE );
dans la form1 j'ai deux boutons (Button1,Button1=2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 INSERT INTO GROUPE_PRV (ID_GROUPE, DESCRIPTION, DROITS_Button1, DROITS_BUTTON2) VALUES (1, 'administrateur', 1,1); INSERT INTO GROUPE_PRV (ID_GROUPE, DESCRIPTION, DROITS_Button1, DROITS_BUTTON2) VALUES (2, 'superviseur', 0,1); INSERT INTO GROUPE_PRV (ID_GROUPE, DESCRIPTION, DROITS_Button1, DROITS_BUTTON2) VALUES (3, 'Staff', 1,0); COMMIT; INSERT INTO USERS (ID_USER, NOM, MotPass, ID_GROUPE) VALUES (1, 'admin', 'test', 1); INSERT INTO USERS (ID_USER, NOM, MotPass, ID_GROUPE) VALUES (1, 'David', '123456', 2); INSERT INTO USERS (ID_USER, NOM, MotPass, ID_GROUPE) VALUES (1, 'Devloper', '1234', 3); COMMIT;
pour donner à chaque groupe une droit pour chaque bouton Nous écrivons l'un des deux nombres dans les deux champs (DROITS_Button1, DROITS_BUTTON2)
le numéro 0 veut dire que Le groupe n'a pas d'autorisation, ce qui signifie que le bouton est désactivé
le numéro 1 veut dire que Le groupe a l'autorisation, ce qui signifie que le bouton est Activé
pour charge les droit d'un utilisateur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 procedure TForm1.FormCreate(Sender: TObject); begin with FDQuery1 do begin Close; SQL.Clear; SQL.Add('SELECT DROITS_Button1,DROITS_Button2 FROM GROUPES'); SQL.Add(' WHERE DESCRIPTION=:ParmDESCRIPTION'); ParamByName('ParmDESCRIPTION').value:=FormAuthentification.EditUserName.Text; Open; end; if DataModule1.FDQuery1.FieldByName('DROITS_Button1').asInteger=0 then Button1.Enabled:=False else Button1.Enabled:=True if DataModule1.FDQuery1.FieldByName('DROITS_Button2').asInteger=0 then Button2.Enabled:=False else Button2.Enabled:=True end;
-C'est l'idée avec laquelle je travaille pour les droit des forms
-Supposons que j'ai 8 forms dans chaque form, il y a 10 boutons
Cela signifie que j'ajouterai 80 champs dans le table GROUPES (DROIT_button1....DROIT_button80) Pour moi c'est trop De plus, Firebird a un nombre maximum de champs autorisés dans chaque table
Mes questions sont:
1-Est-ce une bonne méthode et qu'en pensez-vous.
2-y a-t-il une meilleure méthode?
Partager