Представление по группе доступа
На страницу Пред. 1, 2
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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')
)
|
Но этот код формируется в результате настройки представления и доступа | да, я видел этот код, но мне не помог. Просто меня интересует вопрос, можно ли получить группу доступа юзера в представлении? Если Да, то укажите пжл код, если нет и это невозможно, то скажите, чтоб зря время не терять ) А то я уже который день мучаюсь и никак не могу решить данную проблему. | Тему можно закрыть. Нашел решение. Всем спасибо. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|