CftClub.ru
Клуб специалистов ЦФТ-Банк

Представление по группе доступа
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеЧт Фев 13, 2025 13:08    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
В Админ1 - это закладка Отладка в редакторе вьюхи
нашел такую функцию SECURITY.Ref_Accessible и поставил во вкладке Условие такой код --проверка доступа по реквизиту
--1=1
Код:
SECURITY.Ref_Accessible(A12_2.C_DEPART, /*PL+*/SYS_CONTEXT('BFF_FG0000005_OPER','DEPART')/*PL-*/, 'USER', 'DEPART')=1 AND A12_1.C_NUM_PK = 'ГЛВ_ХР'

BFF_FG0000005_OPER - это группа доступа пользователя. Скомпилировалась без ошибок, но когда запускаешь ни одной записи не показывает. Может я что-то пропустил в этой функции или что-то неправильное написал?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПт Фев 14, 2025 10:13    Ответить с цитатой
Полезность: Нет оценки
cool_dude пишет:
Volod пишет:
В Админ1 - это закладка Отладка в редакторе вьюхи
нашел такую функцию SECURITY.Ref_Accessible и поставил во вкладке Условие такой код --проверка доступа по реквизиту
--1=1
Код:
SECURITY.Ref_Accessible(A12_2.C_DEPART, /*PL+*/SYS_CONTEXT('BFF_FG0000005_OPER','DEPART')/*PL-*/, 'USER', 'DEPART')=1 AND A12_1.C_NUM_PK = 'ГЛВ_ХР'

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

Функция SYS_CONTEXT используется неверно.
Первый параметр - там вообще сейчас без вариантов должен использоваться user_context
Второй параметр - имя переменной, которую вы перед этим установите в контекст с этим именем

А в функции вообще на этом месте должно быть username пользователя, как я понимаю, т.е. stdlib.userid.[USERNAME]
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеПт Фев 14, 2025 13:29    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
cool_dude пишет:
Volod пишет:
В Админ1 - это закладка Отладка в редакторе вьюхи
нашел такую функцию SECURITY.Ref_Accessible и поставил во вкладке Условие такой код --проверка доступа по реквизиту
--1=1
Код:
SECURITY.Ref_Accessible(A12_2.C_DEPART, /*PL+*/SYS_CONTEXT('BFF_FG0000005_OPER','DEPART')/*PL-*/, 'USER', 'DEPART')=1 AND A12_1.C_NUM_PK = 'ГЛВ_ХР'

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

Функция SYS_CONTEXT используется неверно.
Первый параметр - там вообще сейчас без вариантов должен использоваться user_context
Второй параметр - имя переменной, которую вы перед этим установите в контекст с этим именем

А в функции вообще на этом месте должно быть username пользователя, как я понимаю, т.е. stdlib.userid.[USERNAME]
то что Вы написали то что я понял, сделал так
Код:
SECURITY.Ref_Accessible(A12_2.C_DEPART, sys_context(/*PL+*/user_context/*PL-*/, 'STDLIB.USERID.[USERNAME]'), 'USER', 'DEPART')=1
AND A12_1.C_NUM_PK = 'ГЛВ_ХР'
но выдает ошибку.
А Вы не могли бы подкорректировать мой код?
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Фев 14, 2025 16:53    Ответить с цитатой
Полезность: Нет оценки
Получить юзера - SYS_CONTEXT('IBS_SYSTEM','USER')
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеПт Фев 14, 2025 20:23    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
Получить юзера - SYS_CONTEXT('IBS_SYSTEM','USER')
а как получить группу доступа юзера? Помогите плиз.
Вообще, это возможно реализовать в представлениях?
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПн Фев 17, 2025 08:59    Ответить с цитатой
Полезность: Нет оценки
Если посмотреть исходный код представления, то можно увидеть следующий условия

