powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Формы и контролы в учетной системе
25 сообщений из 59, страница 1 из 3
Формы и контролы в учетной системе
    #36258955
griZZZly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. При разработке большинства ИС встает задача разграничения прав доступа для двух (минимум) групп - Пользователь и Администратор. Администратора отличает от Пользователя следующее:
- дополнительные кнопки/поля ввода в формах добавления/редактирования
- дополнительные колонки в таблицах при просмотре данных
- и т.д.

Как принято решать данную задачу, может быть есть решение какое-нибудь на эту тему? Не городить же для каждой группы свою тучу форм и контролов.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259055
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griZZZlyЗдравствуйте. При разработке большинства ИС встает задача разграничения прав доступа для двух (минимум) групп - Пользователь и Администратор. Администратора отличает от Пользователя следующее:
- дополнительные кнопки/поля ввода в формах добавления/редактирования
- дополнительные колонки в таблицах при просмотре данных
- и т.д.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
//****************************************************************************** 
// форма элемента справочника "Пользователи"
Процедура ПриОткрытии()	// Предопределенная процедура
	глПриОткрытииФормыСправочника(Контекст, гКонтФормыСправочника);
	
	Если НазваниеНабораПрав()<>"Администратор" Тогда
	    Форма.Код			.Доступность( 0 ); 	Форма.сКод			.Доступность( 0 );
	    Форма.Наименование	.Доступность( 0 );    Форма.сНаименование	.Доступность( 0 );
	    Форма.ОсновнаяФирма	.Доступность( 0 );    Форма.сОсновнаяФирма.Доступность( 0 );
	    Форма.КатегорияЦен	.Доступность( 0 );	Форма.сКатегорияЦен	.Доступность( 0 );
	    Форма.ОсновнаяКасса	.Доступность( 0 );	Форма.сОсновнаяКасса.Доступность( 0 );
	    Форма.ОсновнойСклад	.Доступность( 0 );	Форма.сОсновнойСклад	.Доступность( 0 );
	    Форма.СкладПоКнопке	.Доступность( 0 );	Форма.сСкладПоКнопке	.Доступность( 0 );
		
		Форма.ПоказыватьВесОбъемВНакладных.				Доступность( 0 );
		Форма.ПоказыватьСебестоимостьВДокументах.		Доступность( 0 );
		Форма.ПоказыватьПрибыльКогдаНетСебестоимости.	Доступность( 0 );
		Форма.ДоступКФлагуТипУчетаДокумента.			Доступность( 0 );
		
		Форма.ВыборСкладаПередЗаполнениемНакладныхСФильтром	.Доступность( 0 );
		Форма.ДобавитьНеФильтроватьКВарианамЗаполнения		.Доступность( 0 );
		Форма.ДобавитьТолькоНеОтпущеныеПоСчету				.Доступность( 0 );
		
		Форма.ТорговаяТочка	.				Доступность( 0 );			
		Форма.сТорговаяТочка.				Доступность( 0 );
		Форма.ПостояннаяТорговаяТочка.		Доступность( 0 );	// Это флажек.
		Форма.ЗапретитьОперации.			Доступность( 0 );
		Форма.ЗапретитьМенятьЦены.			Доступность( 0 );
		Форма.кнХИмяПостоянногоКомпьютера.	Доступность( 0 );
		Форма.кнУстановитьКомпьютер.		Доступность( 0 );
		Форма.РазрешеноУстанавливатьПостоянныйКомпьютер.		Доступность( 0 );

		Форма.ЭтоСотрудникСервиса.			Доступность( 0 );
		Форма.РазрешитьЗаписьКлиентаПриДублеИНН.Доступность( 0 );
		
		Форма.РазрешитьМенятьЦеныНаУслуги.Доступность( 0 );
		Форма.ЗапретитьПроводитьРозничную.Доступность( 0 );
		//Форма.ЗакрытьДокПослеПечати .Доступность( 0 );
		
		Форма.ИмеетПравоМенятьСкидкуУКлиента.Доступность( 0 );
		Форма.ИмеетПравоРешатьКогдаВыдатьКарту.Доступность( 0 );
		Форма.ЗапретитьЗаписьПКО_РКО_ПДС.Доступность( 0 );
		
		Форма.Меню_ЗакрытьМенюФайлы.Доступность( 0 );		
		Форма.ИмеетПравоРедактироватьДокумЗанятость.Доступность( 0 );
		
		Если ПустоеЗначение(глПользователь) =  0  Тогда
			Если Выбран() =  1  Тогда
				Если  (глПользователь.ТекущийЭлемент()<>ТекущийЭлемент()) Тогда
					Предупреждение("Вам запрещено редактировать чужие учетные записи.", 10 ); СтатусВозврата( 0 ); Возврат;
				КонецЕсли;
			КонецЕсли; 
		КонецЕсли;
	КонецЕсли;
	
	Форма.РазрешитьИспользоватьОтчетПоФизЛицам.Доступность( 0 );
	Форма.РедакторДокаРегистрацииПриходовУходов.Доступность( 0 );
	Если Форма.ТолькоПросмотр() =  0  Тогда
		Если глЭтоСуперАдминистратор() = Да  Тогда
			Форма.РазрешитьИспользоватьОтчетПоФизЛицам.Доступность( 1 );
			Форма.РедакторДокаРегистрацииПриходовУходов.Доступность( 1 );
	    КонецЕсли; 
	КонецЕсли; 
	.............
