Событие, возникающее в момент авторизации пользователя на сервере.

 

Шаблон события

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