?? usermanager.pas
字號:
begin
// Add subitems to TreeNode:
Screen.Cursor := crHourGlass;
if not TreeViewUsers.Selected.HasChildren then
case TreeViewUsers.Selected.Level of
0 : // add dbs to user-node...
with TMDIChild(Application.Mainform.ActiveMDIChild) do begin
tndb := tnodehost.GetFirstChild;
for i:=0 to tnodehost.Count-1 do begin
tnu := TreeViewUsers.Items.AddChild(TreeViewUsers.Selected, tndb.Text);
tnu.ImageIndex := 12;
tnu.SelectedIndex := 0;
tndb := tnodehost.getNextChild(tndb);
end;
end;
1 : // add tables to user-node...
with TMDIChild(Application.Mainform.ActiveMDIChild) do begin
tndb := tnodehost.GetFirstChild;
// find according db in dbtree
for i:=0 to tnodehost.Count-1 do begin
if tndb.Text = TreeViewUsers.Selected.Text then
break;
tndb := tnodehost.getNextChild(tndb);
end;
tntbl := tndb.GetFirstChild;
for i:=0 to tndb.Count-1 do begin
tnu := TreeViewUsers.Items.AddChild(TreeViewUsers.Selected, tntbl.Text);
tnu.ImageIndex := 1;
tnu.SelectedIndex := 11;
tntbl := tndb.getNextChild(tntbl);
end;
end;
2 : // add columns to user-node...
begin
// find fields from table
TMDIChild(Mainform.ActiveMDIChild).GetResults( 'SHOW FIELDS FROM ' + TreeViewUsers.Selected.Parent.Text + '.' + TreeViewUsers.Selected.Text, ZQueryF );
for i:=1 to ZQueryF.RecordCount do
begin
tnu := TreeViewUsers.Items.AddChild(TreeViewUsers.Selected, ZQueryF.Fields[0].AsString);
tnu.ImageIndex := 17;
tnu.SelectedIndex := 18;
ZQueryF.Next;
end;
end;
end;
if not TreeViewUsers.Selected.Expanded then
TreeViewUsers.Selected.Expand(false);
Screen.Cursor := crDefault;
end;
procedure TUserManagerForm.TreeViewUsersChange(Sender: TObject;
Node: TTreeNode);
var
n : TTreeNode;
highlight : TColor;
begin
// Selecting a User, DB, Table or Column in TreeViewUsers
n := Node;
while n.Parent <> nil do
n := n.Parent;
// show controls:
ShowPrivilegesControls(false, false, true);
User := copy(n.Text, 0, pos('@', n.Text)-1);
Host := copy(n.Text, pos('@', n.Text)+1, length(n.text));
LabelUser.Caption := 'User ''' + User + ''' connecting from host ''' + Host + '''';
highlight := clNavy;
case Node.level of
0 : begin
LabelDB.Caption := '<All Databases>'; LabelDB.Font.Color := highlight;
LabelTable.Caption := '<All Tables>'; LabelTable.Font.Color := highlight;
LabelColumn.Caption := '<All Columns>'; LabelColumn.Font.Color := highlight;
ButtonEditUser.Enabled := true;
end;
1 : begin
LabelDB.Caption := Node.Text; LabelDB.Font.Color := clWindowText;
LabelTable.Caption := '<All Tables>'; LabelTable.Font.Color := highlight;
LabelColumn.Caption := '<All Columns>'; LabelColumn.Font.Color := highlight;
if not ZQueryDBs.Active then
TMDIChild(Mainform.ActiveMDIChild).GetResults( 'SELECT * FROM mysql.db', ZQueryDBs );
ButtonEditUser.Enabled := false;
end;
2 : begin
LabelDB.Caption := Node.Parent.Text; LabelDB.Font.Color := clWindowText;
LabelTable.Caption := Node.Text; LabelTable.Font.Color := clWindowText;
LabelColumn.Caption := '<All Columns>'; LabelColumn.Font.Color := highlight;
if not ZQueryTables.Active then
TMDIChild(Mainform.ActiveMDIChild).GetResults( 'SELECT * FROM mysql.tables_priv', ZQueryTables );
ButtonEditUser.Enabled := false;
end;
3 : begin
LabelDB.Caption := Node.Parent.Parent.Text; LabelDB.Font.Color := clWindowText;
LabelTable.Caption := Node.Parent.Text; LabelTable.Font.Color := clWindowText;
LabelColumn.Caption := Node.Text; LabelColumn.Font.Color := clWindowText;
if not ZQueryColumns.Active then
TMDIChild(Mainform.ActiveMDIChild).GetResults( 'SELECT * FROM mysql.columns_priv', ZQueryColumns );
ButtonEditUser.Enabled := false;
end;
end;
editcurrent := true;
ShowPrivs(node);
end;
procedure TUserManagerForm.PageControl1Change(Sender: TObject);
var
i : Integer;
tn : TTreeNode;
begin
// Toggle Button Add User
ButtonAddUser.Visible := PageControl1.ActivePage = TabSheetAddUser;
// ---------------------
// Edit Users:
// Fill Tree with Registered Users:
if (PageControl1.ActivePage = TabSheetEditUsers) and
(TreeViewUsers.Items.Count = 0) then
begin
TMDIChild(Mainform.ActiveMDIChild).GetResults( 'SELECT * FROM mysql.user', ZQueryUsers );
for i:=1 to ZQueryUsers.RecordCount do
begin
tn := TreeViewUsers.Items.AddChild(nil, ZQueryUsers.Fields[1].AsString + '@' + ZQueryUsers.Fields[0].AsString );
tn.ImageIndex := 16;
tn.SelectedIndex := 15;
ZQueryUsers.Next;
end;
end;
// ---------------------
end;
procedure TUserManagerForm.ButtonSelectAllClick(Sender: TObject);
begin
// Select all
ToggleCheckListBox(CheckListBoxPrivs, true);
CheckListBoxPrivs.OnClickCheck(self);
end;
procedure TUserManagerForm.ButtonSelectNoneClick(Sender: TObject);
begin
// Select none
ToggleCheckListBox(CheckListBoxPrivs, false);
CheckListBoxPrivs.OnClickCheck(self);
end;
procedure TUserManagerForm.ShowPrivilegesControls(v, w, y: Boolean);
begin
// show/hide Privileges-Controls
// v : some privileges set?
// w : a user selected?
// y : no privileges set
LabelPrivileges.Visible := v;
Label11.Visible := v;
Label12.Visible := v;
Label13.Visible := v;
LabelUser.Visible := v;
LabelDB.Visible := v;
LabelTable.Visible := v;
LabelColumn.Visible := v;
CheckListBoxPrivs.Visible := v;
ButtonSelectAll.Visible := v;
ButtonSelectNone.Visible := v;
ButtonSet.Visible := v;
if v then
ButtonSet.Enabled := false;
ButtonRevoke.Visible := v;
if v then
ButtonRevoke.Enabled := editcurrent;
LabelPleaseSelect.Visible := w;
LabelNoPrivs.Visible := y;
ButtonSelectPrivileges.Visible := y;
if TreeViewUsers.Selected <> nil then
case TreeViewUsers.Selected.Level of
0 : begin // General
CheckListBoxPrivs.Clear;
CheckListBoxPrivs.Items.Add('Select');
CheckListBoxPrivs.Items.Add('Insert');
CheckListBoxPrivs.Items.Add('Update');
CheckListBoxPrivs.Items.Add('Delete');
CheckListBoxPrivs.Items.Add('Create');
CheckListBoxPrivs.Items.Add('Drop');
CheckListBoxPrivs.Items.Add('Reload');
CheckListBoxPrivs.Items.Add('Shutdown');
CheckListBoxPrivs.Items.Add('Process');
CheckListBoxPrivs.Items.Add('File');
CheckListBoxPrivs.Items.Add('Grant');
CheckListBoxPrivs.Items.Add('References');
CheckListBoxPrivs.Items.Add('Index');
CheckListBoxPrivs.Items.Add('Alter');
ButtonRevoke.Caption := 'Delete User';
end;
1,2 : begin // DB, Table
CheckListBoxPrivs.Clear;
CheckListBoxPrivs.Items.Add('Select');
CheckListBoxPrivs.Items.Add('Insert');
CheckListBoxPrivs.Items.Add('Update');
CheckListBoxPrivs.Items.Add('Delete');
CheckListBoxPrivs.Items.Add('Create');
CheckListBoxPrivs.Items.Add('Drop');
CheckListBoxPrivs.Items.Add('Grant');
CheckListBoxPrivs.Items.Add('References');
CheckListBoxPrivs.Items.Add('Index');
CheckListBoxPrivs.Items.Add('Alter');
ButtonRevoke.Caption := 'Revoke Privileges';
end;
3 : begin // Column
CheckListBoxPrivs.Clear;
CheckListBoxPrivs.Items.Add('Select');
CheckListBoxPrivs.Items.Add('Insert');
CheckListBoxPrivs.Items.Add('Update');
CheckListBoxPrivs.Items.Add('References');
ButtonRevoke.Caption := 'Revoke Privileges';
end;
end;
end;
procedure TUserManagerForm.ButtonSelectPrivilegesClick(Sender: TObject);
begin
// Specify some privileges
editcurrent := false;
ShowPrivilegesControls(true, false, false);
end;
procedure TUserManagerForm.ShowPrivs(node: TTreeNode);
var
i,j : Integer;
begin
// Show user-privileges (general, db, table or column)
// depending on node.level
case Node.Level of
0 : begin // General user-privileges
ZQueryUsers.First;
for i:=1 to ZQueryUsers.RecordCount do
begin
if (ZQueryUsers.Fields[0].AsString+'' = Host) and (ZQueryUsers.Fields[1].AsString+'' = User) then
begin // found the according user!
ShowPrivilegesControls(true, false, false);
CheckListBoxPrivs.Checked[0] := ZQueryUsers.Fields[3].AsString = 'Y'; // Select
CheckListBoxPrivs.Checked[1] := ZQueryUsers.Fields[4].AsString = 'Y'; // Insert
CheckListBoxPrivs.Checked[2] := ZQueryUsers.Fields[5].AsString = 'Y'; // Update
CheckListBoxPrivs.Checked[3] := ZQueryUsers.Fields[6].AsString = 'Y'; // Delete
CheckListBoxPrivs.Checked[4] := ZQueryUsers.Fields[7].AsString = 'Y'; // Create
CheckListBoxPrivs.Checked[5] := ZQueryUsers.Fields[8].AsString = 'Y'; // Drop
CheckListBoxPrivs.Checked[6] := ZQueryUsers.Fields[9].AsString = 'Y'; // Reload
CheckListBoxPrivs.Checked[7] := ZQueryUsers.Fields[10].AsString = 'Y'; // Shutdown
CheckListBoxPrivs.Checked[8] := ZQueryUsers.Fields[11].AsString = 'Y'; // Process
CheckListBoxPrivs.Checked[9] := ZQueryUsers.Fields[12].AsString = 'Y'; // File
CheckListBoxPrivs.Checked[10] := ZQueryUsers.Fields[13].AsString = 'Y'; // Grant
CheckListBoxPrivs.Checked[11] := ZQueryUsers.Fields[14].AsString = 'Y'; // References
CheckListBoxPrivs.Checked[12] := ZQueryUsers.Fields[15].AsString = 'Y'; // Index
CheckListBoxPrivs.Checked[13] := ZQueryUsers.Fields[16].AsString = 'Y'; // Alter
break;
end;
ZQueryUsers.Next;
end;
end;
1 : begin // db-privileges
ZQueryDBs.First;
for i:=1 to ZQueryDBs.RecordCount do
begin
if (ZQueryDBs.Fields[0].AsString = Host)
and (ZQueryDBs.Fields[1].AsString = Node.Text)
and (ZQueryDBs.Fields[2].AsString = User) then
begin
// some privs are set:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -