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 ; ^