Код:

  ( SYS_CONTEXT('IBS_SYSTEM','ADMIN')='1' OR EXISTS
    (
      SELECT 1 FROM Criteria_Rights M_R, Subj_Equal SE
       WHERE M_R.Obj_Id ='4469'
         AND M_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
    )
    AND
    ( EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Obj_Id=a1.CLASS_ID AND C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
    )
    AND (EXISTS
      ( SELECT 1 FROM Object_Rights_EX O_E, Subj_Equal SE
         WHERE O_E.Class_Id='BRANCH' AND O_E.Right_Class_Id=a1.CLASS_ID AND O_E.Obj_Id=TO_CHAR(a1.C_FILIAL)
           AND O_E.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
 AND
   exists (select 1 from object_rights_ex o, subj_equal e where e.subj_id=SYS_CONTEXT('IBS_SYSTEM','USER') and o.subj_id=e.equal_id and o.obj_id=to_char(a1.C_FILIAL) and o.right_class_id=a1.CLASS_ID and o.class_id='BRANCH')
   
    )


Но этот код формируется в результате настройки представления и доступа
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеПн Фев 17, 2025 12:33    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
Если посмотреть исходный код представления, то можно увидеть следующий условия

Код:

  ( SYS_CONTEXT('IBS_SYSTEM','ADMIN')='1' OR EXISTS
    (
      SELECT 1 FROM Criteria_Rights M_R, Subj_Equal SE
       WHERE M_R.Obj_Id ='4469'
         AND M_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
    )
    AND
    ( EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Obj_Id=a1.CLASS_ID AND C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
    )
    AND (EXISTS
      ( SELECT 1 FROM Object_Rights_EX O_E, Subj_Equal SE
         WHERE O_E.Class_Id='BRANCH' AND O_E.Right_Class_Id=a1.CLASS_ID AND O_E.Obj_Id=TO_CHAR(a1.C_FILIAL)
           AND O_E.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
 AND
   exists (select 1 from object_rights_ex o, subj_equal e where e.subj_id=SYS_CONTEXT('IBS_SYSTEM','USER') and o.subj_id=e.equal_id and o.obj_id=to_char(a1.C_FILIAL) and o.right_class_id=a1.CLASS_ID and o.class_id='BRANCH')
   
    )


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


Вступление в Клуб: 05.02.2013
СообщениеСр Фев 19, 2025 18:15    Ответить с цитатой
Полезность: Нет оценки
cool_dude пишет:
Volod пишет:
Если посмотреть исходный код представления, то можно увидеть следующий условия

Код:

  ( SYS_CONTEXT('IBS_SYSTEM','ADMIN')='1' OR EXISTS
    (
      SELECT 1 FROM Criteria_Rights M_R, Subj_Equal SE
       WHERE M_R.Obj_Id ='4469'
         AND M_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
    )
    AND
    ( EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Obj_Id=a1.CLASS_ID AND C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
    )
    AND (EXISTS
      ( SELECT 1 FROM Object_Rights_EX O_E, Subj_Equal SE
         WHERE O_E.Class_Id='BRANCH' AND O_E.Right_Class_Id=a1.CLASS_ID AND O_E.Obj_Id=TO_CHAR(a1.C_FILIAL)
           AND O_E.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
 AND
   exists (select 1 from object_rights_ex o, subj_equal e where e.subj_id=SYS_CONTEXT('IBS_SYSTEM','USER') and o.subj_id=e.equal_id and o.obj_id=to_char(a1.C_FILIAL) and o.right_class_id=a1.CLASS_ID and o.class_id='BRANCH')
   
    )


Но этот код формируется в результате настройки представления и доступа
да, я видел этот код, но мне не помог. Просто меня интересует вопрос, можно ли получить группу доступа юзера в представлении? Если Да, то укажите пжл код, если нет и это невозможно, то скажите, чтоб зря время не терять ) А то я уже который день мучаюсь и никак не могу решить данную проблему.
Тему можно закрыть. Нашел решение. Всем спасибо.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

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