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.

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

3 Likes

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"))

1 Like

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:

image

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

1 Like