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

Как принято решать данную задачу, может быть есть решение какое-нибудь на эту тему? Не городить же для каждой группы свою тучу форм и контролов.
...
Рейтинг: 0 / 0
19.10.2009, 12:14
    #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
19.10.2009, 12:33
    #36259126
griZZZly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы и контролы в учетной системе
trdm,

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

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

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


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

100%
...
Рейтинг: 0 / 0
19.10.2009, 16:00
    #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
19.10.2009, 16:37
    #36260049
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы и контролы в учетной системе
авторТоже сомнительный вариант. Видимо Вам никогда не приходилось выслушивать фразы типа "А почему я вот в это окошечко не могу ничего написать?".
Если уж Вы настаиваете на данном варианте, спрошу вот что. Есть ли какая-нибудь IDE, которая позволяет автоматом, скажем, делать форму чуть менье, если один из контролов невидим. Можно конечно велосипед написать, но как-то не очень хочется.
Велосипед готов.Перед изменением свойства бизнес-объекта делается валидация,если нет прав,свойство становится невалидным,в поле редактирования появляется tooltip c нужным пояснением.
...
Рейтинг: 0 / 0
19.10.2009, 16:38
    #36260056
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы и контролы в учетной системе
griZZZly пишет:

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

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

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

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

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

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

griZZZly, приведите какой-нибудь пример поконкретнее, чтоб было понятно, в чем именно проблема.
...
Рейтинг: 0 / 0
20.10.2009, 00:31
    #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]