![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
авторизация пользователей [D7, MySQL]
*Ray* © (2006-09-19 19:11:00)Здравствуйте, уважаемые жители королевства!
У меня возникла проблема при написании базы данных на MySQL, Delphi7. Я искал ответ на просторах нашего королевства, но к сожалению так ничего и не нашел. Вопрос фактически в авторизации пользователей. Ситуация такая, есть БД на MySQL, к ней подсоединяются пользователи с разными правами, но насколько я понимаю авторизация влияет только на доступ к самой базе данных. А в программе имеются функции, которые должны быть доступны только определенным пользователям, то есть в зависимости от логина и пароля, то или иное окно не открывалось, или та или иная кнопка не нажималась. Как в программе привязать логин и пароль пользователя к соответствующей кнопке, cделать проверку? Буду благодарен за любую помощь! Заранее спасибо Вам!
*Ray* (2006-09-22 10:26:00) [1]Уважаемые мастера! Очень благодарен Вам за Ваши советы! Проблема решена!
Desdechado (2006-09-20 12:16:00) [2]*Ray* © (19.09.06 20:42) [5]
Например, удобно использовать TActionList с TAction'ами, сохраняемый на гравной форме или в датамодуле. На каждую защищаемую кнопку/пункт меню/др. заводишь Action в этом листе. При подключении к БД вычитываешь права на эти экшены и сразу дизаблишь сами экшены.
А у кнопок/пунктов меню/др. назначаешь экшены, которые сами уже будут управлять доступностью.
Это удобный способ централизации управления бизнес-логикой.
_Ламер_ (2006-09-19 21:45:00) [3]Мне видется два варианта (сперва только надо права раздать юзерам)
1. Из под админки у самого сервера запрашивать данные о привилегиях того или иного пользователя (таблицы user и tables_priv в database mysql) и в соответствии с ними давать разрешения.
2. Завести отдельную таблицу с доступами к тем или иным компонентам.
Если у юзера доступа к операции удаления записей в определённой таблице нет, то сервер их не удалит. О раздаче прав пользователям написано в хелпе.
*Ray* (2006-09-19 20:42:00) [4]а как узнать кто залогинился?
как задать условие:
if login=xxx
then кнопку можно назвать нажать
else Error;
?
Desdechado (2006-09-19 20:38:00) [5]В программу (читай - в БД) логинятся с паролем (каждый со своим, естественно). В зависимости от того, кто залогинился, можно из спецтвой таблицы достать, можно ли ему жать кнопку. Если нельзя, дизабли ее.
Ну, и на таблицы/ХП в БД тоже права раздай.
*Ray* (2006-09-19 20:26:00) [6]to:Desdechado
Что-то я не совсем понял... может быть это связано с недостаточно ясной постановкой задачи. Попробую объяснить: в программе есть кнопка, которая обнуляет лицевые счета людей, но так как это операция связана с финансами, то нужно, чтобы эту кнопку мог нажать только, допустим, администратор, а для других свойство кнопки Enabled=false или при нажатии на кнопку выдавалась ошибка. Как я могу реализовать проверку, кто нажимает кнопку, то есть кто работает с базой данных.
Desdechado (2006-09-19 20:19:00) [7]Можно считывать, что можно, а что нельзя из специальной таблицы с операциями, которую начиняет твоя програ с админскими правами.
Считать можно сразу при старте, а можно и по мере действий. Но несколько раздражающе будет выглядеть режим, дающий редактировать, но недающий сохранять...
*Ray* (2006-09-19 19:14:00) [8]Прошу прощения, уважаемые мастера, за неправильное обращение!