КонецПроцедуры	// ПриОткрытии

...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259126
griZZZly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trdm,

ну это понятно. В общем случае у пользователя по сравнению с администратором будет куча задисабленных контролов, что не есть хорошо.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259160
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griZZZly wrote:

> Как принято решать данную задачу, может быть есть решение какое-нибудь
> на эту тему? Не городить же для каждой группы свою тучу форм и контролов.

Разработкой своей подсистемы безопасности, естественно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259270
griZZZly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Разработкой своей подсистемы безопасности, естественно.


Не очень понятно, что вы имели в виду. Интересует реализация именно в контексте UI.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259574
OZKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перед открытием формы проверять права и контролы на которые они отсутствуют банально скрывать, вообще не понятно в чем вопрос!?!
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259595
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В подобных задачах удобней отказаться от групп и ролей(обычно их много) и оперировать с правилами а'la "Создать Счет","Редактировать Счет","Подписать Счет".Я с этим боролся следующим способом:
- Для разграничения прав доступа идеально подошел NetSqlAzMan.В нем каждому правилу можно разрешить/запретить доступ ролям и(или) пользователям.Группы определяются запросами из AD или внешней БД(отдел или должность из справочников).Каждый пользователь должен иметь уникальный ID,которым может быть учетка операционки или ID из справочника сотрудников.
-После регистрации пользователя в системе динамически загружаются только те модули,которые ему разрешены.При инициализации модуля делается привязка команд к элементам управления(кнопка,пункт меню и тд).В зависимости от атрибутов комманд(PermissionName;Hide или Disable) элементы управления активируются/деактивируются/не показываются
- В каждом бизнес-классе указываются права на выполнение SCRUD(CanEditObject,CanCreateObject,CanDeleteObject, etc) и на чтение/редактирование полей.При выполнении SCRUD осуществляется проверки на допустимость,если нет прав,то выводится сообщение - "У Вас нет доступа на выполнение операции "Такой-то"".
- Для построения гридов отдельная фабрика - GridBuilder,которая создает только доступные пользователю поля
- Для форм спецконтрол,который в зависимости от прав на чтение/редактирования поля бизнес-класса показывает/не показывает значение,разрешает/запрещает редактирование.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259615
aston
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторые системы формируют контролы с "действиями" (или список действий как в Windows Explorer) динамически под соответствующий набор прав, разрешающих те или иные действия.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259641
griZZZly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OZKAПеред открытием формы проверять права и контролы на которые они отсутствуют банально скрывать, вообще не понятно в чем вопрос!?!
А теперь представьте себе форму, в которой 5 из 10 текстбоксов скрыты. По-моему получится не очень красиво.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259666
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА теперь представьте себе форму, в которой 5 из 10 текстбоксов скрыты. По-моему получится не очень красиво.
Их можно также банально показывать в неактивном состоянии
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259688
griZZZly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaавторА теперь представьте себе форму, в которой 5 из 10 текстбоксов скрыты. По-моему получится не очень красиво.
Их можно также банально показывать в неактивном состоянии
Тоже сомнительный вариант. Видимо Вам никогда не приходилось выслушивать фразы типа "А почему я вот в это окошечко не могу ничего написать?".
Если уж Вы настаиваете на данном варианте, спрошу вот что. Есть ли какая-нибудь IDE, которая позволяет автоматом, скажем, делать форму чуть менье, если один из контролов невидим. Можно конечно велосипед написать, но как-то не очень хочется.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259721
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griZZZlyТоже сомнительный вариант. Видимо Вам никогда не приходилось выслушивать фразы типа "А почему я вот в это окошечко не могу ничего написать?".

