Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Организация разграничения доступа исходя из данных объекта

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы специалистов по адаптации системы
Предыдущая тема :: Следующая тема  
Автор Сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Пт 13 Ноя 2009 11:52    Заголовок сообщения: Организация разграничения доступа исходя из данных объекта Ответить с цитатой

Здраствуйте!
У нас возникла задача о запрещении редактирования некоторых свойств класса исходя из некоторой програмной логики
(есть ли у данного объекта дочерние объекты которые "принадлежат" текущему пользователю, есть ли родительские объекты, которые "принадлежат" начальнику текущего пользователя; "принадлежат" значит некое поле имеет ИД объекта "Сотрудник", которому сопоставлен доменный аккаунт )
Системой разграничения прав, присутствующей в Инмете, мы не смогли реализовать такую логику.
Пытаемся делать программно.
Идея такова - на форме, при показе, выполняется скрипт, который выясняет : "таки можно или нет?!" и пытается у PropertyEditor-ов установить Enabled. Но Получаем такую ошибку

---------------------------
Windows Internet Explorer
---------------------------
Ошибка: Устанавливать редактируемость свойства можно только в автосозданной форме.
[SetPropertyEnabled]
---------------------------
ОК
---------------------------

Да форма редактирования не автосозаваемая, а кустомизированная HTML-ная.
Как нам лучше поступить в данной ситуации? и почему таки существует такой запрет на использования простого казалось бы свойства Enabled?

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BSoft



Зарегистрирован: 18.11.2009
Сообщения: 2

СообщениеДобавлено: Ср 18 Ноя 2009 10:28    Заголовок сообщения: Ответить с цитатой

Прошу прощения за оффтоп. А как вы доступаетесь до PropertyEditor-ов? Просто тоже пытаюсь решить такую задачу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Ср 18 Ноя 2009 16:24    Заголовок сообщения: Ответить с цитатой

В следующей версии добавим поддержку свойства "Enabled" для custom-форм.

Получить редактор свойства можно через DetailsBox:
Код:

...
MsgBox DetailsBox.PropEditors("LastName").Enabled
...

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Ср 25 Ноя 2009 13:35    Заголовок сообщения: Ответить с цитатой

Цитата:
В следующей версии добавим поддержку свойства "Enabled" для custom-форм.

хорошо )

а как быть в текущей ситуации?
мы пока сделали следующее : на каждое свойство повесили событие OnChange, в котором происходит проверка, может ли пользователь его менять и если не может возвращает значение и устанавливает ошибку.

Код:
function CanChange_ExecutorPropGR2(byref DetailsBox, PropName)
   CanChange_ExecutorPropGR2 = true
   with DetailsBox.PropEditors(PropName)
      if .IsModified then
         if not DetailsBox.Variables("canEditGR2") then
            .CurValue = .OriginalValue
            OnError DetailsBox.Variables("denyReason2")
            CanChange_ExecutorPropGR2 = false
         end if
      end if
   End With
end function

Вопрос: Это единственный способ решения данной ситуации?

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Чт 26 Ноя 2009 12:06    Заголовок сообщения: Ответить с цитатой

Вот так ИнМета устанавливает признак Enabled:
Код:
sub SetPropertyEnabled(byval aDetailsBox, byval aPropName, byval anEnabled)
   dim anHtmlUtils, anElem
   set anHtmlUtils = CreateObject("InMetaUtils.InMetaHtmlUtils")
 
   if aDetailsBox.IsAutoCreatedForm then
      set anElem = anHtmlUtils.NeedChildElem(aDetailsBox.FormElem, aPropName & "WholeElement")
   else
      set anElem = anHtmlUtils.NeedChildElem(aDetailsBox.FormElem, aPropName & "Element")
   end if
 
   anHtmlUtils.SetElemDisabled anElem, not anEnabled
end sub

В текущих версиях можно применять этот подход.

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы специалистов по адаптации системы Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB