@@ -37,16 +37,16 @@ TUser = class(TObject)
3737 Problem: TUserProblem;
3838 IsRole: Boolean;
3939 Roles: TStringList;
40- const
41- RoleNo: String = ' no' ;
42- RoleYes: String = ' yes' ;
43- RoleYesAdmin: String = ' yes, with admin' ;
4440 public
41+ class var RoleNo: String;
42+ class var RoleYes: String;
43+ class var RoleYesAdmin: String;
4544 constructor Create;
46- destructor Destroy;
45+ destructor Destroy; override;
4746 function HostRequiresNameResolve : Boolean;
4847 procedure ParseSettings (GrantOrCreate: String; Priv: TPrivObj);
4948 function IsUser : Boolean;
49+ function AssignedRolesCount : Integer;
5050 end ;
5151 PUser = ^TUser;
5252 TUserList = class (TObjectList<TUser>)
@@ -614,6 +614,8 @@ procedure TUserManagerForm.listUsersFocusChanged(Sender: TBaseVirtualTree; Node:
614614 editCipher.Clear;
615615 editIssuer.Clear;
616616 editSubject.Clear;
617+ tabPrivileges.Caption := _(' Privileges' );
618+ tabRoles.Caption := _(' Roles' );
617619
618620 if UserSelected then begin
619621 User := Sender.GetNodeData(Node);
@@ -819,6 +821,8 @@ procedure TUserManagerForm.listUsersFocusChanged(Sender: TBaseVirtualTree; Node:
819821 editCipher.Text := User.Cipher;
820822 editIssuer.Text := User.Issuer;
821823 editSubject.Text := User.Subject;
824+ tabPrivileges.Caption := _(' Privileges' ) + ' (' + FPrivObjects.Count.ToString + ' )' ;
825+ tabRoles.Caption := _(' Roles' ) + ' (' + User.AssignedRolesCount.ToString + ' )' ;
822826
823827
824828 // Generate grant code for column privs by hand
@@ -1197,7 +1201,7 @@ procedure TUserManagerForm.menuItemRoleClick(Sender: TObject);
11971201
11981202 // Add role
11991203 RoleName := ' ' ;
1200- if not InputQuery(' Create role' , ' Role name' , RoleName) then
1204+ if not InputQuery(_( ' Create role' ), _( ' Role name' ) , RoleName) then
12011205 Exit;
12021206
12031207 try
@@ -1726,6 +1730,7 @@ constructor TUser.Create;
17261730destructor TUser.Destroy;
17271731begin
17281732 Roles.Free;
1733+ inherited ;
17291734end ;
17301735
17311736function TUser.HostRequiresNameResolve : Boolean;
@@ -1804,6 +1809,20 @@ function TUser.IsUser: Boolean;
18041809end ;
18051810
18061811
1812+ function TUser.AssignedRolesCount : Integer;
1813+ var
1814+ i: Integer;
1815+ Val: String;
1816+ begin
1817+ Result := 0 ;
1818+ for i:=0 to Roles.Count-1 do begin
1819+ Val := Roles.ValueFromIndex[i];
1820+ if (Val = RoleYes) or (Val = RoleYesAdmin) then
1821+ Inc(Result);
1822+ end ;
1823+ end ;
1824+
1825+
18071826{ TUserList }
18081827
18091828function TUserList.GetRoleNames : TStringList;
@@ -1872,4 +1891,10 @@ function TPrivComparer.Compare(const Left, Right: TPrivObj): Integer;
18721891end ;
18731892
18741893
1894+ initialization
1895+
1896+ TUser.RoleNo := _(' No' );
1897+ TUser.RoleYes := _(' Yes' );
1898+ TUser.RoleYesAdmin := _(' Yes, with admin option' );
1899+
18751900end .
0 commit comments