![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать имеет ли пользователь право на табл/процед [D7, IB6.x]
yk © (2005-05-24 09:52:00)Уважаемые Мастера!
Подскажите как можно, зная имя пользователя,
и подключась к базе (из некоторого приложения на Delphi)
узнать имеет ли пользователь право на ту или иную процедуру/таблицу
Мне это нужно, что бы при подключении пользователя,
отключать на форме кнопки с действиями, которые он всё равно не может совершить (напимер удалить/добавить/изменить)
evvcom (2005-05-26 10:27:00) [1]
> а что проще
"Проще" далеко не всегда означает "лучше".
> Sergey13 © (26.05.05 09:47) [17]
Все зависит от поставленной задачи.
Sergey13 (2005-05-26 09:47:00) [2]2 [14] evvcom © (25.05.05 16:31)
> Я тоже не согласен с таким способом.
Да мне собственно пофиг это. 8-)
>Я, конечно, не работал с ИБ, но не думаю, что в нем все шыворот-навыворот. Имхо.
А в чем вывернутость этого решения? Прочитав 1 (один)раз это значение, ты уже знаешь все. Приделал обработчик на открытие формы и вырубил кнопки. При чтении привилегий надо обрашаться к этим делам динамически столько раз сколько потребуется, а это могут быть и тысячи раз за сессию. Или хранить придется достаточно большой объем прав. А результат все равно - один и тот-же.
ИМХО разумеется.
YK (2005-05-25 17:49:00) [3]>P.N.P. ©
Спасибо - разобралась !
Только мне надо p.RDB$PRIVILEGE='X', т.к. меня интересует в основном может ли пользователь вызывать некоторые процедуры
stud (2005-05-25 17:38:00) [4]
> Я тоже не согласен с таким способом.
интересно, а что проще анализировать имя роли (1), или получить набор из н-элементов и анализировать его? самое интересное что этот набор анализировать нужно также, только скажем вместо одного if... их будет столько сколько набор вернул. а результат тот же.....
evvcom (2005-05-25 16:31:00) [5]
> Анализируя имя роли можно строить интерфейс.
Я тоже не согласен с таким способом. Я, конечно, не работал с ИБ, но не думаю, что в нем все шыворот-навыворот. Имхо.
P.N.P. (2005-05-25 16:26:00) [6]>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
Sergey13 (2005-05-25 10:43:00) [7]2[11] yk © (25.05.05 10:35)
> Но пока попробую разобраться с определением прав пользователя через системные таблицы
Твое право. Если ты хочешь из Москвы в Питер через Китай - флаг в руки. 8-)
yk (2005-05-25 10:35:00) [8]
> Sergey13 ©
Спасибо за совет.
Но пока попробую разобраться с определением прав пользователя через системные таблицы
Что получиться - напишу
(Возможно воспользуюсь вашим советом :) )
Sergey13 (2005-05-25 09:33:00) [9]2[8] yk © (25.05.05 09:24)
> С ролями тоже пока не всё ясно :(
Очень рекомендую заполнить эти пробелы.
stud (2005-05-25 09:31:00) [10]так, это .. ibase.ru
yk (2005-05-25 09:24:00) [11]
> stud ©
:)
С ролями тоже пока не всё ясно :(
stud (2005-05-25 09:03:00) [12]
> Вообще как-то не охота забивать имена юзеров в прогу
а и не надо. анализировать нужно именно РОЛЬ с которой пользователь подключается, а ролей бедет не так уж и много
yk (2005-05-25 07:15:00) [13]
> А таблицы у вас юзера не переименовывают?
Нет ;)
Просто с именами ещё не определились, и с правами доступа до конца тоже.
Вообще как-то не охота забивать имена юзеров в прогу
(это меня очень смущает, идёт какое-то подсознательное отторжение)
Sergey13 (2005-05-24 11:15:00) [14][4] yk © (24.05.05 10:54)
> Что Вы хотите сказать?
То, что при подключении к БД в параметрах, можно указать роль.
sql_role_name=Role_Name
Анализируя имя роли можно строить интерфейс. Это кстати поможет блокировать действия юзера если вдруг чего забыли отключить.
>Но название ролей, имена пользователей могут изменяться,
А таблицы у вас юзера не переименовывают?
yk (2005-05-24 10:54:00) [15]
> А не проще анализировать роль при коннекте?
Что Вы хотите сказать?
Забить жёстко роль в прогу?
Но название ролей, имена пользователей могут изменяться,
я знать не буду
Sergey13 (2005-05-24 10:33:00) [16]А не проще анализировать роль при коннекте? Права же не меняются часто? Вернее права не меняются без смены структуры БД.
Виталий Панасенко (2005-05-24 10:25:00) [17]http://ibase.ru/devinfo/sysqry.htm
глянь тут
Johnmen (2005-05-24 10:20:00) [18]См. системные таблицы http://www.ibase.ru/devinfo/sysqry.htm