GRANT/S

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
mdsf
Сообщения: 36
Зарегистрирован: Сб 26 янв 2013 06:34

GRANT/S

Сообщение mdsf » Ср 23 ноя 2016 06:21

Есть очень (ОЧЕНЬ) простенькое аптечное Delphi-приложение, я бы даже сказал элементарное. В связи с его простотой, а также с универсальностью UniDAC, сделал сетевое подключение к четырём СУБД на выбор: Microsoft SQL Server, MySQL, Oracle, PostgreSQL.

Задача: при запуске Delphi-приложения пользователь сначала выбирает тип СУБД (из тех самых четырёх, перечисленных выше), потом вводит данные для авторизации, после чего жмёт кнопку "Подключиться" - и вот тут я хочу узнать, какие привилегии есть у данного пользователя в выбранной им СУБД, чтобы автоматически отображать/скрывать то, что он видеть не должен (формы, колонки, поля). Просить пользователя указать вручную свою роль (может он делать лишь только SELECT'ы, или же ему доступно всё: и DROP, и UPDATE, и APPEND, и INSERT, и DELETE) - не вариант. Несмотря на стереотип аккуратности аптекаря, не на каждого из них можно положиться. Хотелось бы как-то автоматизировать это. Есть какие-нибудь идеи?

Т.е. как это вижу я сам: после подключения идёт запрос к СУБД, и возвращается какое-то одно из значений: доступен только SELECT (т.е. пользователь явно "read only"), или же доступно что-то ещё, кроме SELECT (т.е. пользователь явно может что-то больше, чем просто SELECT).

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: GRANT/S

Сообщение Alexp » Ср 23 ноя 2016 10:21

Добрый день,

Если вам уже известна СУБД, то вы можете формировать нужные запросы для получения прав в зависимости от СУБД, либо использовать макросы https://www.devart.com/unidac/docs/?unisql.htm#macros для унифицирования запроса.

Ответить