Conditional Update Mode for Slices

I have approximately 3 tables that the same concept needs to be applied to. All 3 tables are different types of reports, where while the Status is โ€˜Pendingโ€™ where only the person that entered the report or userrole of Admin should be able to perform ALL UPDATES.

The table Update Mode is set as follows:

I set up a slice for Pending Reports with the Update permissions as follows:

Now I also wanted to set up a slice for only โ€˜Completeโ€™ reports with a filter condition of Status = โ€œCompleteโ€, but it is then that I noticed I am not able to set the โ€˜Update modeโ€™ as conditional. My intent was to allow ALL UPDATES for โ€˜Adminโ€™ userrole only and READ ONLY for everyone else.

So the possible solutions I have come up with are:

  1. Create a second application for โ€˜Adminโ€™ userrole only. Cons: Having to maintain a second application.

  2. Use conditional navigation in conjunction with slices for reports in โ€˜Completeโ€™ status, as in if โ€˜Adminโ€™ go to view X otherwise go to view Y. In this case I would navigate to โ€˜Completeโ€™ report slice โ€˜Read Onlyโ€™ for all users but Admins and a second slice for โ€˜Completeโ€™ reports that allows โ€˜All Updatesโ€™. Cons: Possible wider spread security issues.

Is there another solution to this that I am missing? I am really hesitant to create another application for this just because of the possible maintenance aspect.

1 3 336
3 REPLIES 3

Hello @Markus_Malessa, have you thought about managing the permissions using only the actions? that way you can manage permissions at different degrees:

  • Per view (using CONTEXT() )
  • Per user (using an user table)
  • Any conditional criteria that could be applied to actions

I found it this to be waaaay easier in my own experience.

After all, if an user enters a view, and there are no buttons to change anything or any action activated when clicking a row, it is effectively โ€œread onlyโ€ isnโ€™t it? hehe

I appreciate the input. That would seem the simpler route to follow for sure. Let me explore that a little.

I presume that since the primary edit/delete actions are system generated I would probably need to use an OR() expression?

OR(CONTEXT("View") = "View1", AND(CONTEXT("View") = "View2", USERROLE() = "Admin"))

You could always hide those system generated actions and just make your own, but yes, the OR() is a valid choice for managing the conditional logic, here is a short example of one such expression for that use case:

3X_3_a_3adc7689ab2d2483fba7ddd8643bafa9945786a7.png

I wholeheartedly endorse the use of a current user system instead of USERROLE() tho.

Top Labels in this Space