![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ограничение доступа к базе [D6, IB6.x, Firebird]
dash78 © (2003-03-03 07:53:00)Здравствуйте всем.
Уважаемые мастера подскажите как ограничить доступ к отдельным записям в таблицах базы определенных пользователей и реализовать это в программе.
К примеру: главный бухгалтер имеет доступ к информации о сотрудниках только по своему отделу, начальник финансового отдела - по своему, начальник ОК - по всем отделам?
dash78 (2003-03-03 10:43:00) [1]2 passm
сп
все доходчиво и понятно
passm (2003-03-03 09:25:00) [2]Обычно создаю пару просмотров на таблицы: все доступные записи с полем READONLY и привелегией только SELECT и просмотр с записями READONLY = "N" со всеми привелегиями и LOCAL CHECK OPTION.
Приблизительно по схеме:
CREATE TABLE USER_LIST
(USER_ID VARCHAR(32),
USER_NAME VARCHAR(64));
CREATE TABLE OTDEL_ACCESS
(USER_ID VARCHAR(32),
OTDEL_ID INTEGER,
READONLY CHARACTER(1) CHECK (READONLY IN ("Y", "N")),
CONSTRAINT OTDEL_ACCESS1 FOREIGN KEY (USER_ID) REFERENCES USER_LIST (USER_ID) ON DELETE CASCADE,
CONSTRAINT OTDEL_ACCESS2 FOREIGN KEY (OTDEL_ID) REFERENCES OTDEL_LIST(ID) ON DELETE CASCADE);
CREATE VIEW VIEW1 AS
SELECT T1.*, AC.READONLY
FROM TABLE1 T1
INNER JOIN OTDEL_ACCESS AC ON (T1.OTDEL_ID = AC.OTDEL_ID)
WHERE AC.USER_ID = USER;
GRANT SELECT ON VIEW1 TO USER MASHA;
CREATE VIEW VIEW1_E AS
SELECT T1.*
FROM TABLE1 T1
WHERE T1.OTDEL_ID IN (SELECT Q1.OTDEL_ID
FROM OTDEL_ACCESS Q1
WHERE Q1.USER_ID = USER
AND Q1.READONLY = "N")
WITH LOCAL CHECK OPTION;
GRANT SELECT, UPDATE, DELETE, INSERT ON VIEW1_E TO USER MASHA;
dash78 (2003-03-03 09:20:00) [3]2 Alexandr
создавать для каждого пользователя view??
2 zacho
сп
была такая же мысль
может у кого еще есть какие интересные идеи??
zacho (2003-03-03 08:31:00) [4]Например, так:
Есть таблица OTDEL с полем ID_OTDEL - ПК.
Создаем таблицу USERS_OTDEL с полями ID_USER varchar(макс. размер имени пользователя в IB), ID_OTDEL - FK на OTDEL.
Для доступа к таблице OTDEL используем только VIEW или SP примерно такого вида: SELECT bla-bla-bla, ... FROM OTDEL O JOIN USERS_OTDEL UO ON O.ID_OTDEL=UO.ID_OTDEL AND UO.ID_USER=USER
Естественно, это только в общих чертах.
Alexandr (2003-03-03 08:29:00) [5]через view
Anatoly Podgoretsky (2003-03-03 08:05:00) [6]WHERE условия