powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Формирование интерфейса в заисимоти от привилегий
25 сообщений из 70, страница 2 из 3
Формирование интерфейса в заисимоти от привилегий
    #35068487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Как сказал "грекси"

А это кто?
по степени своей популярности скоро приблизится к Вашей :)

grexhide забаненный
ренегат
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068522
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов Denis.Спасибо, господа, а нет ли идей как сделать так, чтобы кнопки дизэйблились автаматически?
При создании формы (или правильнее даже чуть позже, когда форма полностью инициализируется, но до ее показа, ровно один раз) выполняете селект, который вернет все "запрещенное", потом все это запрещенное запрещаете в зависимости от вида элемента управления и вида запрета.
на каждый метод есть противометод.
Почему каждый контрол по отдельности должен соединять (а потом разбивать) ОДИН ОБЩИЙ SELECT?.
Ничто не мешает в соответствии ООП каждый контрол "научить" спрашивать в БД "можно ли ему ...".


Захотелось чего-то большого и чистого. Помыл слона. Не то...
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068546
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO
если уж делать, то берём за образец Word - правый клик на палитре инструментов - настроить - список_команд.
Это идентификаторы-команды-константы .
К ним привязывается шаблон-класс-Команда и пункт меню.
Она умеет сериализовать себя в БД и обратно и спросить привилегии.
Она умеет совместно работать с Action-библиотекой чтобы не писать велосипедов.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068565
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, есть два безусловных авторитета. Первый - г-н Дейт. Второй - результаты корректных тестов. Привычка не ссылаться на надписи на заборах (а тем более цитировать их или ссылаться на их авторов (человек, проводящий свободное время в "Просто треп" ("ренегат"), и есть пример такого автора)) - это хорошая привычка.

.
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068577
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Почему каждый контрол по отдельности должен соединять (а потом разбивать) ОДИН ОБЩИЙ SELECT?
Никто ничего не "соединяет" и не "разбивает". Это выглядит схематически как
1) выполняем select, получаем идентификацию компонента и некую идентификацию прав X.
2) для каждой строки выполняем что-нибудь типа FindComponent.
3) говорим тому компоненту, который (если!) нашелся, что ему надо "натянуть" права вида X (X берем из селекта). Для этого либо пишем обработку компонента снаружи, либо элементы управления должны поддерживать некий (свой) интерфейс, либо и то и другое.

Petro123Ничто не мешает в соответствии ООП каждый контрол "научить" спрашивать в БД "можно ли ему ...".
Да ради бога. Только на более низком уровне это не должно выглядеть как поток из сотни селектов в БД при открытии формы.
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068605
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов мы друг друга поняли.
Насчёт сотни селектов, то Первична команда - DeleteMyObj
Контролы, которые дёргают эту команду - вторичны .

Скока есть команд, столько и SELECT.
Хотя можно пожалеть сервер и сделать класс-менеджерКоманд. Но это спорно и индивидуально.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068612
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ж объяснил - есть наработанные годами шаблоны программирования.
Шаблон Command - там нет велосипедов.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068656
ренегат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Скока есть команд, столько и SELECT.
Хотя можно пожалеть сервер и сделать класс-менеджерКоманд. Но это спорно и индивидуально.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!

Глупо. Все права можно запросить одним махом, одним селектом, закатать в массив и гонять уже IsRight(CommandID) по нему. Массив перечитывать при логине (или создании, а то и вовсе показе формы, если параноя жжет). Смешно, но всё же - один селект на 200 значений - это в разы быстрее, чем три селекта на одно значение.

P.S. Мир намного проще, чем кажется.
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068670
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ренегатзакатать в массив и гонять уже IsRight(CommandID) по нему. Массив перечитывать при логине
+1
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068682
ренегат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Шаблон Command - там нет велосипедов.
Паттерны - жвачка для посредственностей. Наличие название паттерна в имени класса - явный признак ФГМ.
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068697
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ренегат Petro123Скока есть команд, столько и SELECT.
Хотя можно пожалеть сервер и сделать класс-менеджерКоманд. Но это спорно и индивидуально.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!

Глупо. Все права можно запросить одним махом, одним селектом, закатать в массив и гонять уже IsRight(CommandID) по нему. Массив перечитывать при логине (или создании, а то и вовсе показе формы, если параноя жжет). Смешно, но всё же - один селект на 200 значений - это в разы быстрее, чем три селекта на одно значение.

P.S. Мир намного проще, чем кажется.
можно (и я сказал про менеджера команд). Тут нет верного решения, как нет однозначного ответа на вопрос:
- коннект на приложение или коннект к БД на каждое окно (dll |..).
- 3-х звенка или нет :)
- AMD - Intel
- ...
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068710
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ренегат Petro123Шаблон Command - там нет велосипедов.
Паттерны - жвачка для посредственностей. Наличие название паттерна в имени класса - явный признак ФГМ.
- название Get в имени метода тоже? :)
- паттерны повышают культуру и отсутствие велосипедов (не гони пургу).
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068798
ренегат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- название Get в имени метода тоже? :)
Это лишь банальное соглашение о наименовании.

Petro123- паттерны повышают культуру и отсутствие велосипедов (не гони пургу).
Та щазз.. Скачай DevExpress QuantumGrid6 и посмотри, насколько там всё окультурено.
Ага ага.

Я пытаюсь тебе объяснить несколько другое. Паттерн - это лишь парадигма. Их нужно знать, да,
применять, да, но выстраивать строго от них структуру классов и прочее - это полный бред и
заскоки недоразума. А включать в наименования - это уже явая болезнь головы.

