powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Ограничить "доступ" на запись в Tabular Form
6 сообщений из 6, страница 1 из 1
Ограничить "доступ" на запись в Tabular Form
    #37611207
Apex-beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые форумчане !

В Apex новичок.Посмотрел на форуме, погуглил, почитал "Oracle.APEX.4.0.Cookbook",но решения

пока найти не могу.
Может смотрю не туда. Подскажите, где копать, если не трудно.

1. Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product

2. APEX VERSION 4.1.0.00.32


В базе данных делаю следующее:

1. Создаю пользователя DB_USER:

Код: plsql
1.
2.
3.
4.
5.
create user DB_USER
   identified by ""
   grant dba to DB_USER;
   default tablespace USERS
   profile DEFAULT;




2. В схеме "DB_USER" создаю таблицу TEST:

Код: plsql
1.
2.
3.
4.
5.
create table TEST
(
  ID     NUMBER(9),
  AUTHOR VARCHAR2(100)
)



3. Создаю роль TEST_ROLE:

create role TEST_ROLE;
grant select, insert, update, delete on TEST to TEST_ROLE;

4. Создаю пользователя и даю ему эту роль:

Код: plsql
1.
2.
3.
4.
5.
create user TEST
   identified by ""
   default tablespace USERS
   profile DEFAULT;
grant test_role to TEST;



Далее делаю простое приложение:

1. Application Type: "Database"

2. Schema "DB_USER"

3. Authentication Scheme: "Database Account"

4. Создаю страничку типа Tabular Form на основе таблички TEST
с полями ID и AUTHOR.

5. В базе данных делаю функцию

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace function app_user_name (p_username in VARCHAR2)
return VARCHAR2
is
  l_name varchar2(100);
begin

  l_name:=p_username;

    return l_name;

end;



6. Меняю атрибуты столбца AUTHOR:
Column Attributes: AUTHOR -> Tabular Form Attributes
Default Type = "PL/SQL Expression or Function"
Default = "app_user_name(:APP_USER)"

7. Теперь, если я на залогинился в приложение под пользоателем TEST
и добавил строчку в Tabular Form, то в поле AUTHOR автоматически
подставится имя пользователя, т.е. "TEST" и после нажатия кнопки
"Submit" данные сохранятся в базе.


Вопрос такой:

У меня в базе будет много пользователей, но я хочу сделать так, чтобы пользователь
на страничке мог редактировать только "свои" записи (согласно значению поля AUTHOR),
а "чужие" мог только просматривать и если пользователь пытается редактировать "чужую"

запись,то ему выводилось соответсвующее сообщение об ошибке.

Возможно ли так сделать ? Заранее благодарен.
...
Рейтинг: 0 / 0
Ограничить "доступ" на запись в Tabular Form
    #37611485
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex-beginner,

1. В tabular forms это сделать сложно, можно сделать Form on a table (из 2 страниц), где ссылку Edit вычислять c использованием decode (не в column attributes). Либо поделить на регион с редактированием и обычный регион (standart region), где выфильтровывать нужные записи. Если нужно всё-таки tabular forms смотрите apex item api.

2. TEST_ROLE в данном случае не нужна, т.к. все запросы выполняются под левым пользователем (кот. настраивали при установке), роли соотвенно не применяются.
...
Рейтинг: 0 / 0
Ограничить "доступ" на запись в Tabular Form
    #37611499
Apex-beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, попробую.
...
Рейтинг: 0 / 0
Ограничить "доступ" на запись в Tabular Form
    #37611588
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevstandar d region
Тьфу ты, имел ввиду classic report
...
Рейтинг: 0 / 0
Ограничить "доступ" на запись в Tabular Form
    #37611595
Apex-beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть решение в триггере на таблицу TEST использовать функцию APEX_CUSTOM_AUTH.GET_USER, которая вернет пользователя APEX-а
А дальше более-менее все понятно...
...
Рейтинг: 0 / 0
Ограничить "доступ" на запись в Tabular Form
    #37614201
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex-beginnerЕсть решение в триггере на таблицу TEST использовать функцию APEX_CUSTOM_AUTH.GET_USER, которая вернет пользователя APEX-а
А дальше более-менее все понятно...

Если нужно только сообщение об ошибке в 4.1 появилась возможность делать сложные validations на столбцы, при создании выбрать тип tabular forms, имя столбца там прописывается :COLUMN_ALIAS

вместо APEX_CUSTOM_AUTH.GET_USER, можно короче, v('USER') или в триггере nvl( v('USER'), user )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Ограничить "доступ" на запись в Tabular Form
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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