git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.UserControl@16 970f2627-a9d2-4748-b3d4-b5283c4fe7db
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.
|