powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Организация грамотного постраничного доступа к страницам
8 сообщений из 8, страница 1 из 1
Организация грамотного постраничного доступа к страницам
    #35569889
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги, прошу Вас поделиться опытом, как грамотно организовать доступ.
Имею приложение в APEX (боллее 40 страниц), есть 3 группы пользователей, нужно часть страниц показывать всем, часть одной, и т.д.
Делаю так и постепенно понимаю что это не то:
1. Завожу пользователей и присваиваю им группы;
2. В объектах страниц (в разделе Conditional Display) проверяю группу пользователя get_group_user....
и как то это все коряво получатся, подскажите плиз как разграничить доступ на уровне страниц, на уровне элементов вроде понятно..
+ нужно еще и закладки скрывать :(

C Уважением,
Алексей.
...
Рейтинг: 0 / 0
Организация грамотного постраничного доступа к страницам
    #35569929
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сколько я понимаю, надо делать ч/з Authorization Scheme
...
Рейтинг: 0 / 0
Организация грамотного постраничного доступа к страницам
    #35569988
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIGITALPROНа сколько я понимаю, надо делать ч/з Authorization Scheme

Угу, спасибо, разбираюсь...
но там тоже нужно указывать условия отображения. Нет возможности указания пользователей имеющих доступ, груп и т.д.
Может есть уже варианты обкатанные на практике.
1 страница - видят все
2 страница - видит группа 1
3 страница - видят группы 1 и 2
...
Рейтинг: 0 / 0
Организация грамотного постраничного доступа к страницам
    #35570013
Фотография l_kator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.Функция должна отработать один раз и вернуть, допустим, список страниц, на которые есть доступ у группы
2. схема авторизации должна проверять есть ли номер текущей страницы в списке разрешенных для этой группы

что-то такое
...
Рейтинг: 0 / 0
Организация грамотного постраничного доступа к страницам
    #35570030
VladIg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexProOra DIGITALPROНа сколько я понимаю, надо делать ч/з Authorization Scheme
...1 страница - видят все
2 страница - видит группа 1
3 страница - видят группы 1 и 2
Для каждого вариант, указанного выше создаешь схему авторизации. И в зависимости от того как нужно, навешиваешь их на Tabs у конкретной страницы(Shared Components>Tabs),в разделе Authorization.
То есть нужные Закладки будут видны тольте тем, кто входит в навешенную схему авторизации.
У меня сделано так, но нет цели во чтобы то не стало ограничить доступ. Сделано, чтобы куча закладок не бросалась в глаза тем людям, которые ими не пользуются. Возможно надо еще и на саму страницу весить схему.
...
Рейтинг: 0 / 0
Организация грамотного постраничного доступа к страницам
    #35585391
V_i_t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexProOraУважаемые коллеги, прошу Вас поделиться опытом, как грамотно организовать доступ.
Имею приложение в APEX (боллее 40 страниц), есть 3 группы пользователей, нужно часть страниц показывать всем, часть одной, и т.д.
Делаю так и постепенно понимаю что это не то:
1. Завожу пользователей и присваиваю им группы;
2. В объектах страниц (в разделе Conditional Display) проверяю группу пользователя get_group_user....
и как то это все коряво получатся, подскажите плиз как разграничить доступ на уровне страниц, на уровне элементов вроде понятно..
+ нужно еще и закладки скрывать :(

C Уважением,
Алексей.

Базовое описание для создание управляемой схемой авторизаций по ссылке:
http://djmein.blogspot.com/2007/07/custom-authentication-authorisation.html
Если нужно расширить функционал и добавить просмотр по страницам в зависимости от авторизации то необходимо создать таблицу пользователей с полем для уровня авторизаций.
CREATE TABLE APP_USERS (
USERNAME VARCHAR2(10),
PASSWORD VARCHAR2(255),
AUTH Varchar2(1)
)
/

gde auth naprimer budet
3 - administrator aplikacii
2 - user s vozmozhnostjami redaktirovanija
1 - user toljko prosmatrivajushij

Далее (описание продолжает темы ссылки выше):

В зависимости от того как организован у Вас доступ к страницам (TAB либо List либо другое).
Для каждого элемента TAB ili LIST в
Condition -> Condition Type -> Укажите Exists (SQL query at least returns one row)
-> Expression 1 -> select '1' from apex_users where upper(username)=upper(:APP_USER) and auth='1'

- Из этого описания следует, что к указаному элементу пусть то будет страница, регион страницы или другой элемент доступ будут иметь только пользователи с авторизацией '1' - (user toljko prosmatrivajushij).

То же самое следует повторить и для остальных страниц, TAB и LIST.
Расширить схему авторизаций можно меняя селект:
select '1' from apex_users where upper(username)=upper(:APP_USER) and auth<'3' - элемент будет доступен всем пользователям 1-2 групп и 3-й группе недоступен и т.д.

Затем на каждой странице нужно указать в полях элементов такие же авторизации. Например скрыть кнопки редактирования в форме для 1-й группы но для 2-3-й открытые и т.д.
...
Рейтинг: 0 / 0
Организация грамотного постраничного доступа к страницам
    #35587317
V_i_t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
V_i_t AlexProOraУважаемые коллеги, прошу Вас поделиться опытом, как грамотно организовать доступ.
Имею приложение в APEX (боллее 40 страниц), есть 3 группы пользователей, нужно часть страниц показывать всем, часть одной, и т.д.
Делаю так и постепенно понимаю что это не то:
1. Завожу пользователей и присваиваю им группы;
2. В объектах страниц (в разделе Conditional Display) проверяю группу пользователя get_group_user....
и как то это все коряво получатся, подскажите плиз как разграничить доступ на уровне страниц, на уровне элементов вроде понятно..
+ нужно еще и закладки скрывать :(

C Уважением,
Алексей.

Базовое описание для создание управляемой схемой авторизаций по ссылке:
http://djmein.blogspot.com/2007/07/custom-authentication-authorisation.html
Если нужно расширить функционал и добавить просмотр по страницам в зависимости от авторизации то необходимо создать таблицу пользователей с полем для уровня авторизаций.
CREATE TABLE APP_USERS (
USERNAME VARCHAR2(10),
PASSWORD VARCHAR2(255),
AUTH Varchar2(1)
)
/

gde auth naprimer budet
3 - administrator aplikacii
2 - user s vozmozhnostjami redaktirovanija
1 - user toljko prosmatrivajushij

Далее (описание продолжает темы ссылки выше):

В зависимости от того как организован у Вас доступ к страницам (TAB либо List либо другое).
Для каждого элемента TAB ili LIST в
Condition -> Condition Type -> Укажите Exists (SQL query at least returns one row)
-> Expression 1 -> select '1' from apex_users where upper(username)=upper(:APP_USER) and auth='1'

- Из этого описания следует, что к указаному элементу пусть то будет страница, регион страницы или другой элемент доступ будут иметь только пользователи с авторизацией '1' - (user toljko prosmatrivajushij).

То же самое следует повторить и для остальных страниц, TAB и LIST.
Расширить схему авторизаций можно меняя селект:
select '1' from apex_users where upper(username)=upper(:APP_USER) and auth<'3' - элемент будет доступен всем пользователям 1-2 групп и 3-й группе недоступен и т.д.

Затем на каждой странице нужно указать в полях элементов такие же авторизации. Например скрыть кнопки редактирования в форме для 1-й группы но для 2-3-й открытые и т.д.

Забыл добавить что в оригинальном посте забыта одна настройка:
Home>Application Builder>Application XXX>Shared Components>Authentication Schemes>Edit Authentication Scheme -> Page Session Management -> Session Not Valid Page -> Укажите здесь страницу авторизации в апликацию (где вводятся Username i Password) по умолчанию она 101. и там же в разделе Logout URL укажите wwv_flow_custom_auth_std.logout?p_this_flow=&APP_ID.&p_next_flow_page_sess=&APP_ID.:1.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Организация грамотного постраничного доступа к страницам
    #37563202
Valkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оператор "Exists (SQL query at least returns one row)" это очень шаткая штука для разграничения прав ...
я лично написал функцию ,результат которой можно оценивать как уровень доступа на странице

булеан потому что так апекс требует )

Код: plsql
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.
    FUNCTION user_role_auth (p_username    VARCHAR2,
                             p_userrole    NUMBER,
                             p_reverse     VARCHAR2 DEFAULT NULL)
        RETURN BOOLEAN
    IS
        -- p_userrole - параметр указывающий на то по какому значению уровня безопасности разрешено действие
        -- p_reverse - параметр который может проинвертировать результат если это нужно
        -----например  пользователь 'test'  имеет  security_group_id = 3
        ----- при параметрах p_userrole = 2 получим запрет
        ----- при параметрах p_userrole = 2 и p_reverse not null  получим разрешено
        ----- таким образом одни права запрещаются и другие МОЖНО включить
        user_role   NUMBER;
        user_res    BOOLEAN;
    BEGIN
        SELECT   t.security_group_id
          INTO   user_role
          FROM   ba2_chk_user t
         WHERE   AND UPPER (user_name) = UPPER (p_username);

        IF user_role <= p_userrole
        THEN
            --доступ высокого уровня    разрешено
            --true
            user_res := TRUE;
        ELSE
            -- доступ запрещён
            --false
            user_res := FALSE;
        END IF;

        IF p_reverse IS NOT NULL
        THEN
            IF user_res
            THEN
                user_res := FALSE;
            ELSE
                user_res := TRUE;
            END IF;
        END IF;

        RETURN (user_res);
    END user_role_auth;



на апексовой странице в conditions
выставляем Condition Type = "PL/SQL Expression"
"Expression 1" = "user_role_auth (:P101_USERNAME,2)"
или
"Expression 1" = "user_role_auth (:P101_USERNAME,2,'Y')"

например 1-Admin, 2-Power_User, 3-Viewer

и ролей можно придумывать столько, сколько угодно главное чтобы они шли по нарастающей ... то есть 1-бог а 3-никто

таким образом одни Regions которые можно смотреть покажутся ... а в другом случае наоборот

я вот так решил проблему доступа. )
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Организация грамотного постраничного доступа к страницам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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