Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизКак узнать имеет ли пользователь право на табл/процед Найти похожие ветки
← →
yk © (2005-05-24 09:52) [0]Уважаемые Мастера!
Подскажите как можно, зная имя пользователя,
и подключась к базе (из некоторого приложения на Delphi)
узнать имеет ли пользователь право на ту или иную процедуру/таблицу
Мне это нужно, что бы при подключении пользователя,
отключать на форме кнопки с действиями, которые он всё равно не может совершить (напимер удалить/добавить/изменить)
← →
Johnmen © (2005-05-24 10:20) [1]См. системные таблицы http://www.ibase.ru/devinfo/sysqry.htm
← →
Виталий Панасенко (2005-05-24 10:25) [2]http://ibase.ru/devinfo/sysqry.htm
глянь тут
← →
Sergey13 © (2005-05-24 10:33) [3]А не проще анализировать роль при коннекте? Права же не меняются часто? Вернее права не меняются без смены структуры БД.
← →
yk © (2005-05-24 10:54) [4]
> А не проще анализировать роль при коннекте?
Что Вы хотите сказать?
Забить жёстко роль в прогу?
Но название ролей, имена пользователей могут изменяться,
я знать не буду
← →
Sergey13 © (2005-05-24 11:15) [5][4] yk © (24.05.05 10:54)
> Что Вы хотите сказать?
То, что при подключении к БД в параметрах, можно указать роль.
sql_role_name=Role_Name
Анализируя имя роли можно строить интерфейс. Это кстати поможет блокировать действия юзера если вдруг чего забыли отключить.
>Но название ролей, имена пользователей могут изменяться,
А таблицы у вас юзера не переименовывают?
← →
yk © (2005-05-25 07:15) [6]
> А таблицы у вас юзера не переименовывают?
Нет ;)
Просто с именами ещё не определились, и с правами доступа до конца тоже.
Вообще как-то не охота забивать имена юзеров в прогу
(это меня очень смущает, идёт какое-то подсознательное отторжение)
← →
stud © (2005-05-25 09:03) [7]
> Вообще как-то не охота забивать имена юзеров в прогу
а и не надо. анализировать нужно именно РОЛЬ с которой пользователь подключается, а ролей бедет не так уж и много
← →
yk © (2005-05-25 09:24) [8]
> stud ©
:)
С ролями тоже пока не всё ясно :(
← →
stud © (2005-05-25 09:31) [9]так, это .. ibase.ru
← →
Sergey13 © (2005-05-25 09:33) [10]2[8] yk © (25.05.05 09:24)
> С ролями тоже пока не всё ясно :(
Очень рекомендую заполнить эти пробелы.
← →
yk © (2005-05-25 10:35) [11]
> Sergey13 ©
Спасибо за совет.
Но пока попробую разобраться с определением прав пользователя через системные таблицы
Что получиться - напишу
(Возможно воспользуюсь вашим советом :) )
← →
Sergey13 © (2005-05-25 10:43) [12]2[11] yk © (25.05.05 10:35)
> Но пока попробую разобраться с определением прав пользователя через системные таблицы
Твое право. Если ты хочешь из Москвы в Питер через Китай - флаг в руки. 8-)
← →
P.N.P. © (2005-05-25 16:26) [13]>yk © (25.05.05 10:35) [11]
Вот скрипт для получения прав текущего пользователя (current_user)
SELECT p.rdb$relation_name,p.rdb$privilege,r.rdb$description FROM RDB$USER_PRIVILEGES p
left outer join rdb$relations r on r.rdb$relation_name=p.rdb$relation_name
where p.RDB$PRIVILEGE<>"M" and p.RDB$USER=current_user and
not (p.RDB$RELATION_NAME LIKE "%$%") order by r.rdb$RELATION_NAME,p.rdb$privilege
← →
evvcom © (2005-05-25 16:31) [14]
> Анализируя имя роли можно строить интерфейс.
Я тоже не согласен с таким способом. Я, конечно, не работал с ИБ, но не думаю, что в нем все шыворот-навыворот. Имхо.
← →
stud © (2005-05-25 17:38) [15]
> Я тоже не согласен с таким способом.
интересно, а что проще анализировать имя роли (1), или получить набор из н-элементов и анализировать его? самое интересное что этот набор анализировать нужно также, только скажем вместо одного if... их будет столько сколько набор вернул. а результат тот же.....
← →
YK © (2005-05-25 17:49) [16]>P.N.P. ©
Спасибо - разобралась !
Только мне надо p.RDB$PRIVILEGE="X", т.к. меня интересует в основном может ли пользователь вызывать некоторые процедуры
← →
Sergey13 © (2005-05-26 09:47) [17]2 [14] evvcom © (25.05.05 16:31)
> Я тоже не согласен с таким способом.
Да мне собственно пофиг это. 8-)
>Я, конечно, не работал с ИБ, но не думаю, что в нем все шыворот-навыворот. Имхо.
А в чем вывернутость этого решения? Прочитав 1 (один) раз это значение, ты уже знаешь все. Приделал обработчик на открытие формы и вырубил кнопки. При чтении привилегий надо обрашаться к этим делам динамически столько раз сколько потребуется, а это могут быть и тысячи раз за сессию. Или хранить придется достаточно большой объем прав. А результат все равно - один и тот-же.
ИМХО разумеется.
← →
evvcom © (2005-05-26 10:27) [18]
> а что проще
"Проще" далеко не всегда означает "лучше".
> Sergey13 © (26.05.05 09:47) [17]
Все зависит от поставленной задачи.
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.037 c