Подія, що виникає під час авторизації користувача на сервері.

 

Шаблон події
function OnUserLogin(iCID, iLoginUIN, iLoginState: integer; sLoginIP, sLoginMAC, sLoginHardwareID, sLoginCompName, sLoginVersion, sLoginDomain, sSessionID, sAuthService, sClientType, sRemoteOS: string): boolean;
begin
  // your own code
  result := true;
end;
begin
end.


Замість коментаря може бути будь-який ваш код.

 

Опис параметрів

Параметр

Тип

Значення

iCID

integer

Connection ID клієнта, унікальний сеансовий ідентифікатор в онлайн структурі мережевих підключень до сервера;

iLoginUIN

integer

унікальний ідентифікатор користувача, який намагається авторизуватись на сервері (число >=0);

iLoginState

integer

мережевий статус користувача;

sLoginIP

string

IP адреса користувача;

sLoginMAC

string

MAC адреса мережевого інтерфейсу користувача (тільки для Windows-клієнтів);

sLoginHardwareID

string

унікальний ідентифікатор "заліза" клієнта, текстовий рядок;

sLoginCompName

string

назва комп'ютера віддаленого клієнта (remote client);

sLoginVersion

string

версія програми користувача;

sLoginDomain

string

ім'я домену користувача, якщо є;

sSessionID

string

унікальний рядок, який може генеруватись для поточного сеансу логіну (зазвичай це актуально для WEB-версії, SessionID ще називають токенами);

sAuthService

string

якщо автентифікація відбувається через сторонній сервіс, то тут може бути його назва;

sClientType

string

тип клієнтського застосунку;

sRemoteOS

string

операційна система користувача.

 

Значення, що повертається

Стандартно функція повинна повертати true, однак, якщо ви повернете false, тоді клієнт буде відключений від сервера без авторизації. Це може бути потрібно, якщо, наприклад, необхідно організувати якийсь Access List за складними правилами, які не можна зробити за допомогою стандартної фільтрації IP адрес, блоків MAC адрес, банів і вбудованих механізмів блокувань у MyChat.

 

Приклад
function OnUserLogin(iCID, iLoginUIN, iLoginState: integer; sLoginIP, sLoginMAC, sLoginHardwareID, sLoginCompName, sLoginVersion, sLoginDomain, sSessionID, sAuthService: string): boolean;
var
  iHour: integer;
  bFlag: boolean;
begin
  bFlag := true;
  iHour := strtoint(FormatDateTime('hh', Now));
  
    if (iHour > 17) or (iHour < 8 ) then begin
      if iLoginUIN <> 3 then bFlag := false;
    end;
  result := bFlag;
end;
begin
end.


Скрипт перевіряє, коли підключається користувач. Якщо це відбувається не в робочий час (з 8:00 до 17:00), користувач автоматично відключається від сервера. Однак, якщо логіниться адміністратор з UIN = 3, то система зобов'язана його впустити, оскільки цього користувача такі обмеження не стосуються.

 

Дивитися ще

FormatDateTime

Now

OnClientConnect

StrToInt