327 lines
12 KiB
ObjectPascal
327 lines
12 KiB
ObjectPascal
|
|
unit pUCFrame_User;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
{$I 'UserControl.inc'}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
{$IFDEF DELPHI5_UP}
|
|||
|
|
{$ELSE}
|
|||
|
|
Variants,
|
|||
|
|
{$ENDIF}
|
|||
|
|
Buttons,
|
|||
|
|
Classes,
|
|||
|
|
Controls,
|
|||
|
|
Db,
|
|||
|
|
DBGrids,
|
|||
|
|
Dialogs,
|
|||
|
|
ExtCtrls,
|
|||
|
|
Forms,
|
|||
|
|
Graphics,
|
|||
|
|
Grids,
|
|||
|
|
IncUser_U,
|
|||
|
|
Messages,
|
|||
|
|
SenhaForm_U,
|
|||
|
|
StdCtrls,
|
|||
|
|
SysUtils,
|
|||
|
|
UcBase,
|
|||
|
|
UserPermis_U,
|
|||
|
|
Windows;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TUCFrame_User = class(TFrame)
|
|||
|
|
Panel3: TPanel;
|
|||
|
|
btAdic: TBitBtn;
|
|||
|
|
BtAlt: TBitBtn;
|
|||
|
|
BtExclui: TBitBtn;
|
|||
|
|
BtAcess: TBitBtn;
|
|||
|
|
BtnClose: TBitBtn;
|
|||
|
|
BtPass: TBitBtn;
|
|||
|
|
DbGridUser: TDBGrid;
|
|||
|
|
DataUser: TDataSource;
|
|||
|
|
DataPerfil: TDataSource;
|
|||
|
|
procedure btAdicClick(Sender: TObject);
|
|||
|
|
procedure BtAltClick(Sender: TObject);
|
|||
|
|
procedure BtAcessClick(Sender: TObject);
|
|||
|
|
procedure BtPassClick(Sender: TObject);
|
|||
|
|
procedure BtExcluiClick(Sender: TObject);
|
|||
|
|
protected
|
|||
|
|
FormSenha: TCustomForm;
|
|||
|
|
FfrmIncluirUsuario: TfrmIncluirUsuario;
|
|||
|
|
procedure SetWindowUserProfile;
|
|||
|
|
procedure SetWindowUser(Adicionar: Boolean);
|
|||
|
|
procedure ActionBtPermissUserDefault;
|
|||
|
|
procedure FDataSetCadastroUsuarioAfterScroll(DataSet: TDataSet);
|
|||
|
|
private
|
|||
|
|
{ Private declarations }
|
|||
|
|
public
|
|||
|
|
FUsercontrol: TUserControl;
|
|||
|
|
FDataSetCadastroUsuario: TDataset;
|
|||
|
|
procedure SetWindow;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
{ Public declarations }
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
UCMessages;
|
|||
|
|
|
|||
|
|
{$R *.dfm}
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.btAdicClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
FfrmIncluirUsuario := TfrmIncluirUsuario.Create(Self);
|
|||
|
|
FfrmIncluirUsuario.FUsercontrol := Self.FUsercontrol;
|
|||
|
|
SetWindowUser(True);
|
|||
|
|
FfrmIncluirUsuario.ShowModal;
|
|||
|
|
FreeAndNil(FfrmIncluirUsuario);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.BtAltClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if FDataSetCadastroUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
FfrmIncluirUsuario := TfrmIncluirUsuario.Create(Self);
|
|||
|
|
FfrmIncluirUsuario.FUsercontrol := Self.FUsercontrol;
|
|||
|
|
SetWindowUser(False);
|
|||
|
|
with FfrmIncluirUsuario do
|
|||
|
|
begin
|
|||
|
|
FAltera := True;
|
|||
|
|
vNovoIDUsuario := FDataSetCadastroUsuario.FieldByName('IdUser').AsInteger;
|
|||
|
|
EditNome.Text := FDataSetCadastroUsuario.FieldByName('Nome').AsString;
|
|||
|
|
EditLogin.Text := FDataSetCadastroUsuario.FieldByName('Login').AsString;
|
|||
|
|
EditEmail.Text := FDataSetCadastroUsuario.FieldByName('Email').AsString;
|
|||
|
|
ComboPerfil.KeyValue := FDataSetCadastroUsuario.FieldByName('Perfil').AsInteger;
|
|||
|
|
ckPrivilegiado.Checked := StrToBool(FDataSetCadastroUsuario.FieldByName('Privilegiado').AsString);
|
|||
|
|
ckUserExpired.Checked := StrToBool(FDataSetCadastroUsuario.FieldByName('UserNaoExpira').AsString);
|
|||
|
|
SpinExpira.Value := FDataSetCadastroUsuario.FieldByName('DaysOfExpire').AsInteger;
|
|||
|
|
ComboStatus.ItemIndex := FDataSetCadastroUsuario.FieldByName('UserInative').AsInteger;
|
|||
|
|
if FfrmIncluirUsuario.ComboStatus.Enabled then
|
|||
|
|
FfrmIncluirUsuario.ComboStatus.Enabled := not ((FUsercontrol.User.ProtectAdministrator) and
|
|||
|
|
(FDataSetCadastroUsuario.FieldByName('Login').AsString = FUsercontrol.Login.InitialLogin.User));
|
|||
|
|
ShowModal;
|
|||
|
|
end;
|
|||
|
|
FreeAndNil(FfrmIncluirUsuario);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.BtExcluiClick(Sender: TObject);
|
|||
|
|
var
|
|||
|
|
TempID: Integer;
|
|||
|
|
CanDelete: Boolean;
|
|||
|
|
ErrorMsg: String;
|
|||
|
|
begin
|
|||
|
|
if FDataSetCadastroUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
TempID := FDataSetCadastroUsuario.FieldByName('IDUser').AsInteger;
|
|||
|
|
if MessageBox(Handle, PChar(Format(FUsercontrol.UserSettings.UsersForm.PromptDelete, [FDataSetCadastroUsuario.FieldByName('Login').AsString])),
|
|||
|
|
PChar(FUsercontrol.UserSettings.UsersForm.PromptDelete_WindowCaption), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = idYes then
|
|||
|
|
begin
|
|||
|
|
CanDelete := True;
|
|||
|
|
if Assigned(FUsercontrol.onDeleteUser) then
|
|||
|
|
FUsercontrol.onDeleteUser(TObject(Owner), TempID, CanDelete, ErrorMsg);
|
|||
|
|
if not CanDelete then
|
|||
|
|
begin
|
|||
|
|
MessageDlg(ErrorMSG, mtWarning, [mbOK], 0);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
FUsercontrol.DataConnector.UCExecSQL('Delete from ' + FUsercontrol.TableRights.TableName + ' where ' +
|
|||
|
|
FUsercontrol.TableRights.FieldUserID + ' = ' + IntToStr(TempID));
|
|||
|
|
FUsercontrol.DataConnector.UCExecSQL('Delete from ' + FUsercontrol.TableUsers.TableName + ' where ' +
|
|||
|
|
FUsercontrol.TableUsers.FieldUserID + ' = ' + IntToStr(TempID));
|
|||
|
|
FDataSetCadastroUsuario.Close;
|
|||
|
|
FDataSetCadastroUsuario.Open;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.BtPassClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if FDataSetCadastroUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
FormSenha := TSenhaForm.Create(Self);
|
|||
|
|
TSenhaForm(FormSenha).Position := FUsercontrol.UserSettings.WindowsPosition;
|
|||
|
|
TSenhaForm(FormSenha).FUsercontrol := FUsercontrol;
|
|||
|
|
TSenhaForm(FormSenha).Caption := Format(FUsercontrol.UserSettings.ResetPassword.WindowCaption,
|
|||
|
|
[FDataSetCadastroUsuario.FieldByName('Login').AsString]);
|
|||
|
|
if TSenhaForm(FormSenha).ShowModal = mrOk then
|
|||
|
|
Begin
|
|||
|
|
|
|||
|
|
(*
|
|||
|
|
if (Assigned(FUsercontrol.MailUserControl)) and (FUsercontrol.MailUserControl.SenhaForcada.Ativo ) then
|
|||
|
|
try
|
|||
|
|
FUsercontrol.MailUserControl.EnviaEmailSenhaForcada(
|
|||
|
|
FDataSetCadastroUsuario.FieldByName('NOME').AsString ,
|
|||
|
|
FDataSetCadastroUsuario.FieldByName('LOGIN').AsString,
|
|||
|
|
TSenhaForm(FormSenha).edtSenha.Text ,
|
|||
|
|
FDataSetCadastroUsuario.FieldByName('EMAIL').AsString,
|
|||
|
|
'');
|
|||
|
|
|
|||
|
|
except
|
|||
|
|
on E : Exception do FUsercontrol.Log(e.Message, 0);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
*)
|
|||
|
|
FUsercontrol.ChangePassword(FDataSetCadastroUsuario.FieldByName('IDUser').AsInteger, TSenhaForm(FormSenha).edtSenha.Text);
|
|||
|
|
End;
|
|||
|
|
FreeAndNil(FormSenha);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TUCFrame_User.Destroy;
|
|||
|
|
begin
|
|||
|
|
//nada a destruir
|
|||
|
|
//n<>o destruir o FDataSetCadastroUsuario o USERCONTROL toma conta dele
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.BtAcessClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if FDataSetCadastroUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
UserPermis := TUserPermis.Create(self);
|
|||
|
|
UserPermis.FUsercontrol := FUsercontrol;
|
|||
|
|
SetWindowUserProfile;
|
|||
|
|
UserPermis.lbUser.Caption := FDataSetCadastroUsuario.FieldByName('Login').AsString;
|
|||
|
|
ActionBtPermissUserDefault;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.SetWindowUserProfile;
|
|||
|
|
begin
|
|||
|
|
with FUsercontrol.UserSettings.Rights do
|
|||
|
|
begin
|
|||
|
|
UserPermis.Caption := WindowCaption;
|
|||
|
|
UserPermis.LbDescricao.Caption := LabelUser;
|
|||
|
|
UserPermis.lbUser.Left := UserPermis.LbDescricao.Left + UserPermis.LbDescricao.Width + 5;
|
|||
|
|
UserPermis.PageMenu.Caption := PageMenu;
|
|||
|
|
UserPermis.PageAction.Caption := PageActions;
|
|||
|
|
UserPermis.PageControls.Caption := PageControls; // By Vicente Barros Leonel
|
|||
|
|
UserPermis.BtLibera.Caption := BtUnlock;
|
|||
|
|
UserPermis.BtBloqueia.Caption := BtLOck;
|
|||
|
|
UserPermis.BtGrava.Caption := BtSave;
|
|||
|
|
UserPermis.BtCancel.Caption := BtCancel;
|
|||
|
|
UserPermis.Position := FUsercontrol.UserSettings.WindowsPosition;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.ActionBtPermissUserDefault;
|
|||
|
|
var
|
|||
|
|
TempCampos, TempCamposEX: String;
|
|||
|
|
begin
|
|||
|
|
UserPermis.FTempIdUser := FDataSetCadastroUsuario.FieldByName('IdUser').AsInteger;
|
|||
|
|
with FUsercontrol do
|
|||
|
|
begin
|
|||
|
|
TempCampos := Format(' %s as IdUser, %s as Modulo, %s as ObjName, %s as UCKey ', [TableRights.FieldUserID,
|
|||
|
|
TableRights.FieldModule, TableRights.FieldComponentName, TableRights.FieldKey]);
|
|||
|
|
TempCamposEX := Format(' %s, %s as FormName ', [TempCampos, TableRights.FieldFormName]);
|
|||
|
|
|
|||
|
|
UserPermis.DSPermiss := DataConnector.UCGetSQLDataset(Format('SELECT %s FROM %s TAB WHERE TAB.%s = %s AND TAB.%s = %s',
|
|||
|
|
[TempCampos, TableRights.TableName, TableRights.FieldUserID, FDataSetCadastroUsuario.FieldByName('IdUser').AsString,
|
|||
|
|
TableRights.FieldModule, QuotedStr(ApplicationID)]));
|
|||
|
|
UserPermis.DSPermiss.Open;
|
|||
|
|
|
|||
|
|
UserPermis.DSPermissEX := DataConnector.UCGetSQLDataset(Format('SELECT %s FROM %s TAB1 WHERE TAB1.%s = %s AND TAB1.%s = %s',
|
|||
|
|
[TempCamposEX, TableRights.TableName + 'EX', TableRights.FieldUserID, FDataSetCadastroUsuario.FieldByName('IdUser').AsString,
|
|||
|
|
TableRights.FieldModule, QuotedStr(ApplicationID)]));
|
|||
|
|
UserPermis.DSPermissEX.Open;
|
|||
|
|
|
|||
|
|
UserPermis.DSPerfil := DataConnector.UCGetSQLDataset(Format('Select %s from %s tab Where tab.%s = %s and tab.%s = %s',
|
|||
|
|
[TempCampos, TableRights.TableName, TableRights.FieldUserID, FDataSetCadastroUsuario.FieldByName('Perfil').AsString,
|
|||
|
|
TableRights.FieldModule, QuotedStr(ApplicationID)]));
|
|||
|
|
UserPermis.DSPerfil.Open;
|
|||
|
|
|
|||
|
|
UserPermis.DSPerfilEX := DataConnector.UCGetSQLDataset(Format('Select %s from %s tab1 Where tab1.%s = %s and tab1.%s = %s',
|
|||
|
|
[TempCamposEX, TableRights.TableName + 'EX', TableRights.FieldUserID, FDataSetCadastroUsuario.FieldByName('Perfil').AsString,
|
|||
|
|
TableRights.FieldModule, QuotedStr(ApplicationID)]));
|
|||
|
|
|
|||
|
|
UserPermis.DSPerfilEX.Open;
|
|||
|
|
|
|||
|
|
UserPermis.ShowModal;
|
|||
|
|
|
|||
|
|
FDataSetCadastroUsuario.Close;
|
|||
|
|
FDataSetCadastroUsuario.Open;
|
|||
|
|
|
|||
|
|
FDataSetCadastroUsuario.Locate('idUser', UserPermis.FTempIdUser, []);
|
|||
|
|
|
|||
|
|
FreeAndNil(UserPermis);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.FDataSetCadastroUsuarioAfterScroll(DataSet: TDataSet);
|
|||
|
|
begin
|
|||
|
|
if (FUsercontrol.User.ProtectAdministrator) and (Dataset.FieldByName('Login').AsString = FUsercontrol.Login.InitialLogin.User) then
|
|||
|
|
begin
|
|||
|
|
BtExclui.Enabled := False;
|
|||
|
|
BtPass.Enabled := False;
|
|||
|
|
if FUsercontrol.CurrentUser.Username <> FUsercontrol.Login.InitialLogin.User then
|
|||
|
|
BtAcess.Enabled := False;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
BtExclui.Enabled := True;
|
|||
|
|
BtPass.Enabled := True;
|
|||
|
|
BtAcess.Enabled := True;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.SetWindow;
|
|||
|
|
begin
|
|||
|
|
FDataSetCadastroUsuario.AfterScroll := FDataSetCadastroUsuarioAfterScroll;
|
|||
|
|
FDataSetCadastroUsuarioAfterScroll(FDataSetCadastroUsuario);
|
|||
|
|
with FUsercontrol.UserSettings.UsersForm do
|
|||
|
|
begin
|
|||
|
|
DbGridUser.Columns[0].Title.Caption := ColName;
|
|||
|
|
DbGridUser.Columns[1].Title.Caption := ColLogin;
|
|||
|
|
DbGridUser.Columns[2].Title.Caption := ColEmail;
|
|||
|
|
|
|||
|
|
btAdic.Caption := BtAdd;
|
|||
|
|
BtAlt.Caption := BtChange;
|
|||
|
|
BtExclui.Caption := BtDelete;
|
|||
|
|
BtAcess.Caption := BtRights;
|
|||
|
|
BtPass.Caption := BtPassword;
|
|||
|
|
BtnClose.Caption := BtClose;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TUCFrame_User.SetWindowUser(Adicionar: Boolean);
|
|||
|
|
begin
|
|||
|
|
with FUsercontrol.UserSettings.AddChangeUser do
|
|||
|
|
begin
|
|||
|
|
FfrmIncluirUsuario.Caption := WindowCaption;
|
|||
|
|
if Adicionar then
|
|||
|
|
FfrmIncluirUsuario.LbDescricao.Caption := LabelAdd
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
FfrmIncluirUsuario.LbDescricao.Caption := LabelChange;
|
|||
|
|
FfrmIncluirUsuario.LbDescricao.Tag := FDataSetCadastroUsuario.FieldByName('IdUser').AsInteger;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
FfrmIncluirUsuario.FDataSetCadastroUsuario := DataUser.DataSet;
|
|||
|
|
FfrmIncluirUsuario.Label1.Caption := LabelStatus;
|
|||
|
|
FfrmIncluirUsuario.lbNome.Caption := LabelName;
|
|||
|
|
FfrmIncluirUsuario.lbLogin.Caption := LabelLogin;
|
|||
|
|
FfrmIncluirUsuario.lbEmail.Caption := LabelEmail;
|
|||
|
|
FfrmIncluirUsuario.ckPrivilegiado.Caption := CheckPrivileged;
|
|||
|
|
FfrmIncluirUsuario.lbPerfil.Caption := LabelPerfil;
|
|||
|
|
FfrmIncluirUsuario.btGravar.Caption := BtSave;
|
|||
|
|
FfrmIncluirUsuario.btCancela.Caption := BtCancel;
|
|||
|
|
FfrmIncluirUsuario.Position := Self.FUsercontrol.UserSettings.WindowsPosition;
|
|||
|
|
FfrmIncluirUsuario.LabelExpira.Caption := ExpiredIn;
|
|||
|
|
FfrmIncluirUsuario.LabelDias.Caption := Day;
|
|||
|
|
FfrmIncluirUsuario.ckUserExpired.Caption := CheckExpira;
|
|||
|
|
FfrmIncluirUsuario.ComboPerfil.ListSource := DataPerfil;
|
|||
|
|
FfrmIncluirUsuario.ComboStatus.Enabled := not Adicionar;
|
|||
|
|
with FfrmIncluirUsuario.ComboStatus.Items do
|
|||
|
|
begin
|
|||
|
|
Clear;
|
|||
|
|
Add(StatusActive);
|
|||
|
|
Add(StatusDisabled);
|
|||
|
|
end;
|
|||
|
|
FfrmIncluirUsuario.ComboStatus.ItemIndex := 0;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|