Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

How to filter displayed schema in query

mathieu-g
Level 2
Level 2

Hello,

I would to limit the available schema taht user can select in query.

I know I'm not suppose to extend xtkSchema but I know that it's here that it can be done, so I had the following sysfilter

<sysFilter name="test">

      <condition enabledIf="hasNamedRight('admin')=false" expr="@namespace = 'cus'"/>

</sysFilter>

but the hasNamesRight function didn't seem to work, did someone know why ?

I use an Adobe Campaign v7 build 8853

Thanks for your help,

Mathieu

1 Accepted Solution
Amit_Kumar
Correct answer by
Community Advisor
Community Advisor

Hi Mathieu,

You have made a mistake, use this to limit this access to Admin users only, non-admin will not be able to access this schema.

<sysFilter name="readAccess">

      <condition enabledIf="hasNamedRight('admin')=false" expr="FALSE"/>

    </sysFilter>

     <sysFilter name="writeAccess">

      <condition enabledIf="hasNamedRight('admin')=false" expr="FALSE"/>

</sysFilter>

Or Use following with a valid id to provide access to only one account, there is no login id like admin:

<sysFilter name="readAccess">

      <condition enabledIf="$(login)!=1053" expr="FALSE"/>

    </sysFilter>

     <sysFilter name="writeAccess">

      <condition enabledIf="$(login)!=1053" expr="FALSE"/>

</sysFilter>

After that, you need to regenerate the schemes and delete cache.

Hope this helps!

Amit

View solution in original post

6 Replies
Adhiyan
Employee
Employee

Hi Mathieu,

Although I don't know if this is possible in xtk :schema but you can try using the expression as enabledIf="hasNamedRight('admin')=true" . Also try to change the filtering attribute to accessibleIf or visibleIf to see if it works.

For more info on how to restrict display , follow this guide

Regards,

Adhiyan

mathieu-g
Level 2
Level 2

Hi Adhiyan,

Thanks for your answer, but I don't want to hide fields of a schema I wnat to hide schema itself.

I want that users don't have access to all the standard schemas but only the ones I create for them in the following screen, which correspond to xtkSchema :

1276130_pastedImage_1.png

Do you think it is possible ?

Regards,

Mathieu

florentlb
Level 10
Level 10

Hi Mathieu,

Maybe what's described here would better serve your purpose: Protecting schemas

Let me know,

Florent

mathieu-g
Level 2
Level 2

Hi Florent,

I just try it and put this code in a schema :

<sysFilter name="readAccess">

      <condition enabledIf="$(login)!='admin'" expr="FALSE"/>

    </sysFilter>

     <sysFilter name="writeAccess">

      <condition enabledIf="$(login)!='admin'" expr="FALSE"/>

</sysFilter>

If I understand with this sysfilter only the admin user will hava access to this schema, but if I connect with another account it is still avalaible in a query activity.

Did I do it wrong ?

Regards,

Mathieu

Amit_Kumar
Correct answer by
Community Advisor
Community Advisor

Hi Mathieu,

You have made a mistake, use this to limit this access to Admin users only, non-admin will not be able to access this schema.

<sysFilter name="readAccess">

      <condition enabledIf="hasNamedRight('admin')=false" expr="FALSE"/>

    </sysFilter>

     <sysFilter name="writeAccess">

      <condition enabledIf="hasNamedRight('admin')=false" expr="FALSE"/>

</sysFilter>

Or Use following with a valid id to provide access to only one account, there is no login id like admin:

<sysFilter name="readAccess">

      <condition enabledIf="$(login)!=1053" expr="FALSE"/>

    </sysFilter>

     <sysFilter name="writeAccess">

      <condition enabledIf="$(login)!=1053" expr="FALSE"/>

</sysFilter>

After that, you need to regenerate the schemes and delete cache.

Hope this helps!

Amit

View solution in original post

mathieu-g
Level 2
Level 2

Hi Amit,

Thanks for your answer, I try the solution with the HasNamedRight condition and user without its named right can still make request on my scheme.

I do have regenerate it and delete my cache but it doesn't seem to work, here the xml of my scheme, as I only do some test it's really simple  :

<srcSchema _cs="test (cus)" created="2017-08-18 21:49:28.000Z" createdBy-id="0" entitySchema="xtk:srcSchema"

           img="xtk:schema.png" label="test" lastModified="2017-08-28 09:24:47.000Z"

           mappingType="sql" md5="3F13A38D37ECB68ED77A28E18B84E7B2" modifiedBy-id="0"

           name="test" namespace="cus" xtkschema="xtk:srcSchema">

  <createdBy _cs="Administrateur (admin)"/>

  <modifiedBy _cs="Administrateur (admin)"/>

  <element label="test" name="test">

    <attribute label="test" name="test" type="long"/>

    <sysFilter name="readAccess">

      <condition enabledIf="hasNamedRight('admin')=false" expr="FALSE"/>

    </sysFilter>

    <sysFilter name="writeAccess">

      <condition enabledIf="hasNamedRight('admin')=false" expr="FALSE"/>

    </sysFilter>

  </element>

</srcSchema>

I will explain with more details what I trying to do :

Users with named right grp1 can request on schemes A,B,C

Users with named right grp2 can request on schemes D and E

Users with named right grp3 can request on scheme F

Thanks for your help,

Regards,

Mathieu