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

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


Вступление в Клуб: 27.02.2014
СообщениеПт Окт 23, 2015 17:20   PERSONNEL Ответить с цитатой
Полезность: Нет оценки
Добрый день всем, может у кого была такая тема у пользователя есть представление Полный список в типе Персональный состав органов управления, но записи ему не видны там. Из под доступа админского все видно, смотрел представление, доступ по реквизиту не проверяется, в тексте представления тоже толком ничего, где еще рыть:
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеПт Окт 23, 2015 18:56    Ответить с цитатой
Полезность: Нет оценки
Попробуй зайти в VW_CRIT_PERSONNEL_ALL и принудительно перекомпилировать, нажав кнопку "Компилировать", не редки случаи когда это прокатывает...
Pupil
Участник - экстремал


Вступление в Клуб: 27.02.2014
СообщениеПт Окт 23, 2015 19:23    Ответить с цитатой
Полезность: Нет оценки
Да, тоже вначале так и подумал перекомпилил, но нет все равно также, печалька(
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеПт Окт 23, 2015 19:27    Ответить с цитатой
Полезность: Нет оценки
Pupil пишет:
Да, тоже вначале так и подумал перекомпилил, но нет все равно также, печалька(


Тогда 90 к 10 что доступ... Туда копай...
Там вьюха то пустая... нет условий никаких


Забираю свои слова назад...условия всё таки есть)))

Код:

/* Реальный текст */
SELECT
A1_1.Id ID, 'PERSONNEL' Class_Id, A1_1.COLLECTION_ID Collection_Id,
A2_1.C_NAME C_1, A1_1.C_CLIENT REF1,
A3_1.C_VALUE C_2, A1_1.C_CASTA REF2,
A1_1.COLLECTION_ID U_1
 FROM Z#PERSONNEL A1_1,
 Z#CASTA A3_1,
 Z#CLIENT A2_1
 WHERE A1_1.C_CASTA = A3_1.ID(+)
 AND A1_1.C_CLIENT = A2_1.ID(+)
 AND
  ( SYS_CONTEXT('IBS_SYSTEM','ADMIN')='1' OR EXISTS
    (
      SELECT 1 FROM Criteria_Rights M_R, Subj_Equal SE
       WHERE M_R.Obj_Id ='298485326'
         AND M_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
    )
    AND
    ( A1_1.COLLECTION_ID IS NULL AND EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Obj_Id='PERSONNEL' AND C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
      OR
      A1_1.COLLECTION_ID IS NOT NULL AND EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER') AND C_R.Obj_Id=
        ( SELECT C2O.Class_Id FROM VW_C2O_PERSONNEL C2O WHERE C2O.Id = A1_1.COLLECTION_ID )
      )
    )
  )

 AND SYS_CONTEXT('IBS_OPTIONS','298485326') is null
 AND SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') is null



Я бы на твоем месте сделал бы копию полного списка
...далее последовательно из запроса вырезал бы куски

Код:
SYS_CONTEXT('IBS_SYSTEM','ADMIN')='1' OR EXISTS
    (
      SELECT 1 FROM Criteria_Rights M_R, Subj_Equal SE
       WHERE M_R.Obj_Id ='298485326'
         AND M_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
    )


Код:
    AND
    ( A1_1.COLLECTION_ID IS NULL AND EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Obj_Id='PERSONNEL' AND C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER')
      )
      OR


Код:
      A1_1.COLLECTION_ID IS NOT NULL AND EXISTS
      (
        SELECT 1 FROM Class_Rights C_R, Subj_Equal SE
         WHERE C_R.Subj_Id=SE.Equal_Id AND SE.Subj_Id=SYS_CONTEXT('IBS_SYSTEM','USER') AND C_R.Obj_Id=
        ( SELECT C2O.Class_Id FROM VW_C2O_PERSONNEL C2O WHERE C2O.Id = A1_1.COLLECTION_ID )
      )
    )


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

А дальше... думать какую "наку" настроить, чтобы место не блокировало гармоничный ход событий... как то так...
nairka1973
Участник


Вступление в Клуб: 22.11.2012
СообщениеПн Окт 26, 2015 10:03    Ответить с цитатой
Полезность: Нет оценки
Доступ на массив OPER_CONTROL есть?
Pupil
Участник - экстремал


Вступление в Клуб: 27.02.2014
СообщениеПн Окт 26, 2015 10:29    Ответить с цитатой
Полезность: Нет оценки
nairka1973 пишет:
Доступ на массив OPER_CONTROL есть?

Есть, а в Personnel нет
Pupil
Участник - экстремал


