7 Replies Latest reply on Oct 21, 2010 3:34 PM by msab

    Remove Home Menu for Customer Login

    twitten

      I have recently upgraded to NPM V10 and I'm needing to customize the InterfaceDetails views for customer logins. I use a Custom Property to limit their accounts to only the interfaces relevant to them, but I still can see our internal devices in the "Home >" navigation menu at the top. Is there anyway to keep the Home link, but disable the drop-down menu for non-admin accounts?

      Thanks.

        • Re: Remove Home Menu for Customer Login
          twitten

          To further refine this, I see now from the code that this is tied to the "Breadcrumbs" list. In the code, it checks if breadcrumbs is disabled or not, but I can't see how to do this on a per-account basis.

            • Re: Remove Home Menu for Customer Login
              tundeoyeyemi

              Hi,

              I had similar challenge earlier. Pls follow the directives below to get this done:

              1. create the login for the said customer.

              2. Click on 'Add limitation' and choose 'Single Network Node'. Then add the node containing the interface you want the customer to view.

              3. Go down to 'Home Page View' and choose 'Interface details'

              4. Under the ''Default Network Device" click on 'edit' and choose the interface the customer will view  under the node.

              U can create a customized menu bar too for the said customers.

               

              Regards,

                • Re: Remove Home Menu for Customer Login
                  twitten

                  Yes, if you only have one node and/or one interface, you can certainly add those as a limitation.

                  However, in our case, that's not applicable.

                   

                  I did manage to figure this out, here's our assumptions and the changes needed:

                  - 90% of our user accounts are customers

                  - 90% of said accounts have more than 3 customer locations, thus at least 3 interfaces we want to give them graphs for

                  - Due to limitations with older Orion versions, we added a couple of Custom Properties to Interfaces: CustomerName and CustomerLocation

                  - We create customer accounts with a custom account limitation of CustomerName = "Customer Name". This limits them to only the interfaces we have populated the CustomerName property with their name

                  - Since custom properties aren't held in memory, we can populate them via SQL from our external mgmt system without having to stop/start the Orion services. This allows us to dynamically add/remove interfaces from a give customer's login.

                  - In order to present a nice list of "Locations" (really just interfaces) for a customer, I created a report in Report Writer that lists all CustomerLocations that aren't empty along with Avg Input and Avg Output utilization. I then made a "Customer View" that has only this one report as a resource. Since we have an account limitation, the report gets further limited to only the Customer Locations that they are assigned.

                   

                  So, this is my starting point. I was needing to limit/remove the breadcrumbs navigation list since apparently it doesn't get limited by account limitations. Also, by default, at the top of an Interface View, regardless of resources, there is always the Node Name and Interface Name which are links. The interface name isn't a problem but if you click on the Node Name you go to a page which either says can't view or is blank, due to Node View in the account, since the account doesn't have access to that Node. I wanted to clean both of these up to give a more "professional" presentation to the customer.

                   Here's how I accomplished that. In the code below, I used the AllowAdmin property of an account to control whether or not the Breadcrumb and Node links are on or not. This may or may not be applicable to you, but could be easily extended to other "properties" of an account.

                  An interface is viewed with the InterfaceDetails.aspx file in the \inetpub\SolarWinds\Orion\NPM folder. In this file, by default, line 18 is where the Node link is created:

                           - <npm:NodeLink runat="server" NodeID='<%$ Code: string.Format("N:{0}", this.NetObject["NodeID"]) %>' />
                  
                  So, I put a wrapper around that code to switch it "on" or "off" depending on if the user is an Admin or not:
                  <% Node MyNode = (Node)NetObjectFactory.Create(string.Format("N:{0}", this.NetObject["NodeID"]));
                        if (Profile.AllowAdmin) { %>
                       - <npm:NodeLink runat="server" NodeID='<%$ Code: string.Format("N:{0}", this.NetObject["NodeID"]) %>' />
                  <% } else { 
                       Response.Write(" - " + MyNode.Hostname);
                        } %>
                  

                  Since the Node "Name" is not directly available in the Interface object, I had to create a MyNode object in order to access that. Then, if the user is an Admin, I do the Node Link as default. Otherwise, I just print the Node Name out.

                   

                  To apply this to the Breadcrumbs, you have to edit View.master in \inetpub\SolarWinds\Orion. This is the default template for all pages within Orion NPM.

                  On line 117, there is a check to see if Breadcrumbs are enabled or not. Since I can't find where this is settable on a per account basis, I added the AllowAdmin check in there as well so that only Admins get Breadcrumbs:

                  Change this:

                        <%if (!CommonWebHelper.IsBreadcrumbsDisabled)

                  to this:

                        <%if (!CommonWebHelper.IsBreadcrumbsDisabled && Profile.AllowAdmin)

                   

                  Breadcrumbs will then only be "on" for Admins.

                  If anyone has any questions or wants more details on how we set the accounts up with the custom properties and custom account limitations, just PM me and I'll be happy to explain futher.

                   

                  SW Admins, if you read this, can you please add this as a feature request: "Make Breadcrumbs honor account limitations" and/or be able to be disabled on a per account basis? Thanks!

                    • Re: Remove Home Menu for Customer Login
                      justinh

                      I see this as a huge problem.  Between the breadcrumb home going somewhere other than the "Home" menu item and "Home" tab (and then not honoring account limitations), and the mouse over in the bread crumbs not honoring account limitations, I feel the breadcrumbs should be easier to turn off on a per-account basis if those issues aren't going to get fixed any time soon.

                      Thanks for the code work around, twitten.

                  • Re: Remove Home Menu for Customer Login
                    msab

                    Wow - I came across this post and I am doing exactly the same thing.  I though I was the only one doing this.

                      • Re: Remove Home Menu for Customer Login
                        msab

                        I am looking at it a slightly different way though.  I am using the interface alias name as a account limitation.

                         

                        When a circuit gets set up we label the two DMARC interfaces with a customer string.   This string gets filtered for and the view only show a certain set of interfaces.   I have created summary views that just show interface lists.  I am going to try to use the above info to remove the device from the interface details page.

                        I have also done some automation with an external database updating comment fields and bandwidth fields.

                    • Re: Remove Home Menu for Customer Login
                      twitten

                      And, for what it's worth, here is a screenshot of what it looks like when a customer logs in. In this case, my "Test" account.