diff --git a/Server-Side Components/Background Scripts/User Access Tester/README.md b/Server-Side Components/Background Scripts/User Access Tester/README.md new file mode 100644 index 0000000000..759d2139d8 --- /dev/null +++ b/Server-Side Components/Background Scripts/User Access Tester/README.md @@ -0,0 +1,8 @@ +Simple background script to test user access to records and fields by impersonating different users. + +## What it does + +- Impersonates a specified user +- Tests access to a specific record +- Checks visibility of configured fields +- Returns to original user context diff --git a/Server-Side Components/Background Scripts/User Access Tester/userAccessTester.js b/Server-Side Components/Background Scripts/User Access Tester/userAccessTester.js new file mode 100644 index 0000000000..edb2048309 --- /dev/null +++ b/Server-Side Components/Background Scripts/User Access Tester/userAccessTester.js @@ -0,0 +1,30 @@ +var CONFIG = { + tableName: 'incident', + recordSysId: 'your_record_sys_id_here', + userToImpersonate: 'user_sys_id_here', + fieldsToTest: ['number', 'short_description', 'priority', 'assignment_group'] +}; + +var originalUserID = gs.getUserID(); +var impersonator = new GlideImpersonate(); + +gs.print("Original user: " + gs.getUser().getDisplayName()); + +impersonator.impersonate(CONFIG.userToImpersonate); +gs.print("Now impersonating: " + gs.getUser().getDisplayName()); + +var gr = new GlideRecordSecure(CONFIG.tableName); +if (gr.get(CONFIG.recordSysId)) { + gs.print("Record accessible: " + gr.getDisplayValue()); + + for (var i = 0; i < CONFIG.fieldsToTest.length; i++) { + var field = CONFIG.fieldsToTest[i]; + var value = gr.getDisplayValue(field); + gs.print("Field '" + field + "': " + (value || 'Empty/No access')); + } +} else { + gs.print("Record not found or not accessible"); +} + +impersonator.impersonate(originalUserID); +gs.print("Back to original user: " + gs.getUser().getDisplayName());