Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Retrieves and displays all security roles directly assigned to a user.
- * Works with Xrm.WebApi inside Dynamics CE.
- * @param {string} userId - The systemuserid (GUID) of the user.
- */
- async function exportUserRoles(userId) {
- if (!userId) {
- console.error("❌ Please provide a userId (systemuserid).");
- return;
- }
- userId = userId.replace(/[{}]/g, "");
- console.log(`🔍 Fetching direct roles for userId: ${userId}`);
- try {
- // Step 1: Get all systemuserroles records for this user
- const linkQuery = `?$filter=systemuserid eq ${userId}`;
- const userRoles = await Xrm.WebApi.retrieveMultipleRecords("systemuserroles", linkQuery);
- if (!userRoles.entities.length) {
- console.warn("⚠️ No direct roles found for this user.");
- return [];
- }
- // Step 2: Extract role IDs
- const roleIds = userRoles.entities.map(r => r.roleid);
- // Step 3: Fetch each role's details
- const roles = [];
- for (const id of roleIds) {
- try {
- const role = await Xrm.WebApi.retrieveRecord("role", id, "?$select=name,roleid");
- roles.push({ RoleName: role.name, RoleId: role.roleid });
- } catch (innerError) {
- console.warn(`⚠️ Could not retrieve role ${id}:`, innerError.message);
- }
- }
- // 🧮 Step 4: Sort roles alphabetically by RoleName
- roles.sort((a, b) => a.RoleName.localeCompare(b.RoleName));
- // Step 5: Display results
- console.table(roles);
- console.log(`✅ Total Direct Roles: ${roles.length}`);
- return roles;
- } catch (error) {
- console.error("❌ Error retrieving roles:", error.message || error);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment