Forum Discussion

skylinegtr's avatar
9 years ago

Have a URL only visible to a specific role

This works just fine. 

 

<#if user_has_role?? && (user_has_role == "admin" || user_has_role == "partner" || user_has_role =="customer") >
<li><a href="">Manage</a></li>
<li><a href="">Cases</a></li>
<li><a href="">Knowledge</span></a></li>
<li><a class="first" href="#">Community</a></li>

 

The code below, I'm having problem getting it to work properly. The link appears for Partner and Customer but I only want it to appears for the Partner role. When I removed the Customer role, it doesn't display for Partner or Customer but when I add the Customer role back, it works but it appears for both roles.


<#if user_has_role?? && (user_has_role == "admin" || user_has_role == "partner" || user_has_role =="customer") >
<li><a class="second" href="#">Partner Portal</a></li>
</#if>

 

 

This is my code:

<ul>

<#if user_has_role?? && (user_has_role == "admin" || user_has_role == "partner" || user_has_role =="customer") >
<li><a href="">Manage</a></li>
<li><a href="">Cases</a></li>
<li><a href="">Knowledge</span></a></li>
<li><a class="first" href="#">Community</a></li>
<#if user_has_role?? && (user_has_role == "admin" || user_has_role == "partner" || user_has_role =="customer") >
<li><a class="second" href="#">Partner Portal</a></li>
</#if>
<#else>
<li><a href="http://support.purestorage.com/">Knowledge</span></a></li>
<li><a class="first" href="#">Community</a></li>
</#if>
<#if user.registered>
<#if config.getString("phase", "stage") == "stage">
<li class="last"><a onclick="logoff();" href="#">Log Out</a></li>
<#else>
<li class="last"><a onclick="logoff();" href="#">Log Out</a></li>
</#if>
<#else>
<#if config.getString("phase", "stage") == "stage">
<li class="last"><a href="">Sign In</a></li>
<li class="last"><a href="">Register</a></li>
<#else>
<li class="last"><a href="">Sign In</a></li>
<li class="last"><a href="">Register</a></li>
</#if>
</#if>
</ul>

 

Any help would be greatly appreciated.

 

Thanks!

  • skylinegtr - You need to make this edit:

     

    <#if user_has_role?? && (user_has_role == "admin") || user_has_role?? && (user_has_role == "partner") || user_has_role?? && (user_has_role == "customer")>

    If you need to remove customer role, or partner role, remove red or green text respectively.

     

    I hope this helps.

    • skylinegtr's avatar
      skylinegtr
      Mentor

      VarunGrazitti-thanks for your help. 

       

      It's strange, when I removed the customer role

       

      <#if user_has_role?? && (user_has_role == "admin") || user_has_role?? && (user_has_role == "partner")>

      <li><a class="second" href="#">Partner Portal</a></li>
      </#if>


      the Partner Portal text doesn't appear when I logged in as a admin or a Partner. If I add the customer role back, it appears.

       

      This is how I've setup the roles:

      <#assign user_has_role = "none" />
      <#list restadmin("/users/id/${user.id?c}/roles").roles.role as role>
      <#if role.name?? && ((role.name == "Customer"))>
      <#assign user_has_role = "customer" />
      <#break />
      <#elseif role.name?? && ((role.name == "Partner")||(role.name =="Support Providers"))>
      <#assign user_has_role = "partner" />
      <#elseif role.name?? && ((role.name == "Employee"))>
      <#assign user_has_role = "employee" />
      <#elseif role.name?? && ((role.name == "Support Staff"))>
      <#assign user_has_role = "support" />
      <#elseif role.name?? && ((role.name == "SupportOps"))>
      <#assign user_has_role = "SupportOps" />
      <#elseif role.name?? && ((role.name == "Registered User"))>
      <#assign user_has_role = "reguser" />
      <#elseif role.name?? && ((role.name == "Visitor"))>
      <#assign user_has_role = "visitor" />
      <#elseif role.name?? && ((role.name == "Administrator"))>
      <#assign user_has_role = "admin" />
      </#if>
      </#list>