Вот такая у меня получилась авторизация...
procedure frmLogin_bLoginOk_OnClick (Sender: TObject; var Cancel: boolean);
var
s,t,r: string;
sStatus: string;
ini:TIniFile;
begin
ini :=TIniFile.Create(ExtractFilePath (ParamStr (0))+'settings.ini');
t:=ini.ReadString('Options', 'server', '');
// Запрос SQL для проверки пользователя и пароля
s := SQLExecute('SELECT count(id) FROM users WHERE (id = ' + IntToStr(frmLogin.cbStatus.dbItemID) + ') AND (password = ''' + frmLogin.ePassword.Text + ''');');
r:=SQLExecute('SELECT YesNo FROM serverYesNo WHERE id=1');
// если логин выбран
if (frmLogin.cbStatus.dbItemID)<> -1 then
begin
// если поле пароль заполнено
if (frmLogin.ePassword.Text)<>'' then
begin
// если SQL-запрос нашел логин и пароль
if (s <> '0') and (s<>'') then
begin
// если пользователь с таким именем не подключен
if SQLExecute('SELECT online FROM users WHERE id = ' + IntToStr(frmLogin.cbStatus.dbItemID))= '0' then
begin
// проверка сервера
try
// если программа работает с сервером
if (t<>'') then begin
//если сервер не запущен
if (r='0') then MessageBox ('Сервер не запущен','Ошибка подключения ',MB_RETRYCANCEL+MB_ICONINFORMATION)
else begin
try
//скрыть форму авторизации
frmLogin.Hide;
// SQL-запрос прав пользователя
sStatus := SQLExecute('SELECT id_userStatus FROM users WHERE id='+frmLogin.cbStatus.sqlValue);
// если права пользователя * то открыть *
if sStatus = '1' then frmAdmin.Show else //администратор
if sStatus = '2' then frmMasterWork.Show else //мастер
if sStatus = '3' then frmServiceCen.Show ; //менеджер
SQLExecute('UPDATE users SET online="1" WHERE id = ' + IntToStr(frmLogin.cbStatus.dbItemID));
except
//когда не ведома причина
MessageBox ('Неизвестная ошибка','Ошибка подключения ',MB_RETRYCANCEL+MB_ICONINFORMATION);
end;
end ;
end;
// если программа работает без сервера
if (t='') then
begin
try
//скрыть форму авторизации
frmLogin.Hide;
// SQL-запрос прав пользователя
sStatus := SQLExecute('SELECT id_userStatus FROM users WHERE id='+frmLogin.cbStatus.sqlValue);
// если права пользователя * то открыть *
if sStatus = '1' then frmAdmin.Show else //администратор
if sStatus = '2' then frmMasterWork.Show else //мастер
if sStatus = '3' then frmServiceCen.Show ; //менеджер
SQLExecute('UPDATE users SET online="1" WHERE id = ' + IntToStr(frmLogin.cbStatus.dbItemID));
except
//когда не ведома причина
MessageBox ('Неизвестная ошибка','Ошибка подключения ',MB_RETRYCANCEL+MB_ICONINFORMATION);
end;
end;
Finally
end;
// если пара логи и пароль верна, но пользователь уже в сети
end else MessageDlg('Этот пользователь подключен, выбирите другого пользователя ', mtError, mbOk, 0);
// если пара логин и пароль неверна
end else MessageDlg('Пароль неверен', mtError, mbOk, 0);
// если не указан пароль
end else MessageDlg('Укажите пароль', mtError, mbOk, 0);
// если логин не выбран
end else MessageDlg('Выбирите пользователя ', mtError, mbOk, 0);
end;