Вступление в Клуб: 27.02.2014
СообщениеВт Окт 27, 2015 19:19    Ответить с цитатой
Полезность: Нет оценки
Матвеев Евгений, а поясни какими кусками из реального текста в условие на PL+?, или каким образом. Можешь пример привести.
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеВт Окт 27, 2015 21:18    Ответить с цитатой
Полезность: Нет оценки
Pupil пишет:
Матвеев Евгений, а поясни какими кусками из реального текста в условие на PL+?, или каким образом. Можешь пример привести.


Ну да, ты ж можешь запустить данный SQL запрос без переделок в PL/SQL Developer, это первое... это работает, и результат есть.... но это под IBS
Я так понимаю тебя интересует доступ под конечными пользователями...
Как вариант ... нужно будет пользователей туда пустить(точнее разрешить заходить под developer под пользователем на схему)... Не самое красивое решение

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

Код:

         declare
            sSql   varchar2(2000);
            sValue   varchar2(32767) default null;
         begin
            sSql   := 'select ' || x.c_data || ' from ibs.'||x.c_tbl||' where id = :1';
            execute immediate sSql into sValue using this%id;
             
            debug_pipe('::['||substr(x.c_tbl,3)||'].['||substr(x.c_col,3) ||'] = '||sValue,0);
         end;


Всё понятно?)

Как то вот так должно быть... только с полями возвращаемыми разберись

Код:

begin
     declare
        sSql   varchar2(2000);
        sValue   varchar2(32767) default null;
     begin
      sSql := '         SELECT
         A1_1.Id ID, A1_1.Id Class_Id, A1_1.COLLECTION_ID Collection_Id,
         A2_1.C_NAME C_1, A1_1.C_CLIENT REF1,
         A3_1.C_VALUE C_2, A1_1.C_CASTA REF2,
         A1_1.COLLECTION_ID U_1
          FROM Z#PERSONNEL A1_1,
          Z#CASTA A3_1,
          Z#CLIENT A2_1
          WHERE A1_1.C_CASTA = A3_1.ID(+)
          AND A1_1.C_CLIENT = A2_1.ID(+)
         ';   
        execute immediate sSql;
     end;
end;
Pupil
Участник - экстремал


Вступление в Клуб: 27.02.2014
СообщениеСр Окт 28, 2015 10:54    Ответить с цитатой
Полезность: Нет оценки
Убрали на представление доступ к типу, поставили "нет"и о чудо ))
помогло.
Только я немного не понял. Что имеется ввиду зайти в Developer под пользователем и запустить запросы под пользователем.
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеСр Окт 28, 2015 11:09    Ответить с цитатой
Полезность: Нет оценки
Pupil пишет:
Убрали на представление доступ к типу, поставили "нет"и о чудо ))
помогло.
Только я немного не понял. Что имеется ввиду зайти в Developer под пользователем и запустить запросы под пользователем.


Ну было понятно что в доступе
Про Developer ... клиент Oracle, для подключения нужно ввести логин и пароль
Бизнесу доступ туда точно не нужен, но в совсем безвыходных случаях ... на тесте можно поиграться, грантануть права на вход и смотреть что видно пользователю, потом постепенно накидывать права и снова смотреть...как то так
nairka1973
Участник


Вступление в Клуб: 22.11.2012
СообщениеСр Окт 28, 2015 12:04    Ответить с цитатой
Полезность: Нет оценки
Можно было не убирать на представлении "доступ к типу", а просто дать доступ к типу Personnel
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеСр Окт 28, 2015 12:07    Ответить с цитатой
Полезность: Нет оценки
nairka1973 пишет:
Можно было не убирать на представлении "доступ к типу", а просто дать доступ к типу Personnel


Вы работаете в одном банке? ))) вроде ЦФТ написано...
nairka1973
Участник


Вступление в Клуб: 22.11.2012
СообщениеСр Окт 28, 2015 12:24    Ответить с цитатой
Полезность: Нет оценки
Матвеев Евгений пишет:
nairka1973 пишет:
Можно было не убирать на представлении "доступ к типу", а просто дать доступ к типу Personnel


Вы работаете в одном банке? ))) вроде ЦФТ написано...


А к чему вопрос? )))
Pupil
Участник - экстремал


Вступление в Клуб: 27.02.2014
СообщениеСр Окт 28, 2015 12:28    Ответить с цитатой
Полезность: Нет оценки
Нет nairka1973,проверяли не подходит, только проверка доступа нет
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеСр Окт 28, 2015 12:37    Ответить с цитатой
Полезность: Нет оценки
nairka1973 пишет:
Матвеев Евгений пишет:
nairka1973 пишет:
Можно было не убирать на представлении "доступ к типу", а просто дать доступ к типу Personnel


Вы работаете в одном банке? ))) вроде ЦФТ написано...


А к чему вопрос? )))


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

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