Revert previous commit and handle VIEWs exactly as we handle tables in user management, except for the icon in front of the privilege, which we detect so the user can distinct between tables and views.

This commit is contained in:
Ansgar Becker
2014-03-03 18:26:33 +00:00
parent 9761c21541
commit 75695bc90a

View File

@ -160,7 +160,7 @@ type
FModified, FAdded: Boolean; FModified, FAdded: Boolean;
CloneGrants: TStringList; CloneGrants: TStringList;
FPrivObjects: TPrivObjList; FPrivObjects: TPrivObjList;
PrivsGlobal, PrivsDb, PrivsTable, PrivsView, PrivsRoutine, PrivsColumn: TStringList; PrivsGlobal, PrivsDb, PrivsTable, PrivsRoutine, PrivsColumn: TStringList;
FConnection: TDBConnection; FConnection: TDBConnection;
procedure SetModified(Value: Boolean); procedure SetModified(Value: Boolean);
property Modified: Boolean read FModified write SetModified; property Modified: Boolean read FModified write SetModified;
@ -259,7 +259,6 @@ begin
PrivsGlobal := InitPrivList('FILE,PROCESS,RELOAD,SHUTDOWN'); PrivsGlobal := InitPrivList('FILE,PROCESS,RELOAD,SHUTDOWN');
PrivsDb := InitPrivList(''); PrivsDb := InitPrivList('');
PrivsTable := InitPrivList('ALTER,CREATE,DELETE,DROP,GRANT,INDEX'); PrivsTable := InitPrivList('ALTER,CREATE,DELETE,DROP,GRANT,INDEX');
PrivsView := InitPrivList('');
PrivsRoutine := InitPrivList('GRANT'); PrivsRoutine := InitPrivList('GRANT');
PrivsColumn := InitPrivList('INSERT,SELECT,UPDATE,REFERENCES'); PrivsColumn := InitPrivList('INSERT,SELECT,UPDATE,REFERENCES');
@ -273,9 +272,8 @@ begin
PrivsRoutine.Add('EXECUTE'); PrivsRoutine.Add('EXECUTE');
end; end;
if Version >= 50001 then begin if Version >= 50001 then begin
PrivsView.Add('DROP'); PrivsTable.Add('CREATE VIEW');
PrivsView.Add('CREATE VIEW'); PrivsTable.Add('SHOW VIEW');
PrivsView.Add('SHOW VIEW');
end; end;
if Version >= 50003 then begin if Version >= 50003 then begin
PrivsGlobal.Add('CREATE USER'); PrivsGlobal.Add('CREATE USER');
@ -307,8 +305,6 @@ begin
PrivsDb.CustomSort(ComparePrivs); PrivsDb.CustomSort(ComparePrivs);
PrivsTable.Sorted := False; PrivsTable.Sorted := False;
PrivsTable.CustomSort(ComparePrivs); PrivsTable.CustomSort(ComparePrivs);
PrivsView.Sorted := False;
PrivsView.CustomSort(ComparePrivs);
PrivsRoutine.Sorted := False; PrivsRoutine.Sorted := False;
PrivsRoutine.CustomSort(ComparePrivs); PrivsRoutine.CustomSort(ComparePrivs);
PrivsColumn.Sorted := False; PrivsColumn.Sorted := False;
@ -371,7 +367,6 @@ begin
FreeAndNil(PrivsGlobal); FreeAndNil(PrivsGlobal);
FreeAndNil(PrivsDb); FreeAndNil(PrivsDb);
FreeAndNil(PrivsTable); FreeAndNil(PrivsTable);
FreeAndNil(PrivsView);
FreeAndNil(PrivsRoutine); FreeAndNil(PrivsRoutine);
FreeAndNil(PrivsColumn); FreeAndNil(PrivsColumn);
Action := caFree; Action := caFree;
@ -470,7 +465,6 @@ var
rxTemp, rxGrant: TRegExpr; rxTemp, rxGrant: TRegExpr;
i, j: Integer; i, j: Integer;
UserSelected: Boolean; UserSelected: Boolean;
Objects: TDBObjectList;
Obj: TDBObject; Obj: TDBObject;
begin begin
// Parse and display privileges of focused user // Parse and display privileges of focused user
@ -503,7 +497,6 @@ begin
AllPNames.AddStrings(PrivsGlobal); AllPNames.AddStrings(PrivsGlobal);
AllPNames.AddStrings(PrivsDb); AllPNames.AddStrings(PrivsDb);
AllPNames.AddStrings(PrivsTable); AllPNames.AddStrings(PrivsTable);
AllPNames.AddStrings(PrivsView);
AllPNames.AddStrings(PrivsRoutine); AllPNames.AddStrings(PrivsRoutine);
AllPNames.AddStrings(PrivsColumn); AllPNames.AddStrings(PrivsColumn);
@ -574,15 +567,12 @@ begin
P.DBObj.NodeType := lntProcedure; P.DBObj.NodeType := lntProcedure;
P.AllPrivileges := PrivsRoutine; P.AllPrivileges := PrivsRoutine;
end else begin end else begin
Objects := P.DBObj.Connection.GetDBObjects(P.DBObj.Database);
Obj := P.DBObj.Connection.FindObject(P.DBObj.Database, P.DBObj.Name); Obj := P.DBObj.Connection.FindObject(P.DBObj.Database, P.DBObj.Name);
if (Obj <> nil) and (Obj.NodeType = lntView) then begin if (Obj <> nil) and (Obj.NodeType = lntView) then
P.DBObj.NodeType := lntView; P.DBObj.NodeType := lntView
P.AllPrivileges := PrivsView; else
end else begin
P.DBObj.NodeType := lntTable; P.DBObj.NodeType := lntTable;
P.AllPrivileges := PrivsTable; P.AllPrivileges := PrivsTable;
end;
end; end;
end; end;
@ -1088,8 +1078,7 @@ begin
case Priv.DBObj.NodeType of case Priv.DBObj.NodeType of
lntNone: Priv.AllPrivileges := PrivsGlobal; lntNone: Priv.AllPrivileges := PrivsGlobal;
lntDb: Priv.AllPrivileges := PrivsDb; lntDb: Priv.AllPrivileges := PrivsDb;
lntTable: Priv.AllPrivileges := PrivsTable; lntTable, lntView: Priv.AllPrivileges := PrivsTable;
lntView: Priv.AllPrivileges := PrivsView;
lntFunction, lntProcedure: Priv.AllPrivileges := PrivsRoutine; lntFunction, lntProcedure: Priv.AllPrivileges := PrivsRoutine;
lntColumn: Priv.AllPrivileges := PrivsColumn; lntColumn: Priv.AllPrivileges := PrivsColumn;
end; end;