Zitat von
CG2003:
Gibt es noch andere Möglichkeiten? Vielleicht eine Möglichkeit die Idee mit
der zweiten Usertabelle zu realisieren?
Wo genau hast du denn damit Probleme? Ich habe es doch grds. geschildert.
- Du erstellst in Deiner Anwendung einen Login-Dialog
- dann fragst Du ab:
Delphi-Quellcode:
ZQuery1 hat als Connection eine ZEOS-DBConnection mit dem gemeinsamen Datenbankuser
bLogin:=false;
Zquery1.Sql.Text:='SELECT * FROM sys_user WHERE username=:username AND password=:password';
Zquery1.ParamByName('username').AsString:=Edit1.Text;
Zquery1.ParamByName('password').AsString:=Edit2.Text; // ich vergleiche bei mir hier ein MD5 Passwort Hash
Zquery1.Open;
if Zquery1.RecordCount > 0 then
// Login erfolgreich
begin
bLogin:=true
iRoleID:=ZQuery1.FieldByname('roleid').AsInteger;
end
else
// Login nicht erfolgreich
bLogin:=false;
ZQuery1.Close;
Dann machst Du z.B. im OnShow der Mainform:
Zquery1.Sql.Text:='SELECT * FROM modules m, sys_role_rights r WHERE r.roleid=:roleid AND m.moduleid=r.moduleid';
Zquery1.ParamByName('roleid').AsInteger:=iRoleID;
ZQuery1.Open;
While not ZQuery1.EoF do
begin
// Hier z.B. Menübaum aufbauen, etc.
ZQuery1.Next;
end;
Zquery1.Close;
Die Tabelle sys_role_rights kann z.B. so aufgebaut sein:
ID ROLEID MODULEID
1 1 1
2 1 2
3 1 5
4 2 4