- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2018 10:10 AM
Hey All,
I'm trying to build an ACL structure for a scoped application, and one of my requirements is that my users should only be able to see/read records in an Inventory that are assigned to their location. My thoughts are to use an Advanced Script in my Table.None Read ACL:
var user = gs.getUser();
if (user.location == current.location) {
answer = true;
}
else answer = false;
But despite verifying that the User's Location (Location 5150) reference was equivalent to the Records' Location (Again, Location 5150), the script returns false every time (and to my frustration, I have no way to log it - gs.info, warn, etc. statements don't output anything, and I can't use gs.log() because scoped app).
I've also tried cut+pasting the script into my Table.* Read ACL, and it ends up only blocking Read access to the Location reference field, which is even stranger to me.
The overall structure that I have in place isn't too crazy or complex - I only have one other Read ACL in the system, without any scripts or conditions, and it's unrelated to the role I'm trying to restrict. I should also mention - the Locations referenced are from the cmn_location table, and the ACL I'm running is for a custom table within my scoped application.
So, here I am now - wondering if I'm even approaching this problem the right way haha. Could you folks help me out? Is it just because the GlideRecord object I refer to in the script isn't for each specific record, or..? For that matter, why am I not able to use logs for this issue?
Much appreciated,
Vellv
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2018 11:36 AM
I think you need to use this to get the current location.
var location = gs.getUser().getLocation();
Also check if gs.getUser() is giving what you need, you might have to use gs.getUserID() sometimes.
both user table and your custom table have a reference field to location table?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2018 12:23 PM
Hey Nitesh,
How do I check to see if gs.getUser() is giving me the right values? One of my issues that led to the creation of this question is that I haven't been able to get any logs to show up from my ACL scripts. Is there a workaround for that?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-16-2018 12:29 PM
just run a background script:
var a=gs.getUser();
gs.print(a);
if it doesn't work try gs.getUserID();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-19-2018 10:04 AM
Got it, I was able to fix up the script for the most part thanks to that :). Only one problem left, and that's not being able to get into the 'New' form for tables. Everything else, I have access to...