ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/examples/services/ListUsersUnit.pas
(Generate patch)

Comparing ibx/trunk/examples/services/ListUsersUnit.pas (file contents):
Revision 208 by tony, Fri Feb 23 12:11:21 2018 UTC vs.
Revision 209 by tony, Wed Mar 14 12:48:51 2018 UTC

# Line 32 | Line 32 | interface
32  
33   uses
34    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
35 <  Grids, ActnList, Menus, db, memds, IBServices, IBCustomDataSet, IBDatabase,
36 <  IBDynamicGrid;
35 >  ActnList, Menus, db, IBDatabase,
36 >  IBXServices, IBDynamicGrid;
37  
38   type
39  
# Line 41 | Line 41 | type
41  
42    TListUsersForm = class(TForm)
43      Button4: TButton;
44 +    IBXSecurityService1: TIBXSecurityService;
45 +    UserList: TIBXServicesUserList;
46      MenuItem1: TMenuItem;
47      MenuItem2: TMenuItem;
48      MenuItem3: TMenuItem;
# Line 57 | Line 59 | type
59      Button2: TButton;
60      Button3: TButton;
61      IBDynamicGrid1: TIBDynamicGrid;
60    IBSecurityService1: TIBSecurityService;
62      Label1: TLabel;
62    UserList: TMemDataset;
63      UserListSource: TDataSource;
64      procedure AddUserExecute(Sender: TObject);
65      procedure ChangePasswordExecute(Sender: TObject);
# Line 69 | Line 69 | type
69      procedure FormShow(Sender: TObject);
70      procedure SaveChangesExecute(Sender: TObject);
71      procedure SaveChangesUpdate(Sender: TObject);
72    procedure UserListAfterInsert(DataSet: TDataSet);
73    procedure UserListAfterOpen(DataSet: TDataSet);
74    procedure UserListAfterPost(DataSet: TDataSet);
75    procedure UserListBeforeClose(DataSet: TDataSet);
76    procedure UserListBeforeDelete(DataSet: TDataSet);
77    procedure UserListBeforePost(DataSet: TDataSet);
72    private
73      { private declarations }
80    FLoading: boolean;
81    procedure DoRefresh(Data: PtrInt);
74    public
75      { public declarations }
76    end;
# Line 96 | Line 88 | uses NewUserDlgUnit, ChgPasswordDlgUnit;
88  
89   procedure TListUsersForm.FormShow(Sender: TObject);
90   begin
91 <  Application.QueueAsyncCall(@DoRefresh,0);
91 >  UserList.Active := true;
92   end;
93  
94   procedure TListUsersForm.SaveChangesExecute(Sender: TObject);
# Line 109 | Line 101 | begin
101    (Sender as TAction).Enabled := UserList.State in [dsInsert,dsEdit];
102   end;
103  
112 procedure TListUsersForm.UserListAfterInsert(DataSet: TDataSet);
113 begin
114  DataSet.FieldByName('UserID').AsInteger := 0;
115  DataSet.FieldByName('GroupID').AsInteger := 0;
116  DataSet.FieldByName('Admin').AsBoolean := false;
117  DataSet.FieldByName('Password').Clear;
118 end;
119
104   procedure TListUsersForm.AddUserExecute(Sender: TObject);
105   var NewUserName: string;
106      NewPassword: string;
# Line 126 | Line 110 | begin
110    with UserList do
111    begin
112      Append;
113 <    FieldByName('UserName').AsString := NewUserName;
114 <    FieldByName('Password').AsString := NewPassword;
113 >    FieldByName('SEC$USER_NAME').AsString := NewUserName;
114 >    FieldByName('SEC$PASSWORD').AsString := NewPassword;
115    end;
116   end;
117  
# Line 139 | Line 123 | begin
123    with UserList do
124    begin
125      Edit;
126 <    FieldByName('Password').AsString := NewPassword;
126 >    FieldByName('SEC$PASSWORD').AsString := NewPassword;
127    end;
128   end;
129  
# Line 150 | Line 134 | end;
134  
135   procedure TListUsersForm.DeleteUserExecute(Sender: TObject);
136   begin
137 <  if MessageDlg(Format('Do you really want delete user %s',[UserList.FieldByName('UserName').AsString]),
137 >  if MessageDlg(Format('Do you really want delete user %s',[UserList.FieldByName('SEC$USER_NAME').AsString]),
138          mtConfirmation,[mbYes,mbNo],0) = mrYes then
139      UserList.Delete;
140   end;
# Line 161 | Line 145 | begin
145    UserList.Active := false;
146   end;
147  
164 procedure TListUsersForm.UserListAfterOpen(DataSet: TDataSet);
165 var i: integer;
166 begin
167  with IBSecurityService1 do
168  begin
169    IBSecurityService1.Active := true;
170    IBDynamicGrid1.Columns[6].ReadOnly := not HasAdminRole;
171    DisplayUsers;
172    FLoading := true;
173    try
174      for i := 0 to UserInfoCount - 1 do
175      with UserInfo[i],UserList do
176      begin
177        Append;
178        FieldByName('UserID').AsInteger := UserID;
179        FieldByName('GroupID').AsInteger := GroupID;
180        FieldByName('UserName').AsString := UserName;
181        FieldByName('FirstName').AsString := FirstName;
182        FieldByName('MiddleName').AsString := MiddleName;
183        FieldByName('LastName').AsString := LastName;
184        FieldByName('Password').Clear;
185        FieldByName('Admin').AsBoolean := AdminRole;
186        Post;
187      end;
188    finally
189      FLoading := false;
190    end;
191  end;
192 end;
193
194 procedure TListUsersForm.UserListAfterPost(DataSet: TDataSet);
195 begin
196  if not FLoading then
197    Application.QueueAsyncCall(@DoRefresh,0);
198 end;
199
200 procedure TListUsersForm.UserListBeforeClose(DataSet: TDataSet);
201 begin
202  with UserList do
203  begin
204    if State in [dsEdit,dsInsert] then Post;
205    Clear(false);
206  end;
207 end;
208
209 procedure TListUsersForm.UserListBeforeDelete(DataSet: TDataSet);
210 begin
211  with IBSecurityService1 do
212  begin
213    Active := true;
214    UserName := UserList.FieldByName('UserName').AsString;
215    DeleteUser;
216    while IsServiceRunning do;
217  end;
218 end;
219
220 procedure TListUsersForm.UserListBeforePost(DataSet: TDataSet);
221  procedure SetParams;
222  begin
223    with UserList, IBSecurityService1 do
224    begin
225      UserID := FieldByName('UserID').AsInteger;
226      GroupID := FieldByName('GroupID').AsInteger;
227      UserName := FieldByName('UserName').AsString;
228      FirstName := FieldByName('FirstName').AsString;
229      MiddleName := FieldByName('MiddleName').AsString;
230      LastName := FieldByName('LastName').AsString;
231      if not FieldByName('Password').IsNull then
232        Password := FieldByName('Password').AsString;
233      AdminRole := FieldByName('Admin').AsBoolean;
234    end;
235  end;
236
237 begin
238    if FLoading then Exit;
239    IBSecurityService1.Active := true;
240    case UserList.State of
241    dsEdit:
242      begin
243        SetParams;
244        IBSecurityService1.ModifyUser;
245      end;
246    dsInsert:
247      begin
248        SetParams;
249        IBSecurityService1.AddUser;
250      end;
251    end;
252    while IBSecurityService1.IsServiceRunning do;
253 end;
254
255 procedure TListUsersForm.DoRefresh(Data: PtrInt);
256 begin
257  UserList.Active := false;
258  UserList.Active := true;
259 end;
260
148   end.
149  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines