Componentes.Terceros.UserCo.../official/2.20/Source/IncUser_U.pas

248 lines
7.1 KiB
ObjectPascal
Raw Blame History

unit IncUser_U;
interface
{$I 'UserControl.inc'}
uses
{$IFDEF DELPHI5_UP}
Variants,
{$ENDIF}
Buttons,
Classes,
Controls,
DB,
DBCtrls,
Dialogs,
ExtCtrls,
Forms,
Graphics,
Messages,
StdCtrls,
SysUtils,
UCBase,
Windows,
Spin;
type
TfrmIncluirUsuario = class(TForm)
Panel1: TPanel;
LbDescricao: TLabel;
Image1: TImage;
Panel3: TPanel;
btGravar: TBitBtn;
btCancela: TBitBtn;
Panel2: TPanel;
lbNome: TLabel;
EditNome: TEdit;
lbLogin: TLabel;
EditLogin: TEdit;
lbEmail: TLabel;
EditEmail: TEdit;
ckPrivilegiado: TCheckBox;
lbPerfil: TLabel;
ComboPerfil: TDBLookupComboBox;
btlimpa: TSpeedButton;
ckUserExpired: TCheckBox;
LabelExpira: TLabel;
SpinExpira: TSpinEdit;
LabelDias: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btCancelaClick(Sender: TObject);
procedure btGravarClick(Sender: TObject);
function GetNewIdUser: Integer;
procedure btlimpaClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ckUserExpiredClick(Sender: TObject);
private
FormSenha : TCustomForm;
{ Private declarations }
public
{ Public declarations }
FAltera: Boolean;
FUserControl: TUserControl;
end;
implementation
uses
CadUser_U,
SenhaForm_U;
{$R *.dfm}
procedure TfrmIncluirUsuario.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmIncluirUsuario.FormCreate(Sender: TObject);
begin
Self.BorderIcons := [];
Self.BorderStyle := bsDialog;
end;
procedure TfrmIncluirUsuario.btCancelaClick(Sender: TObject);
begin
Close;
end;
procedure TfrmIncluirUsuario.btGravarClick(Sender: TObject);
var
vNovaSenha: String;
vNome: String;
vLogin: String;
vEmail: String;
vUserExpired : Integer;
vNovoIDUsuario: Integer;
vPerfil: Integer;
vPrivilegiado: Boolean;
begin
btGravar.Enabled := False;
with FUserControl do
if not FAltera then
begin // inclui user
if Self.FUserControl.ExisteUsuario(EditLogin.Text) then
begin
MessageDlg(Format(FUserControl.UserSettings.CommonMessages.UsuarioExiste, [EditLogin.Text]), mtWarning, [mbOK], 0);
Exit;
end;
FormSenha := TSenhaForm.Create( Self );
TSenhaForm(FormSenha).Position := UserSettings.WindowsPosition;
TSenhaForm(FormSenha).fUserControl := fUserControl;
TSenhaForm(FormSenha).Caption := Format(FUserControl.UserSettings.ResetPassword.WindowCaption, [ EditLogin.Text ]);
If TSenhaForm(FormSenha).ShowModal <> mrok then
Begin
btGravar.Enabled := True;
Exit;
End;
vNovaSenha := TSenhaForm(FormSenha).edtSenha.Text;
vNovoIDUsuario := GetNewIdUser;
vNome := EditNome.Text;
vLogin := EditLogin.Text;
vEmail := EditEmail.Text;
FreeAndNil( FormSenha );
if ComboPerfil.KeyValue = null then
vPerfil := 0
else
vPerfil := ComboPerfil.KeyValue;
vPrivilegiado := ckPrivilegiado.Checked;
vUserExpired := StrToInt(BoolToStr(ckUserExpired.Checked));
AddUser(vLogin, vNovaSenha, vNome, vEmail, vPerfil, vUserExpired, SpinExpira.Value, vPrivilegiado);
{ TODO -oLuiz -cUpgrade : Consertar a Senha para poder avisar MD5 }
if (Assigned(MailUserControl)) and (MailUserControl.AdicionaUsuario.Ativo) then
try
MailUserControl.EnviaEmailAdicionaUsuario(vNome, vLogin, Encrypt(vNovaSenha, EncryptKey), vEmail, IntToStr(vPerfil), EncryptKey);
except
on E: Exception do
Log(E.Message, llMedio);
end;
end
else
begin // alterar user
vNovoIDUsuario := TfrmCadastrarUsuario(Self.Owner).FDataSetCadastroUsuario.FieldByName('IdUser').AsInteger;
vNome := EditNome.Text;
vLogin := EditLogin.Text;
vEmail := EditEmail.Text;
if ComboPerfil.KeyValue = null then
vPerfil := 0
else
vPerfil := ComboPerfil.KeyValue;
vUserExpired := StrToInt(BoolToStr(ckUserExpired.Checked)); //Added by Petrus van Breda 28/04/2007
vPrivilegiado := ckPrivilegiado.Checked;
ChangeUser(vNovoIDUsuario, vLogin, vNome, vEmail, vPerfil,vUserExpired , SpinExpira.Value, vPrivilegiado);
{ TODO -oLuiz -cUpgrade : Consertar a Senha para poder avisar MD5 }
if (Assigned(MailUserControl)) and (MailUserControl.AlteraUsuario.Ativo) then
try
MailUserControl.EnviaEmailAlteraUsuario(vNome,
vLogin,
TfrmCadastrarUsuario(Self.Owner).FDataSetCadastroUsuario.FieldByName('SENHA').AsString,
vEmail,
IntToStr(vPerfil),
EncryptKey);
except
on E: Exception do
Log(E.Message, 2);
end;
end;
TfrmCadastrarUsuario(Owner).FDataSetCadastroUsuario.Close;
TfrmCadastrarUsuario(Owner).FDataSetCadastroUsuario.Open;
TfrmCadastrarUsuario(Owner).FDataSetCadastroUsuario.Locate('idUser', vNovoIDUsuario, []);
Close;
end;
function TfrmIncluirUsuario.GetNewIdUser: Integer;
var
DataSet: TDataset;
SQLStmt: String;
begin
with FUserControl do
begin
SQLStmt := Format('SELECT %s.%s FROM %s ORDER BY %s DESC',
[TableUsers.TableName,
TableUsers.FieldUserID,
TableUsers.TableName,
TableUsers.FieldUserID]);
try
DataSet := DataConnector.UCGetSQLDataSet(SQLStmt);
Result := DataSet.Fields[0].AsInteger + 1;
DataSet.Close;
finally
SysUtils.FreeAndNil(DataSet);
end;
end;
end;
procedure TfrmIncluirUsuario.btLimpaClick(Sender: TObject);
begin
ComboPerfil.KeyValue := NULL;
end;
procedure TfrmIncluirUsuario.FormShow(Sender: TObject);
begin
if not FUserControl.UserProfile.Active then
begin
lbPerfil.Visible := False;
ComboPerfil.Visible := False;
btLimpa.Visible := False;
end
else
begin
ComboPerfil.ListSource.DataSet.Close;
ComboPerfil.ListSource.DataSet.Open;
end;
If FUserControl.Login.ActiveDateExpired = true then //Op<4F><70>o de senha so deve aparecer qdo setada como true no componente By Vicente Barros Leonel
ckPrivilegiado.Visible := FUserControl.User.UsePrivilegedField
else
ckUserExpired.Visible := False;
EditLogin.CharCase := Self.FUserControl.Login.CharCaseUser;
SpinExpira.Visible := ckUserExpired.Visible;
LabelExpira.Visible := ckUserExpired.Visible;
LabelDias.Visible := ckUserExpired.Visible;
if (FUserControl.User.ProtectAdministrator) and (EditLogin.Text = FUserControl.Login.InitialLogin.User) then
EditLogin.Enabled := False;
end;
procedure TfrmIncluirUsuario.ckUserExpiredClick(Sender: TObject);
begin
SpinExpira.Enabled := ckUserExpired.Checked;
end;
end.