You do not have permission to see this catalog

TStark
Kilo Sage

I'm having user permissions issues with a Service Portal widget. As administrator I can access the widget on the portal no problem, but for any other user they receive the error: "You do not have permission to see this catalog".  This error message is generated from the Server script and I've done several trial & errors to make sure every other part of the portal is accessible to the same users. Below is the Server Script. Any insight is much appreciated.

 

(function() {

    data.category_id = $sp.getParameter("category_id");
    var page = options.link_target_page;
    
    if (data.category_id) {
        // Does user have permission to see this category?
        var categoryId = '' + data.category_id;
        var categoryJS = new sn_sc.CatCategory(categoryId);
        if (!categoryJS.canView()) {
            data.error = gs.getMessage("You do not have permission to see this category");
            return;
        }
    }
    // No category_id provided - at the root of the Service Catalog
    // So we'll show all top level categories for this catalog
    else {
        data.catalog_id = $sp.getParameter("sys_id") || $sp.getValue('sc_catalog');
        // Does user have permission to see this catalog?
        if (!$sp.canReadRecord("sc_catalog", data.catalog_id)) {
            data.error = "You do not have permission to see this catalog ";
            return;
        }
    }
    
    if (data.category_id) {
        var currentCategory = new GlideRecord('sc_category');
        if (currentCategory.get(data.category_id)) {
            data.category_title = currentCategory.title.toString();
            data.category_desc = currentCategory.description.toString();
        }
    }
    
    var items = data.items = [];
    var cat = new GlideRecord('sc_category');
    if (data.category_id) {
        cat.addQuery('parent',data.category_id);
    }
    else {
        cat.addQuery('sc_catalog',data.catalog_id)
        cat.addEncodedQuery('parentISEMPTY');
    }
    cat.addQuery('active','true');
    cat.orderBy('title');
    cat.query();
    while (cat.next()) {
        
        // Does user have permission to see this category?
        var catId = '' + cat.sys_id;
        var catJS = new sn_sc.CatCategory(catId);
        if (!catJS.canView()) {
            continue;
        }
        
        var item = {};
        $sp.getRecordDisplayValues(item, cat, 'title,description,homepage_image,sys_id');
        item.sys_class_name = cat.sys_class_name + "";
        item.page = page;
        items.push(item);
        
    }
})()

 

 

1 ACCEPTED SOLUTION

I figured it out. At first I didn't know exactly what to comment out, but with more trial & error I was able to get it working by commenting out the specific code as display in the screenshot below. Thanks for your assistance on this Pranesh.

 

find_real_file.png

View solution in original post

17 REPLIES 17

Instead of update the widget, you should check why it is restricting the users.

try user criteria Diagnostics

https://[instance].service-now.com/uc_item_diagnostics.do

Ok, I've used that URL and my instance to do the diagnostics on every catalog item associated with the widget and a user who cannot access the widget and everything returned "No user criteria defined". In other words no restrictions.

Can you also check if those user can access the catalog items on native side?

If you're speaking of the Default view when you say 'native side' then yes.

BTW, this is not an OOB widget. It's a custom widget that I found here in the community which is why I wouldn't hesitate to modify the Server client script if I knew how.

Thanks,
AJ