100%
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36259915
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как я делаю:

у меня все кнопки, имена менюшек в своем стандарте... например:
менюшке:
M_PAYMENTS_ACTIVE
M_.....
cmp_PAYMENTS_ACTIVE_BUTTON_DELETE
cmp_PAYMENTS_ACTIVE_BUTTON_INSERT
....
и т.д.


создаю таблицу соответствие роли и имена компонентов к тем нету доступа а далще в коде:

при входе делается селект все записи где груп_ид=груп_ид пользователя, далще уже имя формы, findscomponent as klass komponenta visible = false
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260049
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТоже сомнительный вариант. Видимо Вам никогда не приходилось выслушивать фразы типа "А почему я вот в это окошечко не могу ничего написать?".
Если уж Вы настаиваете на данном варианте, спрошу вот что. Есть ли какая-нибудь IDE, которая позволяет автоматом, скажем, делать форму чуть менье, если один из контролов невидим. Можно конечно велосипед написать, но как-то не очень хочется.
Велосипед готов.Перед изменением свойства бизнес-объекта делается валидация,если нет прав,свойство становится невалидным,в поле редактирования появляется tooltip c нужным пояснением.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260056
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griZZZly пишет:

> Не очень понятно, что вы имели в виду. Интересует реализация именно в
> контексте UI.

Ну так а UI и не меняется. Меняются только права пользователя.

Можно конечно по правам вычислять, может ли конкретный пользователь
открывать конкретную форму, но мы например такой ерундой не занимаемся.
Ну, откроет форму, нажмёт "сохранить" -- ему скажут: "Извини, брат, нельзя
тебе".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260114
aston
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griZZZlyOZKAПеред открытием формы проверять права и контролы на которые они отсутствуют банально скрывать, вообще не понятно в чем вопрос!?!
А теперь представьте себе форму, в которой 5 из 10 текстбоксов скрыты. По-моему получится не очень красиво.

Это не проблема на самом деле. Грамотный проектировщик интерфейса не допустит такого.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260380
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griZZZlytrdm,
ну это понятно. В общем случае у пользователя по сравнению с администратором будет куча задисабленных контролов, что не есть хорошо.
Это нормально. Некоторые флаги например недоступны пользователю, но влияют на его работу и он должен знать где их искать и где смотреть, что-бы не задавать лишних вопросов.
ПС. А я тебе и не предлагаю эту схему, как единственно возможную.
Лучше когда ты будешь иметь представление о нескольких схемах, что-бы выбрать наиболее подходящую, так что не води носом и завязывай с критикой.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260395
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaВ подобных задачах удобней отказаться от групп и ролей(обычно их много) и оперировать с правилами а'la "Создать Счет","Редактировать Счет","Подписать Счет".Я с этим боролся следующим способом:
- Для разграничения прав доступа идеально подошел NetSqlAzMan.В нем каждому правилу можно разрешить/запретить доступ ролям и(или) пользователям.Группы определяются запросами из AD или внешней БД(отдел или должность из справочников).Каждый пользователь должен иметь уникальный ID,которым может быть учетка операционки или ID из справочника сотрудников.
это сойдет для немногопользовательской проги, статичного не обновляемого софта или ларька, но при разрастании системы настроек и увеличении пользователей твой админ будет клять тебя матом из-за пустой траты времени на расстановку галок.
Система же ролей и профилей избавит тебя от такого головняка.
Проверено на практике.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260430
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторэто сойдет для немногопользовательской проги, статичного не обновляемого софта или ларька, но при разрастании системы настроек и увеличении пользователей твой админ будет клять тебя матом из-за пустой траты времени на расстановку галок.
Система же ролей и профилей избавит тебя от такого головняка.
Проверено на практике
C точностью до наоборот.В последнем проекте вместо получасового маразма,как в предущей системе,достаточно добавить пользователя в справочник сотрудников и все.При необходимости можно сделать тонкие настройки.С ролями я плавал и есть с чем сравнивать.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260436
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кроме того,правила весьма ладно стыкуются со всеми остальными слоями
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260447
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaавторэто сойдет для немногопользовательской проги, статичного не обновляемого софта или ларька, но при разрастании системы настроек и увеличении пользователей твой админ будет клять тебя матом из-за пустой траты времени на расстановку галок.
Система же ролей и профилей избавит тебя от такого головняка.
Проверено на практике
C точностью до наоборот.В последнем проекте вместо получасового маразма,как в предущей системе,достаточно добавить пользователя в справочник сотрудников и все.При необходимости можно сделать тонкие настройки.С ролями я плавал и есть с чем сравнивать.
Сколько у тебя юзверей и какая текучка?
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260466
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaавторэто сойдет для немногопользовательской проги, статичного не обновляемого софта или ларька, но при разрастании системы настроек и увеличении пользователей твой админ будет клять тебя матом из-за пустой траты времени на расстановку галок.
Система же ролей и профилей избавит тебя от такого головняка.
Проверено на практике
C точностью до наоборот.В последнем проекте вместо получасового маразма,как в предущей системе,достаточно добавить пользователя в справочник сотрудников и все.При необходимости можно сделать тонкие настройки.С ролями я плавал и есть с чем сравнивать.
А ты понимаешь, что с добавлением объекта или пользователя у тебя матрица комбинаций растет?
Допустим, что у тебя порядка 50 пользователей и около 120 регулируемых объектов у каждого из которых 5 условных разрешений.
Матрица одного пользователя по разрешениям: 120 * 5 = 600 "галок" при добавлении 3 без системы роле пользователей тебе прийдется проставить 600 * 3 = 1800 галок.
Классно? А если к этому добавить индивидуальные профили на каждого? :)
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260593
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА ты понимаешь, что с добавлением объекта или пользователя у тебя матрица комбинаций растет?
Допустим, что у тебя порядка 50 пользователей и около 120 регулируемых объектов у каждого из которых 5 условных разрешений.
Матрица одного пользователя по разрешениям: 120 * 5 = 600 "галок" при добавлении 3 без системы роле пользователей тебе прийдется проставить 600 * 3 = 1800 галок.
Классно? А если к этому добавить индивидуальные профили на каждого? :)
В последнем проекте практически на каждое разрешение нужно было бы создавать свой профиль.
Посему профили по-сути и есть разрешение(правило).Называть правило профилем - нелогично и путанно.Правилу можно задать разрешения на роли и(или) пользователю.Пользователь может входить в несколько групп.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260732
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас в банальном казалось бы справочнике продукции вообще права на правку полей раздаются чуть ли не поштучно. Полей много. Все видят все поля, но править могут только то, что положено. Например отдел поставок правит только информацию, касающуюся поставок этого товара: поставщиковское название, кодировку и т.п. Конструкторской-технологический отдел отвечает за вес, размеры и прочие подобные характеристики и т.д. Шли к этому долгим путем по граблям. Причем эта схема сделана не только для продукции, а вообще для всех справочников. В базовой форме, от которой наследуются прочие формы справочников, присто при открытии делается банальная проверка наличия прав на UPDATE полей в соответствующих таблицах. Если прав нет, то компонентам выставляется r/o и меняется цвет фона, там где это применимо.

Если же логика требует именно скрывать с формы поля, и это вызывает какие-то затруднения почему-то, то стоит пересмотреть проектирование UI. Логически перегруппировать поля, разнести по закладкам или вообще структурно переделать.

А касательно исходного вопроса - лично мне непонятно, зачем администраторам лезть в обычные пользовательские формы? Что администратор забыл, к примеру, в форме счета?

griZZZly, приведите какой-нибудь пример поконкретнее, чтоб было понятно, в чем именно проблема.
...
Рейтинг: 0 / 0
Формы и контролы в учетной системе
    #36260896
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaавторА ты понимаешь, что с добавлением объекта или пользователя у тебя матрица комбинаций растет?
Допустим, что у тебя порядка 50 пользователей и около 120 регулируемых объектов у каждого из которых 5 условных разрешений.
Матрица одного пользователя по разрешениям: 120 * 5 = 600 "галок" при добавлении 3 без системы роле пользователей тебе прийдется проставить 600 * 3 = 1800 галок.
Классно? А если к этому добавить индивидуальные профили на каждого? :)
В последнем проекте практически на каждое разрешение нужно было бы создавать свой профиль.
Посему профили по-сути и есть разрешение(правило).Называть правило профилем - нелогично и путанно.Правилу можно задать разрешения на роли и(или) пользователю.Пользователь может входить в несколько групп.
Чета ты набаламутил, фиг разберешь.
У себе в системе называю профилем набор правил. Профиль можно присвоить любому пользователю динамически во время работы системы. Заготовленные профили спасают от кучи оптичиваний.
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 1 из 3
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Формы и контролы в учетной системе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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