1 (edited by zloyzender 2019-01-11 13:52:05)

Topic: проблемы с MySQL

Добрый день, столкнулся с такой проблемой, сделал разграничения по логинам ( 3 разных типа групп), нужно чтобы при разных группах были видимы или не видимы некоторые кнопки, в версии с SQLLite все работает как надо, при подключении базы через MySQL работает только для для группы admin, а для teradmin распростроняется на всех пользователей.
Проэкт приложить не могу архив весит 4,3 Мб, ваш сервер выдает "Выбранный файл слишком велик. Сервер отклонил загрузку."

   sUser: string = '';
   idUPF: integer;

procedure Start_OnShow (Sender: string; Action: string);
    begin
         Start.Pas.PasswordChar := '*';
    end;

procedure Form1_OnClose (Sender: string; Action: string);
    begin
        Start.Close;
    end;

  procedure MemUser (Sender: string; var Key: Word; Shift, Alt, Ctrl: boolean);
begin
    DobUser.Key.Text:= StrToMD5(DobUser.AddPas.Text);
end;

procedure Start_bLogin_OnClick (Sender: string; var Cancel: boolean);
    var
       sHash: string;
       s: string;
    begin
         //
     // SQL query get hash of password
     sHash := VarToStr( SQLExecute('SELECT Password FROM BEZOP WHERE (Login = ''' + Start.Login.Text + ''');') );


     // if the hash in the database = hash of entered a password
     if sHash = StrToMD5(Start.Pas.Text) then//

                                                     
         begin
              sUser := Start.Login.Text; // Запомнить имя пользователя             

              Form1.TableSr.dbPopupMenu.Items.Items[0].Enabled := False;// отключение двойного клика в таблице на Form1

              // Administrator?
              // check admin rights
              // Кнопки видимые только для администратора, и терадминистратора
              s := VarToStr( SQLExecute('SELECT `admin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then Form1.Custom.Visible:=False;
              s := VarToStr( SQLExecute('SELECT `teradmin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then Form1.RedakPr.Visible:=False;
              s := VarToStr( SQLExecute('SELECT `teradmin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then  Form1.UdalitPr.Visible:=False;
              s := VarToStr( SQLExecute('SELECT `teradmin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then  Form1.Import.Visible:=False;
              s := VarToStr( SQLExecute('SELECT `teradmin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then  Form1.UpfSr.Visible:=False;
              s := VarToStr( SQLExecute('SELECT `teradmin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then  RabotaSPredp.DelEv.Visible:=False;
              // if the user does not have administrator privileges, deactivate the button to create other users

              idUPF := SQLExecute('SELECT IFNULL(id_UPF, 0) FROM BEZOP WHERE (login = ''' + sUser + ''');');

              // hide records for manager who from another departament
              if (idUPF<>0) then Form1.TableSr.dbFilter := 'id_UPF='+IntToStr(idUPF);

              Form1.Caption := 'Пользователь: ' + sUser; // отображение имя пользователя на форме 1
              Start.Hide; // close login form
              Form1.Show; //показать Form 1
         end
     else MessageDlg('Неверно введен логин или параль', mtError, mbOk, 0); // Сообщение при неверном логине и пароле

    end;

Re: проблемы с MySQL

s := VarToStr( SQLExecute('SELECT `admin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then
               begin
                   Form1.Custom.Visible:=False;
                   Form1.RedakPr.Visible:=False;
                   Form1.UdalitPr.Visible:=False;
                   Form1.Import.Visible:=False;
                   Form1.UpfSr.Visible:=False;
                  RabotaSPredp.DelEv.Visible:=False;
             end;
сам проект было бы лучше....

Re: проблемы с MySQL

zloyzender wrote:

Проэкт приложить не могу архив весит 4,3 Мб, ваш сервер выдает "Выбранный файл слишком велик. Сервер отклонил загрузку."

Выложите на файлообменнике, на Гугле, например, а здесь скиньте ссылку на файл.

http://b.link/besthost Надежный хостинг по выгодным ценам.

Re: проблемы с MySQL

Удалите из проекта exe и dll файлы, затем заархивируйте.

Dmitry.

5 (edited by zloyzender 2019-01-14 07:16:26)

Re: проблемы с MySQL

sibprogsistem wrote:

s := VarToStr( SQLExecute('SELECT `admin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if s='0' then
               begin
                   Form1.Custom.Visible:=False;
                   Form1.RedakPr.Visible:=False;
                   Form1.UdalitPr.Visible:=False;
                   Form1.Import.Visible:=False;
                   Form1.UpfSr.Visible:=False;
                  RabotaSPredp.DelEv.Visible:=False;
             end;
сам проект было бы лучше....

так пробовал но мне надо  "Form1.Custom.Visible:=False;" чтобы работала для пользователей типа "admin", а все остальные для пользователя "teradmin", а для остальных эти кнопки были невидимы.
А у меня выходит что для админа все работает как надо, а условия для терадмина распространяются как на терадмина так и на остальных юзеров

6 (edited by sibprogsistem 2019-01-14 07:37:28)

Re: проблемы с MySQL

zloyzender wrote:

так пробовал но мне надо  "Form1.Custom.Visible:=False;" чтобы работала для пользователей типа "admin", а все остальные для пользователя "teradmin", а для остальных эти кнопки были невидимы.
А у меня выходит что для админа все работает как надо, а условия для терадмина распространяются как на терадмина так и на остальных юзеров

у вас проверка только на администратора работает,  так можно только да или нет проверить

загрузите проект.

7 (edited by sibprogsistem 2019-01-14 08:17:15)

Re: проблемы с MySQL

вот вырезанная час авторизации из моего проекта

Post's attachments

Attachment icon authorization.7z 164.04 kb, 280 downloads since 2019-01-14 

Re: проблемы с MySQL

sibprogsistem wrote:
zloyzender wrote:

так пробовал но мне надо  "Form1.Custom.Visible:=False;" чтобы работала для пользователей типа "admin", а все остальные для пользователя "teradmin", а для остальных эти кнопки были невидимы.
А у меня выходит что для админа все работает как надо, а условия для терадмина распространяются как на терадмина так и на остальных юзеров

у вас проверка только на администратора работает,  так можно только да или нет проверить

загрузите проект.

Post's attachments

Attachment icon база данных ПФ 4.zip 741.05 kb, 289 downloads since 2019-01-14 

Re: проблемы с MySQL

procedure Start_bLogin_OnClick (Sender: string; var Cancel: boolean);
    var
       sHash: string;
       sA,sT,sU: string;
    begin
         //
     // SQL query get hash of password
     sHash := VarToStr( SQLExecute('SELECT Password FROM BEZOP WHERE (Login = ''' + Start.Login.Text + ''');') );


     // if the hash in the database = hash of entered a password
     if sHash = StrToMD5(Start.Pas.Text) then//


         begin
              sUser := Start.Login.Text; // Запомнить имя пользователя             

              Form1.TableSr.dbPopupMenu.Items.Items[0].Enabled := False;// отключение двойного клика в таблице на Form1

              // Administrator?
              // check admin rights
              // Кнопки видимые только для администратора, и терадминистратора
              sA := VarToStr( SQLExecute('SELECT `admin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if sA='1' then
               begin
               Form1.RedakPr.Visible:=False;
               Form1.UdalitPr.Visible:=False;
               Form1.Import.Visible:=False;
               Form1.UpfSr.Visible:=False;
               RabotaSPredp.DelEv.Visible:=False;
               end;
              sT := VarToStr( SQLExecute('SELECT `teradmin` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if sT='1' then
               begin
               Form1.Custom.Visible:=False;
               end;
              sU := VarToStr( SQLExecute('SELECT `user` FROM BEZOP WHERE (login = ''' + sUser + ''');') );
              if sU='1' then
               begin
               Form1.Custom.Visible:=False;
               Form1.RedakPr.Visible:=False;
               Form1.UdalitPr.Visible:=False;
               Form1.Import.Visible:=False;
               Form1.UpfSr.Visible:=False;
               RabotaSPredp.DelEv.Visible:=False;
               end;
              // if the user does not have administrator privileges, deactivate the button to create other users

              idUPF := SQLExecute('SELECT IFNULL(id_UPF, 0) FROM BEZOP WHERE (login = ''' + sUser + ''');');

              // hide records for manager who from another departament
              if (idUPF<>0) then Form1.TableSr.dbFilter := 'id_UPF='+IntToStr(idUPF);

              Form1.Caption := 'Пользователь: ' + sUser; // отображение имя пользователя на форме 1
              Start.Hide; // close login form
              Form1.Show; //показать Form 1
         end
     else MessageDlg('Неверно введен логин или параль', mtError, mbOk, 0); // Сообщение при неверном логине и пароле

    end;
Post's attachments

Attachment icon 1222222.7z 227.34 kb, 287 downloads since 2019-01-14