独自のユーザードメインを使う方法
ドキュメントによると、Config.groovyに
authenticationUserClass = 独自のドメインクラス
のように独自のドメインクラスを指定できるとなっているが、どうも期待通りの動きをしない様子。
調べたところ、authentication-1.0/grails-app/services/AuthenticationServices.groovyに
void afterPropertiesSet() { // Take events from config if found if (ConfigurationHolder.config.configObject.authenticationEvents) { events = ConfigurationHolder.config.configObject.authenticationEvents } // Take domain class from config if found if (ConfigurationHolder.config.configObject.authenticationUserClass) { AuthenticationService.userDomainClass = ConfigurationHolder.config.configObject.authenticationUserClass } }
のようにconfigから値を取得するところがあって、そこでうまくいってない様子。
と調べてたら、JIRAがあがってるのを発見。
以下でとりあえず動くようだ。
void afterPropertiesSet() { // Take events from config if found // if (ConfigurationHolder.config.configObject.authenticationEvents) { if (ConfigurationHolder.config.authenticationEvents) { events = ConfigurationHolder.config.authenticationEvents } // Take domain class from config if found // if (ConfigurationHolder.config.configObject.authenticationUserClass) { if (ConfigurationHolder.config.authenticationUserClass) { AuthenticationService.userDomainClass = ConfigurationHolder.config.authenticationUserClass } }
ユーザー情報にはAuthenticationUser.groovyを使用して、そこになりユーザー情報プロパティ用には別のユーザー情報を保持するドメインクラスを別途用意するのがとりあえず正解なのだろうか。