Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

Ограничение доступа к базе   Найти похожие ветки 

 
dash78 ©   (2003-03-03 07:53) [0]

Здравствуйте всем.
Уважаемые мастера подскажите как ограничить доступ к отдельным записям в таблицах базы определенных пользователей и реализовать это в программе.
К примеру: главный бухгалтер имеет доступ к информации о сотрудниках только по своему отделу, начальник финансового отдела - по своему, начальник ОК - по всем отделам?


 
Anatoly Podgoretsky ©   (2003-03-03 08:05) [1]

WHERE условия


 
Alexandr ©   (2003-03-03 08:29) [2]

через view


 
zacho ©   (2003-03-03 08:31) [3]

Например, так:
Есть таблица 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
Естественно, это только в общих чертах.


 
dash78 ©   (2003-03-03 09:20) [4]

2 Alexandr
создавать для каждого пользователя view??

2 zacho
сп
была такая же мысль

может у кого еще есть какие интересные идеи??


 
passm ©   (2003-03-03 09:25) [5]

Обычно создаю пару просмотров на таблицы: все доступные записи с полем 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 10:43) [6]

2 passm
сп
все доходчиво и понятно



Страницы: 1 вся ветка

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-63951
Freeze
2003-03-03 07:19
2003.03.20
Работа с полем OLE


14-64379
Карелин Артем
2003-03-05 08:51
2003.03.20
Чат и Опера 6,1


3-64031
StarCon
2003-02-27 12:17
2003.03.20
Error в BDE


1-64078
Intell
2003-03-08 18:54
2003.03.20
Как создать Анализатор Спектра как в Winamp`е?


1-64080
mixamixa
2003-03-10 07:38
2003.03.20
Как вывести на принтер содержимое StringGrid1?