What I actually want to do is to restrict the application listing on
the account page to just the clients where a user has a role mapping.
Currently this is only possible via "Full Scope Allowed -> off"
and explicit role mappings.
Then an admin has full control over what applications a user can see in the listing.
What I now ended up with is modifying the application.ftl in a custom theme
that explicitly excludes clients with no role mappings for the current user
(+ the account client itself).
<#list applications.applications as application>
<#-- filters out "account" app & anything that the user doesn't have an explicitly defined role in. -->
<#if application.client.clientId != 'account' && application.resourceRolesAvailable[application.client.clientId]?has_content>
//render account
</#if>
</#list>
Here are some of my experiments that describe the default behaviour of the
"Full Scope Allowed" Setting in combination with the application listing in the account page.
Scenario 1)
client role Full Scope Allowed
client-a "user-role-a" "on"
client-b "user-role-b" "on"
user roles
user-a client-a: user-role-a
user-b client-b: user-role-b
On account/applications page
user applications with access
user-a account (full access), client-a (full access), client-b (full access)
user-b account (full access), client-a (full access), client-b (full access)
---
Scenario 2)
client role Full Scope Allowed
client-a "user-role-a" "off"
client-b "user-role-a" "on"
user roles
user-a client-a: user-role-a
user-b client-b: user-role-b
On account/applications page
user applications with access
user-a account (full access), client-a (full access), client-b (full access)
user-b account (full access), client-b (full access)
---
Scenario 3)
client role Full Scope Allowed
client-a "user-role-a" "on"
client-b "user-role-b" "off"
user roles
user-a client-a: user-role-a
user-b client-b: user-role-b
On account/applications page
user applications with access
user-a account (full access), client-a (full access)
user-b account (full access), client-a (full access), client-b (full access)
-> user-a sees only the application he has acces to
-> user-b sees however also sees client-a although he doesn't have a role mapping for client-a
---
Scenario 4)
client role Full Scope Allowed
client-a "user-role-a" "off"
client-b "user-role-b" "off"
user roles
user-a client-a: user-role-a
user-b client-b: user-role-b
On account/applications page
user applications with access
user-a account (full access), client-a (full access)
user-b account (full access), client-b (full access)
-> User only sees the applications for which he has roles
---
Scenario 5) introduced a common client...
client role Full Scope Allowed
client-a "user-role-a" "off"
client-b "user-role-b" "off"
client-c "user-role-c" "on"
user roles
user-a client-a: user-role-a, client-c: user-role-c
user-b client-b: user-role-b
On account/applications page
user applications with access
user-a account (full access), client-a (full access), client-c (full access)
user-b account (full access), client-b (full access), client-c (full access)
-> user-a sees only the applications he has a role for or access to: client-a, client-c
-> user-a sees client-c for which he doesn't have a role mapping
Cheers,
Thomas