Topic: Отдельная форма для пользователей с разными правами.

Добрый день, пытаюсь по вашим примерам собрать некоторую конструкцию. Собрал авторизацию на MySQL и с MD5. Пытаюсь сделать так чтобы при входе админа он попадал на свою форму, а пользователь соответственно на свою. В таблице пользователей есть поле admin (ДА/НЕТ), но что то не выходит его оттуда вытянуть, либо я не понимаю что то. Вот скрипт отвечающий за авторизацию, который у меня на данный момент.

procedure frmLogin_ButtonLogin_OnClick (Sender: string; var Cancel: boolean);
var
  iniFile:TIniFile;
  sHash: string;
  uPerm: string;
  begin
     ConnectToServer;
     if frmLogin.MySQLConnection.Connected then
     begin
        // проверяем пользователя...
        // получить хеш пароля
        sHash := VarToStr( SQLExecute('SELECT password FROM users WHERE (login = ''' + frmLogin.EditLogin.Text + ''');') );
        // сравнить хэш
        if sHash = StrToMD5(frmLogin.EditPassword.Text) then
        begin
           // получение да/нет значения из поля adminEX для текущего пользователя
           uPerm := VarToStr( SQLExecute('SELECT adminEX FROM users WHERE (login = ''' + frmLogin.EditLogin.Text + ''');') );
           if uPerm = '0' then
           begin
              // значение 0=false открыть форму для пользователя
              frmLogin.Hide;
              frmUser.ShowModal;
           end
           else
           begin
              // значение 1=true откыть форму для админа
              frmLogin.Hide;
              frmAdmin.ShowModal;
           end;
        end
        else
        begin
           // пароль не совпал со значением в базе данных
           ShowMessage('Неверное имя пользователя или пароль!');
           frmLogin.MySQLConnection.Disconnect;
        end;
     end
     else
        ShowMessage('Не удалось подключиться к базе данных');
end;

Все части скрипта работают кроме той что отвечает за выбор формы. Тупо кидает на форму админа и пользователей и админа.

Re: Отдельная форма для пользователей с разными правами.

после этой строки

uPerm := VarToStr( SQLExecute('SELECT adminEX FROM users WHERE (login = ''' + frmLogin.EditLogin.Text + ''');') );

добавьте строку

ShowMessage(uPerm);

таким образом, вы сможете увидеть, какое значение содержится в переменной uPerm


Также можете приложить ваш проект (zip файл без exe и dll), протестирую.

Dmitry.

3 (edited by i.reijii 2018-06-05 15:31:50)

Re: Отдельная форма для пользователей с разными правами.

Выходит что значение содержится "True" и "False" а не 0 и 1 как я думал, осталось теперь понять как это использовать.

Не хватает прав прикрепить файл видимо, кинул на яндекс https://yadi.sk/d/9vHbqHb_3XAVgm


Заменил строчку if uPerm = '1' then   на if uPerm = ('True') then и заработало.

Спасибо за помощь)