Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать имеет ли пользователь право на табл/процед [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо