Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Main;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Login, BidirectionalUserList,
- Vcl.Imaging.pngimage, Vcl.ExtCtrls, AdministratorPageMain, Vcl.StdCtrls, Captcha, EntityUser,
- ConstantsFile, ConstantsRole,
- ManagerAPageMain, ManagerAPageAddEdit, PavilionPageMain, PavilionPageAddEdit,
- AdministatorPageAddEdit;
- type
- TMainForm = class(TForm)
- AdminFrameMain: TAdminFrameMain;
- Panel1: TPanel;
- Image1: TImage;
- Panel2: TPanel;
- Label1: TLabel;
- AdminFrameAdd: TAdminFrameAdd;
- LBCurrentPage: TLabel;
- ManagerAFrameMain: TManagerAFrameMain;
- ManagerAFrameAddEdit: TManagerAFrameAddEdit;
- PavilionFrameMain: TPavilionFrameMain;
- PavilionFrameAddEdit: TPavilionFrameAddEdit;
- Image2: TImage;
- Label2: TLabel;
- procedure AdminFrameMainButtonRecoverClick(Sender: TObject);
- procedure AdminFrameMainBtnDeleteClick(Sender: TObject);
- procedure ManagerAFrameAddEditBtnSaveClick(Sender: TObject);
- procedure ManagerAFrameMainBtnEditClick(Sender: TObject);
- procedure ManagerAFrameMainBtnDeleteClick(Sender: TObject);
- procedure PavilionFrameMainBtnEditClick(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure Image2Click(Sender: TObject);
- private
- { Private declarations }
- procedure CheckLogin;
- function LoginCorrect(Login, Pass : String) : Boolean;
- public
- { Public declarations }
- Constructor Create(AOwner : TComponent); override;
- end;
- var
- MainForm: TMainForm;
- CountIncorrectData : Integer;
- CurrentUser : TUser;
- implementation
- {$R *.dfm}
- uses UnitHelp;
- Function TMainForm.LoginCorrect(Login: string; Pass: string): Boolean;
- var
- I : Integer;
- List : TUserList;
- begin
- List := TUserList.Create;
- LoginCorrect := List.IsCorrectDataAuth(Login, Pass, ConstantsFile.FILE_NAME_USER);
- List.Destroy;
- end;
- procedure TMainForm.ManagerAFrameAddEditBtnSaveClick(Sender: TObject);
- begin
- ManagerAFrameAddEdit.BtnSaveClick(Sender);
- end;
- procedure TMainForm.ManagerAFrameMainBtnDeleteClick(Sender: TObject);
- begin
- ManagerAFrameMain.BtnDeleteClick(Sender);
- end;
- procedure TMainForm.ManagerAFrameMainBtnEditClick(Sender: TObject);
- begin
- ManagerAFrameMain.BtnEditClick(Sender);
- end;
- procedure TMainForm.PavilionFrameMainBtnEditClick(Sender: TObject);
- begin
- PavilionFrameMain.BtnEditClick(Sender);
- end;
- procedure TMainForm.AdminFrameMainBtnDeleteClick(Sender: TObject);
- begin
- AdminFrameMain.BtnDeleteClick(Sender);
- end;
- procedure TMainForm.AdminFrameMainButtonRecoverClick(Sender: TObject);
- begin
- AdminFrameMain.ButtonRecoverClick(Sender);
- end;
- Procedure TMainForm.CheckLogin();
- var
- LoginFormI : TLoginForm;
- List : TUserList;
- CaptchaFormI : TFormCaptcha;
- R : TModalResult;
- Log, Pass : String;
- begin
- CaptchaFormI := TFormCaptcha.Create(NIL); // Инициализция формы Капча
- LoginFormI := TLoginForm.Create(NIL); // Инициализция формы Логин
- List := TUserList.Create; // Инициализация двусвязного списка пользователей
- Try
- Repeat
- R := LoginFormI.ShowModal; // Получение свойства ModalResult от LoginFormI
- if R = mrOk then // Если пользователь нажал на кнопку "ОК"
- begin
- Log := LoginFormI.ELogin. Text;
- Pass := LoginFormI.EPassword.Text;
- try
- if LoginCorrect(Log,Pass) then // Аутентификация
- begin
- CurrentUser := List.GetUserByLogin(Log,ConstantsFile.FILE_NAME_USER);
- if CurrentUser.Role = ConstantsRole.ROLE_ADMIN then // Администратор
- AdminFrameMain.Visible := True;
- if CurrentUser.Role = ConstantsRole.ROLE_MANAGER_A then // Менеджер А
- ManagerAFrameMain.Visible := True;
- if CurrentUser.Role = ConstantsRole.ROLE_DELETED then // Удаленный пользователь
- begin
- Application.MessageBox('Вам отказано в авторизации! Системный администратор удалил ваш профиль. Обратитесь к нему для выяснения ситуации.','Завершение работы программы',MB_OK+MB_ICONWARNING);
- Application.Terminate;
- Abort;
- end;
- Application.MessageBox(PChar(Concat('Здравствуйте, ',CurrentUser.LastName,'! Ваша роль - ', CurrentUser.Role)),'Успешная авторизация',MB_OK+MB_ICONINFORMATION);
- LBCurrentPage.Caption := 'Главная страница';
- break
- end
- else if CountIncorrectData = 3 then // Вызов капчи если пользователь ввел неверно логин/пароль 3 раза
- begin
- Application.MessageBox('Вами было введено больше 3 раза неправильно логин/пароль, пройдите проверку на бота.','CAPTCHA',MB_OK + MB_ICONINFORMATION);
- CaptchaFormI.ShowModal;
- CountIncorrectData := 1;
- end
- else
- begin
- Application.MessageBox('Неверный логин/пароль','Авторизация',MB_OK+MB_ICONWARNING);
- Inc(CountIncorrectData);
- end;
- except
- On E : EAccessViolation do
- begin
- Application.MessageBox(PCHAR('Ошибка доступа к файлу.'),'Завершение работы программы',MB_OK + MB_ICONWARNING);
- Application.Terminate;
- Abort;
- end;
- On E : Exception do
- begin
- Application.MessageBox(PCHAR('Неизвестная ошибка, передайте ее системному администратору: ' + E.Message),'Завершение работы программы',MB_OK + MB_ICONWARNING);
- Application.Terminate;
- Abort;
- end;
- end;
- end;
- Until R = mrCancel;
- if R = mrCancel then // Если пользователь нажал на кнопку "Отмена" в форме LoginForm
- begin
- Application.MessageBox('Отказ от авторизации. Программа завершит свою работу.','Завершение программы', MB_OK + MB_ICONINFORMATION);
- Application.Terminate;
- Abort;
- end;
- Finally
- LoginFormI.Free; // Метод уничтожения формы авторизации
- CaptchaFormI.Free; // Метод уничтожения формы капчи
- List.Destroy; // Метод освобождения памяти
- End;
- end;
- Constructor TMainForm.Create(AOwner: TComponent);
- begin
- CountIncorrectData := 1;
- inherited;
- CheckLogin;
- end;
- procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- begin
- CanClose := Application.MessageBox('Вы действительно желаете закрыть программу?','Закрытие программы', MB_YESNO + MB_ICONQUESTION) = IDYES;
- end;
- procedure TMainForm.Image2Click(Sender: TObject);
- var
- HelpFormNew : THelpForm;
- begin
- HelpFormNew := THelpForm.Create(NIL, CurrentUser.Role);
- HelpFormNew.ShowModal;
- HelpFormNew.Free;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement