GD USER

Материал из GedeminWiki
Перейти к: навигация, поиск

Список пользователей системы.

  CREATE TABLE gd_user
  (
    id               dintkey,                     /* Первичный ключ                                    */
    name             dusername,                   /* имя                                               */
    passw            dpassword,                   /* пароль                                            */
    ingroup          dinteger DEFAULT 1 NOT NULL, /* группы, в которые входит пользователь             */
    fullname         dtext180,                    /* полное имя                                        */
    description      dtext180,                    /* описание                                          */
    ibname           dusername,                   /* имя пользователя IB                               */
    ibpassword       dpassword,                   /* пароль IB                                         */
    contactkey       dintkey,                     /* ссылка на запись в таблице контактов              */
    externalkey      dforeignkey,                 /* внешняя ссылка, например на справочник сотрудников*/
    disabled         dboolean DEFAULT 0 NOT NULL, /* отключен                                          */
    lockedout        dboolean DEFAULT 0,          /* запись заблокирована                              */
    mustchange       dboolean DEFAULT 0,          /* при входе пользователь должен изменить пароль     */
    cantchangepassw  dboolean DEFAULT 1,          /* пользователь не может менять пароль               */
    passwneverexp    dboolean DEFAULT 1,          /* срок действия пароля никогда не истекает          */
    expdate          ddate,                       /* дата истечения срока действия пароля              */
    workstart        dtime,                       /* начало рабочего дня                               */
    workend          dtime,                       /* окончание рабочего дня                            */
    allowaudit       dallowaudit,                 /* будут ли операции этого пользователя заноситься   */
                                                  /* в журнал                                          */
    editiondate      deditiondate,
    editorkey        dforeignkey,
 
    icon             dinteger,                    /* пиктограмка для данного пользователя              */
    reserved         dinteger,                    /* зарезервировано                                   */
 
    CHECK (((workstart IS NULL) AND (workend IS NULL)) OR (workstart < workend)),
    CHECK (ingroup <> 0)
  );
 
  ALTER TABLE gd_user ADD CONSTRAINT gd_pk_user
    PRIMARY KEY (id);
 
  /* имя пользователя должно быть уникальным */
  CREATE UNIQUE ASC INDEX gd_x_user_name ON gd_user
    (name);
 
  CREATE UNIQUE INDEX gd_x_user_ibname ON
    gd_user (ibname);
 
  SET TERM ^ ;
 
  CREATE TRIGGER gd_bi_user FOR gd_user
    BEFORE INSERT
    POSITION 0
  AS
  BEGIN
    IF (NEW.ID IS NULL) THEN
      NEW.ID = GEN_ID(gd_g_unique, 1) + GEN_ID(gd_g_offset, 0);
 
    /* значения по умолчанию */
    IF (NEW.ingroup IS NULL) THEN
      NEW.ingroup = 0;
    IF (NEW.disabled IS NULL) THEN
      NEW.disabled = 0;
    IF (NEW.mustchange IS NULL) THEN
      NEW.mustchange = 0;
    IF (NEW.cantchangepassw IS NULL) THEN
      NEW.cantchangepassw = 1;
    IF (NEW.passwneverexp IS NULL) THEN
      NEW.passwneverexp = 1;
    IF (NEW.lockedout IS NULL) THEN
      NEW.lockedout = 0;
  END
  ^
 
  CREATE EXCEPTION gd_e_invaliduserupdate 'At least one user must be enabled'^
 
  CREATE TRIGGER gd_bu_user FOR gd_user
    BEFORE UPDATE
    POSITION 0
  AS
  BEGIN
    IF ((NEW.disabled = 1) AND (OLD.disabled = 0) AND
        (SINGULAR (SELECT * FROM gd_user WHERE disabled = 0))) THEN
      EXCEPTION gd_e_invaliduserupdate;
  END
  ^
 
  CREATE EXCEPTION gd_e_invaliduserdelete 'Cannt delete all users'^
 
  CREATE TRIGGER gd_bd_user FOR gd_user
    BEFORE DELETE
    POSITION 0
  AS
  BEGIN
    /* выдаліць адміністратара немагчыма */
    IF (OLD.ID = 150001) THEN
      EXCEPTION gd_e_invaliduserdelete;
  END
  ^
 
  SET TERM ; ^

См. также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты