Groovy Themes - User Interface Customization

If you have multiple themes defined, it may be desirable to dynamically determine a theme for a given service definition. In order to do, you may calculate the final theme name via a Groovy script of your own design. The theme assigned to the service definition needs to point to the location of the script:

1
2
3
4
5
6
7
{
  "@class" : "org.apereo.cas.services.CasRegisteredService",
  "serviceId" : "^https://www.example.org",
  "name" : "MyTheme",
  "theme" : "file:///etc/cas/config/themes.groovy",
  "id" : 1000
}

The script itself may be designed as:

1
2
3
4
5
6
7
8
9
import java.util.*

def run(final Object... args) {
    def (service,registeredService,queryStrings,headers,logger) = args

    // Determine theme ...

    return null
}

Returning null or blank will have CAS switch to the default theme. The following parameters may be passed to a Groovy script:

Parameter Description
service The object representing the requesting service.
registeredService The object representing the matching registered service in the registry.
queryStrings Textual representation of all query strings found in the request, if any.
headers Map of all request headers and their values found in the request, if any.
logger The object responsible for issuing log messages such as logger.info(...).