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(...). | 
    
To prepare CAS to support and integrate with Apache Groovy, please review this guide.