Добрий день, Qlik-світ! Сьогодні розповім, як розмежувати доступ до даних на основі Section Access.
Розмежування даних по SACCESS - досить проста і при цьому корисна річ, яка не потребує великої кількості коду. Фактично йде просте додавання ще однієї таблиці, в якій прописуються обмеження.
SectionAccess: розмежовуємо права доступу до даних
Розмежування доступу до даних відбувається через додавання до стандартних полях в таблиці Section Access тих полів, за якими відбувається розмежування.
Безумовно, про Section Access можна прочитати докладно в довідковому керівництві по QlikView в розділі 29. Але ж усім відомо, що більшість людей звертається до інструкції, коли вже нічого не допомагає, тому в цьому пості - коротко про те, як обмежити доступ користувачів до певних даними.
Є стандартні поля:
Але для розмежування доступу ми візьмемо тільки 2 з цих полів, а третє поле створимо власне і по ньому призначимо розмежування прав.
Section Access: приступаємо до роботи
Давайте припустимо, що у нас є 6 типів регіонів (GEO_TYPE), і до кожного з цих типів ми хочемо надати доступ тільки одній людині.
Це можна зробити двома способами.
- Прив'язати обмеження до умови розрахунку або відображення даних.
- Зрізати дані на етапі завантаження програми.
В першому випадку. умова потрібно буде забивати всюди, де є розрахунок по потрібним нам полях (в даному випадку за типами регіонів). Так як дані все ще будуть присутні в додатку то, створюючи свій об'єкт, людина отримає доступ до даних, які не повинні бути йому доступні.
У другому випадку. дані, які не повинні бути йому видно, в будь-якому разі не будуть для нього доступні, тому розглянемо докладніше саме такий варіант розмежування прав користувачів.
Отже, для початку зробимо нашу табличку. Її можна як завантажувати INLINE, прописуючи все в скрипті, так і завантажуючи сам файл.
За допомогою SubField (GEO_TYPE, ';') ми поділяємо одну клітинку, щоб зв'язати дані з шпальти GEO_TYPE з таким же стовпцем в даних і потім зробити зріз.
Якщо ми поставимо «*». це рівнозначно тому, що ми прописали всі можливі значення.
НА ЗАМІТКУ! Для користувача від імені, якого відбуватиметься перезавантаження на сервері, бажано ставити «*» або всі можливі значення. У ACCESS треба прописувати ADMIN, інакше він може або зберегти вже обрізаний файл, або і зовсім його не зберегти за недостатності прав.
УВАГА: У таблиці SACCESS назви стовпців обов'язково повинні бути прописані великими літерами або цифрами. Значення в них теж повинні містити в собі тільки великі літери або цифри. Скрипт для SACCESS пишеться виключно в Hidden Script.
Section Access: настройка прав доступу
Після додавання SACCESS і перезавантаження, ми побачимо, що нічого не змінилося. Дані відображаються, як і раніше, навіть якщо у нас вказано, що нам можна бачити тільки 100 і 200 тип.
Щоб все працювало треба включити в настройках обрізання даних по SACCESS. Заходимо в Settings → Document Properties → Opening і ставимо галочки:
- Initial Data Reduction Based on Section Access
- Strict Exclusion
Друга галочка прибирає всі дані, які не підходять вам по SACCESS в момент запуску програми.
Так як ми самі вказуємо у файлі хто адмін, а хто користувач, то нам треба заглянути ще на закладку Security і прибрати все галочки, крім останньої, «Admin Override Security»:
УВАГА: Якщо ви хочете протестувати на собі права USER, створіть краще копію програми, тому що ви не зможете змінити додаток, будучи з такими правами, і повернути права ADMIN собі.
На цьому сьогодні все. До нових зустрічей тут, на qlikdaily.ru