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

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

программное добавление юзеров и прав [D7, ф.б. 1,5]


stud ©   (2004-07-07 15:46:00) 

пытаюсь добавить юзера с указанием роли. юзер добавляется но не является членом роли. использую ibsecurityservice.
 data.userservice.Active:=true;
 data.userservice.UserName:=trim(useredit.Text);
 data.userservice.Password:=pass.Text;
 data.userservice.SQlRole:=ansiuppercase(role[roleedit.itemindex]);
 data.userservice.AddUser;
в чем засада?


stud   (2004-07-08 12:34:00) [1]

админ базы это я)) мне не надо ничего давать, я и сам возьму))
чтобы не заниматься ерундой раздавая права различным пользователям, хочу эту функцию передать руководителю отделения. но он не является админом. он обычный юзер со своими правами.
выдать себе остальные права он не сможет. т.к. пользователь может быть членом только одной группы


BanderLog_t   (2004-07-08 11:44:00) [2]

Ты назвал админа - юзером? :)
В  итоге ты хочешь дать пользователю право на раздачу прав и ничего другого (грубо говоря)? Тогда что же ему помешает выдать самому себе остальные права? :) Вводить дополнительные проверки? И работать в итоге напрямую с системными таблицами.  :)


stud   (2004-07-08 09:12:00) [3]


> BanderLog_t  

если ролей штук 10 и возможно их дальнейшее увеличение, так этот юзер должен быть членом всех этих ролей а права у каждой роли свои и этому юзеру не нужно иметь прав больше чем он уже имеет, зачем это нужно?? если бы все было так просто)))


BanderLog_t   (2004-07-08 06:32:00) [4]

> stud ©   (07.07.04 17:15) [10]
А вот это ты зря так думаешь, этот пользователь должен просто навсего иметь права на выдачу этих ролей что как говорил

>y-soft ©   (07.07.04 16:40) [7]

делается посредством grand с указанием опции with admin option


stud   (2004-07-07 17:35:00) [5]

ну варианты с использованием sql есть, но както "неоптимально"(с)


y-soft   (2004-07-07 17:32:00) [6]

>stud ©   (07.07.04 17:27) [12]

А чем Вам не нравится напрямую регистрировать пользователей в ISC4.GDB (или ее аналогов)? А то иначе никто, кроме SYSDBA этого сделать не может. Надо только заранее дать права на запись и модификацию таблицы USERS уполномоченному пользователю.

Алгоритм создания пароля (DESX) тоже известен...

Способ, конечно, крайне не рекомендуемый, но иногда - единственно возможный...


stud   (2004-07-07 17:27:00) [7]

будем ждать))))


y-soft   (2004-07-07 17:26:00) [8]

>stud ©   (07.07.04 17:15) [10]

Вообще IMHO  система раздачи прав и авторизации в IB очень далека от идеала. Какая-то половинчатая. Для моих задач было бы гораздо удобней, если бы все - и пользователи, и права - хранились в рабочих базах. И никаких всемогущих SYSDBA и смены владельца после Restore! :)

В FireBird 2.0 такое грозились сделать...


stud   (2004-07-07 17:15:00) [9]


> Из сервиса назначать роли не получится

это я уже слышал((
проблема в том, что юзер, который будет заводить пользователей и раздавать права не является sysdba и придется переподключаться к базе для выполнения этих операций после чего опять входить под этим юзером. а так запустил сервис от имени админа и все..... но не тут-то было..


y-soft   (2004-07-07 17:06:00) [10]

>stud ©   (07.07.04 17:01) [8]

вопрос не в этом

Ну а в чем же тогда? Из сервиса назначать роли не получится. Только непосредственно в рабочие базы. Можно и до регистрации нового пользователя. О причинах я уже говорил в [7]


stud   (2004-07-07 17:01:00) [11]


> y-soft ©

при желании можно и напрямую писать в файл isc4.gdb как в текстовый. ))))
вопрос не в этом


y-soft   (2004-07-07 16:40:00) [12]

Кхм... А разве роли не пишутся непосредственно в рабочие базы посредством обычного вызова SQL CREATE ROLE (пишется в RDB$ROLES), GRANT, REVOKE (RDB$USER_PRIVILEGES) и относятся только к этим базам? При этом даже не проверяется, существует ли пользователь...

А т.к. ISC4.GDB такая же база, как и все другие, то и для нее можно назначать роли и привилегии (но не рекомендуется)...

Можно даже работать прямо с таблицами ISC4.GDB безо всякого IBAPI, даже новых пользователей добавлять :)


stud   (2004-07-07 16:26:00) [13]

вот блин

property SQLRole: String;

C++ syntax:

__property AnsiString SQlRole = {read=FSQLRole, write=FSQLRole};

Use SQLRole to set or return role name used to connect to the isc4.gdb security database.

а как это понимать?


Соловьев   (2004-07-07 16:21:00) [14]

думаю создать пользователя а потом уже с помощью запросов дать привелегии.


Соловьев   (2004-07-07 16:19:00) [15]


> data.userservice.SQlRole:=ansiuppercase(role[roleedit.itemindex]);

это не та роль. Выписка из хелпа:
...
The role name used to connect to the isc4.gdb security database.


Johnmen   (2004-07-07 16:15:00) [16]

Что-то я прогнал...:)
Создать юзера можно только вызвав апишную функцию.


stud   (2004-07-07 16:02:00) [17]

придется


Johnmen   (2004-07-07 15:59:00) [18]

А хто её знает...
Не проще ли просто выполнить пару запросов ?


Наверх

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