Нет, ну давай в повседневной жизни будем называть вещи "по новому".

Самсунг2202WТелевизорПлоскийШирокий, ПанасоникТелефонПроводной, СтолДеревянныйОфисныйСТубмочками.

ПридурокЗаМониторомЧеловекРазумный.

~

Укотайко
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068933
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ренегат
Я пытаюсь тебе объяснить несколько другое. Паттерн - это лишь парадигма. Их нужно знать, да,
применять, да, но выстраивать строго от них структуру классов и прочее - это полный бред и
заскоки недоразума. А включать в наименования - это уже явая болезнь головы.

- ты хоть и башковитый и я тебя уважаю, но бывает ищещь ведьм там где их нет :)).

- расшифруй понятие "строго"
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35068943
ренегат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- расшифруй понятие "строго"

Слово Factory минимум в половине имён классов? Есть! (с) WTF
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35069019
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ренегат Petro123- расшифруй понятие "строго"

Слово Factory минимум в половине имён классов? Есть! (с) WTF
любовь зла, полюбишь и .....
Неинтересно спорить про любовь.
Хорошо что, есть разные технические решения на любой вкус программиста. :)
Удачи (тебе и автору топика).
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35069763
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123
>Для вторых биты, указатели, ...

Хоть убей, но не могу Вас понять, - чем это Вы. Типы bool, int, byte, byte[], enum и поля типа binary(?) никто кроме Вас, похоже не отменял.
Далее, права пользователя хранятся в поле binary записи сессии. Отобразить binary на byte[] можно так (для MS SQL) :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 ...
 byte[] cmd = new byte[ 256 ]; //-- Определяется размером поля binary с правами
 ...
 sdr = cmm.ExecuteReader(); //-- Получим идентификационную запись пользователя или пусто
 if (!sdr.Read()) throw null;
  //-- Формируем параметры сессии клиента
  idxCatch =  3 ; //-- Ошибка формирования выходных параметров 
  idxКлиент = (Guid)sdr.GetSqlGuid( 1 );	   //-- Получим Guid клиента	
  sdr.GetBytes( 3 , 0 ,TDESKey, 0 ,TDESKey.Length);  //-- Key симметричного алгоритма шифрования
  sdr.GetBytes( 4 , 0 ,cmd, 0 ,cmd.Length);               //-- Разрешенные функции клиента (ПРАВА!!!)
 ...

Далее совсем просто (клиентское приложение):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
namespace nsApp {
  //======================================================
  //==== С П И С О К   П Р А В 
  //=====================================================
  public enum en_ПраваКлиента{
    РаботаCПанельюСправочники,
    РаботаCПанельюПациенты,
    ИзменениеСправочникаСообщений,
    ...
    Мах
  }   
 
  static class app {
  public static byte[] a_ПраваКлиента=new byte[ 256 ];
  
  //-- Получить значение бита в a_ПраваКлиента - Права Клиента
  //=========================================================
  public static bool мдПраваКлиента(int i) {return ((a_Права[i/ 8 ] & (int)( 1  << (i% 8 )))== 0 )?false:true; }
 
  ...


где то в клиентском приложении:

Код: plaintext
1.
2.
3.
4.
5.
  ...
  using nsApp;
  ...
  if(мдПраваКлиента((int)en_ПраваКлиента.РаботаCПанельюСправочники)) {
   ... делаешь нужное ...
  }

С уважением, Владимир
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35071252
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть готовые велосипеды, где все это уже реализованно
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35071632
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЕсть готовые велосипеды, где все это уже реализованно
ссылку дайте плз, посмотреть?
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35071803
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AzMan, NetSqlAzMan
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35071896
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaAzMan, NetSqlAzManа как это поможет в вопросе "Формирование интерфейса в заисимоти от привилегий"?
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35072128
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью SCSF c этим я борюсь следующим образом:
1.Права доступа задаются в NetSqlAzMan
2.Грузятся только те модули на которые есть разрешения у пользователя
3.Команды создаются с условиями(conditions) и привязываются к контролу на форме.
При добавлении команды в DI контейнер, вызывается специально обученная стратегия построения,
которая изменяет статус команды на Unavailable,если нет прав на выполнение(при этом контрол становится невидимым).
4.После определенных телодвижений вызывается RefreshServiсe,который перебирает все нужные команды и меняет им статус в зависимости от выполнения условий для них.При изменении статуса команды на Disabled контрол деактивируется на автомате.
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35072358
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa
3.Команды создаются с условиями(conditions) и привязываются к контролу на форме.
При добавлении команды в DI контейнер, вызывается специально обученная стратегия построения,
которая изменяет статус команды на Unavailable,если нет прав на выполнение(при этом контрол становится невидимым).
это тоже настраивается при помощи АзМана? Или он только доступ к модулям ограничивает на среднем слое?
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35072446
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В NetSqlAzMan задаются права на выполнение команд.
...
Рейтинг: 0 / 0
Формирование интерфейса в заисимоти от привилегий
    #35072707
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>SeVa
>3.Команды создаются с условиями(conditions) и привязываются к контролу на форме.
Вы не приходилось сталкиваться с ситуацией, когда удобнее сгруппировать и команды (пользователей) и контролы и закрепить группы пользователей за соответствующими группами контролов. Например, для описания прав группы Администраторов достаточно одной группы - РазрешеноВсё (слегка утрирую).

С уважением, Владимир.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 2 из 3
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Формирование интерфейса в заисимоти от привилегий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]