Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 2 / 2
Регистрация: 30.04.2011
Сообщений: 108
1

Проверка прав пользователя при входе в БД

02.09.2013, 08:25. Просмотров 1604. Ответов 3
Метки нет (Все метки)

Доброго времени суток!

Необходимо реализовать проверку прав пользователя при входе в БД.
Есть 3 таблицы
SQL
1
2
3
4
5
6
7
CREATE USERS (
    ID     D_TPKEY /* D_TPKEY = INTEGER NOT NULL */,
    LOGIN  D_CHAR30 /* D_CHAR30 = VARCHAR(30) */,
    PASS   HASH /* HASH = VARCHAR(200) */,
    FIO    D_CHAR50 /* D_CHAR50 = VARCHAR(50) */,
    FLAG   D_BOOL2 DEFAULT 0 /* D_BOOL2 = SMALLINT */
)
SQL
1
2
3
4
CREATE TABLE GROUPS (
    ID    D_TPKEY /* D_TPKEY = INTEGER NOT NULL */,
    NAME  D_CHAR30 /* D_CHAR30 = VARCHAR(30) */
);
SQL
1
2
3
4
CREATE TABLE USER_GROUPS (
    ID_USER   D_TFKEY /* D_TFKEY = INTEGER NOT NULL */,
    ID_GROUP  D_TPKEY /* D_TPKEY = INTEGER NOT NULL */
);
При запуске приложения Delhi есть форма авторизации. После успешной авторизации запускается главное окно программы. В этом окне необходимо ограничить видимость(/доступность) некоторых компонентов в зависимости от группы пользователя.
Для получения списка групп использую следующий код:
SQL
1
2
3
SELECT ug.id_group
FROM user_groups ug
WHERE ug.id_user = :CURRENT_USER
Подскажите, как организовать проверку на видимость(/доступность) на форме Delphi.
P.S. FireBird 2.0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2013, 08:25
Ответы с готовыми решениями:

При входе Windows пароль не требуется, а при входе в сетевую папку требует имя пользователя и пароль
Имеется Windows Server 2012 и клиентская машина на Windows 7 которая привязана к домену. Почему...

Проверка прав пользователя
Добрый день! Столкнулся с такой проблемкой. Есть такие таблицы users_access aID aTitle_ru ...

Проверка прав администратора пользователя
Столкнулся с необходимостью проверки прав администратора в приложении. Оказалось, что в ОС выше...

Проверка прав пользователя к экшену
Здравствуйте. Из заголовка основной вопрос я думаю ясен)) У меня есть линк на экшен. Я хочу...

3
18 / 18 / 13
Регистрация: 10.11.2010
Сообщений: 143
07.09.2013, 00:42 2
PunK_HS, ну можно просто проверять под какой группой выполнен вход и в зависимости от этого для нужных компонентов менять свойство visible(enabled) в момент создания или показа формы. Можно сформировать массивы из этих элементов, если необходимо обращаться сразу к нескольким. Правда если появится новая группа, то придется модифицировать код
0
Эксперт Pascal/Delphi
1091 / 580 / 119
Регистрация: 13.02.2009
Сообщений: 3,305
07.09.2013, 21:01 3
Цитата Сообщение от PunK_HS Посмотреть сообщение
Доброго времени суток!

Необходимо реализовать проверку прав пользователя при входе в БД.
Есть 3 таблицы
SQL
1
2
3
4
5
6
7
CREATE USERS (
    ID     D_TPKEY /* D_TPKEY = INTEGER NOT NULL */,
    LOGIN  D_CHAR30 /* D_CHAR30 = VARCHAR(30) */,
    PASS   HASH /* HASH = VARCHAR(200) */,
    FIO    D_CHAR50 /* D_CHAR50 = VARCHAR(50) */,
    FLAG   D_BOOL2 DEFAULT 0 /* D_BOOL2 = SMALLINT */
)
SQL
1
2
3
4
CREATE TABLE GROUPS (
    ID    D_TPKEY /* D_TPKEY = INTEGER NOT NULL */,
    NAME  D_CHAR30 /* D_CHAR30 = VARCHAR(30) */
);
SQL
1
2
3
4
CREATE TABLE USER_GROUPS (
    ID_USER   D_TFKEY /* D_TFKEY = INTEGER NOT NULL */,
    ID_GROUP  D_TPKEY /* D_TPKEY = INTEGER NOT NULL */
);
При запуске приложения Delhi есть форма авторизации. После успешной авторизации запускается главное окно программы. В этом окне необходимо ограничить видимость(/доступность) некоторых компонентов в зависимости от группы пользователя.
Для получения списка групп использую следующий код:
SQL
1
2
3
SELECT ug.id_group
FROM user_groups ug
WHERE ug.id_user = :CURRENT_USER
Подскажите, как организовать проверку на видимость(/доступность) на форме Delphi.
P.S. FireBird 2.0
Вот вам пример Запрос в бд
0
47 / 47 / 5
Регистрация: 02.03.2010
Сообщений: 119
09.09.2013, 19:05 4
Можно еще добавить роли в БД и пользователей, задать ограничения на таблицы, хп и тд для роли, роли назначить пользователям, подключаться к БД под пользователем, паролем, узнать роль, под которой вошел пользователь и если роль = 'USER' (например), то скрывать элементы управления формы, или показывать (в соответствии с заданными ограничениями на объекты БД). Кажется сложным, но на самом деле не особо.
Таким образом, получается механизм защиты, предоставляемый самим сервером. И во многих случаях не нужно мастерить свой велосипед ))

Более подробно: http://www.ibase.ru/devinfo/sqlroles.htm
Возможно, предложенный мною вариант будет полезен
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2013, 19:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверка прав пользователя на запись файла
Как быстро проверить, что у пользователя есть доступ на запись файла? Конечно можно файл пытаться...

При входе пользователя.
Суть темы вот в чем, при входе пользователя в систему выдает сообщение: "Пользователь не...

Выбор пользователя при входе
Здравствуйте! У меня такой вопрос по mysql: Когда я включаю MySql Command Line Client, у меня в...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.