Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2018, 09:32   #1
SuweR
Пользователь
 
Регистрация: 11.05.2017
Сообщений: 17
По умолчанию Visible, invisible на кнопке

У меня есть авторизация(пользователь, руководство и админ), на другой форме, на которую он переходит есть 4 кнопки(сотрудники, договора, накладные и замеры), как сделать так что бы когда заходил пользователь кнопку Сотрудники была невидима, а когда через сотрудника или руководство, то она была бы видна им?
SuweR вне форума Ответить с цитированием
Старый 17.05.2018, 09:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

на этой второй форме нужно обрабатывать (проверять) права текущего пользователя.
и показывать элементы только для тех пользователей, которые имеют на это право.
Код:
if (usermode = cUser) then begin
   buttonSotrudniki.Visible := false;
   buttonSotrudniki.Enable := false; // не обязательно, для красоты
end
else
  if (usermode = cBoss) or (usermode = cAdmin) then begin
     buttonSotrudniki.Visible := true;
     buttonSotrudniki.Enable := true; 
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2018, 09:48   #3
SuweR
Пользователь
 
Регистрация: 11.05.2017
Сообщений: 17
По умолчанию

Кхм

Последний раз редактировалось SuweR; 17.05.2018 в 09:59.
SuweR вне форума Ответить с цитированием
Старый 17.05.2018, 09:59   #4
SuweR
Пользователь
 
Регистрация: 11.05.2017
Сообщений: 17
По умолчанию

А где мне прописать этот код, и что за usermode? пишет не объявлен он
SuweR вне форума Ответить с цитированием
Старый 17.05.2018, 10:05   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от SuweR Посмотреть сообщение
А где мне прописать этот код
на событие формы.
например, на onShow


так это же просто условный пример.
Цитата:
Сообщение от SuweR Посмотреть сообщение
и что за usermode? пишет не объявлен он
подставьте вашу переменную, где у Вас хранится режим пользователя после авторизации
и там, где сравнение тоже напишите свои константы - как Вы отличаете пользователя/админа/руководителя друг от друга.

Если Вы хотите конкретный код - показывайте исходники своего проекта.
Если хотите писать сами - пишите.
Угадать, как у Вас называется переменная, где хранятся права пользователя (и в каком виде) - я не могу, телепатия слабенькая...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2018, 10:08   #6
SuweR
Пользователь
 
Регистрация: 11.05.2017
Сообщений: 17
По умолчанию

Вот код авторизации:
Код:
var login, pass:string;
begin
     DataModule1.adoquery1.sql.clear;
     DataModule1.adoquery1.sql.add('select pass from users where login='+#39+Log.Text+#39);
     DataModule1.adoquery1.Open;
     if DataModule1.Adoquery1.isEmpty then
        showmessage('Ïîëüçîâàòåëü'+Log.Text+'íå íàéäåí') 
    else
       if DataModule1.Adoquery1.FieldbyName('PASS').value <> Password.Text then
           showmessage('Ïàðîëü íå âåðíûé')
       else Glavnoe_Okno.Show;
end;
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 17.05.2018 в 10:59.
SuweR вне форума Ответить с цитированием
Старый 17.05.2018, 10:52   #7
SuweR
Пользователь
 
Регистрация: 11.05.2017
Сообщений: 17
По умолчанию

У меня авторизация подключена к другой базе данных присутствует ADOConnection2, ADOTable1, ADOQuery1, DataSource8
SuweR вне форума Ответить с цитированием
Старый 17.05.2018, 10:57   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) перед копированием кода программы в буфер обмена ОБЯЗАТЕЛЬНО включайте русскую раскладку на клавиатуре

2) код нужно оформлять по правилам -
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)

3) я Вас спрашивал, где у Вас хранятся права пользователя?
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
как Вы отличаете пользователя/админа/руководителя друг от друга.
Как?
Никак не отличаете?

4) Пароль лучше не хранить в базе в открытом виде - используйте для этого хеш.

5) для вставки полей в запрос нужно или использовать параметрический запрос или экранировать переменные.

Последний раз редактировалось Serge_Bliznykov; 17.05.2018 в 11:00.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2018, 10:59   #9
SuweR
Пользователь
 
Регистрация: 11.05.2017
Сообщений: 17
По умолчанию

У меня База данных в Accesse под паролем
SuweR вне форума Ответить с цитированием
Старый 17.05.2018, 11:02   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от SuweR Посмотреть сообщение
У меня База данных в Accesse под паролем
хорошо.
Но это что-то меняет?

Ваш запрос ВОЗВРАЩАЕТ правильный пароль для заданного пользователя.
Поверьте мне, получить его в отладчике - дело 10 минут.
и всё, пароль руководителя/админа известен хакеру.
Несмотря на запароленный файл БД (кстати, пароль от БД хранится в открытом виде в вашей Delphi программе, если уж на то пошло).

Последний раз редактировалось Serge_Bliznykov; 17.05.2018 в 11:04.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Cannot focus a disabled or invisible window. sedoq Общие вопросы Delphi 3 01.02.2012 07:45
Button.Visible lblondy Компоненты Delphi 3 08.06.2011 21:47
Visible [Smarik] Помощь студентам 2 28.03.2008 18:01