Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
vkozlov
Partner - Creator
Partner - Creator

Qlik Sense App Object / Sheet Access

Коллеги привет

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

Подскажите пожалуйста методы реализации:

Из того что нашел на комьюнини - статейка, где кастомизируется Security Rules:

     В 2х словах там отключается стандартное правило безопасности для потока и пишется свое альтернаривное

Кто это делал, шли таким же путем?

Просто в QlikView это в пару шагов через условие показа делается 😕

4 Replies
Sergey_Polekhin
Employee
Employee

В QlikView, строго говоря, не существует "разграничения доступа" к листам и другим объектам визуализации.

Упомянутый вариант использования для этого "условий отображения" объектов - это не разграничение доступа к объектам в целом. Это лишь условие отображения, как и следует из его названия.

Встроенных свойств "условий отображения" объектов в Qlik Sense пока нет.

Упомянутый в Qlik Sense вариант разграничения доступа к объектам через Seurity Rules - это полноценный вариант разграничения именно на уровне безопасности движка Qlik. С его помощью к объекту можно ограничить доступ гарантированно, т.е. сделать его независимым от способа доступа:

  • доступ в готовом приложении,
  • доступ через API.
Anonymous
Not applicable

Владимир, здравствуй!

Я похоже делал.

1. Стандартное правило Stream заменил на такое:

(resource.resourcetype = "App"

and resource.stream.HasPrivilege("read"))

or

(resource.resourcetype = "App.Object"

and resource.published ="true"

and resource.objectType != "app_appscript"

and resource.objectType != "loadmodel"

and resource.app.stream.HasPrivilege("read")

and (!(user.@userAccess matches "?*") or resource.objecttype != "sheet"))

2. Добавил кастомное свойство userAccess для пользователей.

3. Создал правило для отдела продаж:

((resource.resourcetype = "App"

and resource.stream.HasPrivilege("read"))

or

(resource.resourcetype = "App.Object"

and resource.published ="true"

and resource.app.stream.HasPrivilege("read")

and resource.objecttype="sheet"

and resource.name like "*(s)*"

))

and user.@userAccess="sales"


4. Далее, все пользователи, у которых свойство userAccess заполнено и равно "sales" видят только те листы, у которых в названии есть "(s)". Например, "Анализ продаж (s)".


P.S. Это всё применимо, если у пользователей нет доступа к редактированию листов.

vkozlov
Partner - Creator
Partner - Creator
Author

Спасибо, интересный вариант с наименованиями отчетов!!!

Иван можете это расшифровать (!(user.@userAccess matches "?*")

Anonymous
Not applicable

!(user.@userAccess matches "?*") означает "свойство userAccess не задано", т.е. в нём нет ни одного символа.