/* Copyright 2006-2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Create/Copy Domains, auth.gsp, Controllers for security plugin.
*
* @author Tsuyoshi Yamamoto
* @author Burt Beckwith
*/
includeTargets << new File("$acegiPluginDir/scripts/_SecurityTargets.groovy")
target('default': 'Creates Domain classes for Spring Security plugin') {
parseArgs()
createDomains()
copyViewAndControllers()
}
private void parseArgs() {
args = args ? args.split('\n') : []
switch (args.size()) {
case 0:
println 'Creating domain classes with default names'
break
case 3:
splitPersonClassName args[0]
splitAuthorityClassName args[1]
splitRequestmapClassName args[2]
println "Login user domain class: ${args[0]}"
println "Authority domain class: ${args[1]}"
println "Requestmap domain class: ${args[2]}"
break
default:
usage()
break
}
}
private void usage() {
println 'usage: grails create-auth-domains '
System.exit(1)
}
private void createDomains() {
// create Person domain class
generateFile "$templateDir/_Person.groovy",
"$appDir/domain/${packageToDir(personClassPackage)}${personClassName}.groovy"
// create Authority domain class
generateFile "$templateDir/_Authority.groovy",
"$appDir/domain/${packageToDir(authorityClassPackage)}${authorityClassName}.groovy"
// create Requestmap domain class
generateFile "$templateDir/_Requestmap.groovy",
"$appDir/domain/${packageToDir(requestmapClassPackage)}${requestmapClassName}.groovy"
// create SecurityConfig
generateFile "$templateDir/_SecurityConfig.groovy", "$appDir/conf/SecurityConfig.groovy"
}
private String packageToDir(pkg) {
String dir = ''
if (pkg) {
dir = pkg.replaceAll('\\.', '/') + '/'
}
return dir
}
private void copyViewAndControllers() {
// copy login.gsp and Login/Logout Controller example.
println 'copying login.gsp and Login/Logout Controller example. '
Ant.mkdir dir: "$appDir/views/login"
copyFile "$templateDir/views/login/auth.gsp", "$appDir/views/login/auth.gsp"
copyFile "$templateDir/views/login/openIdAuth.gsp", "$appDir/views/login/openIdAuth.gsp"
copyFile "$templateDir/views/login/denied.gsp", "$appDir/views/login/denied.gsp"
copyFile "$templateDir/controllers/LoginController.groovy", "$appDir/controllers/LoginController.groovy"
copyFile "$templateDir/controllers/LogoutController.groovy", "$appDir/controllers/LogoutController.groovy"
// log4j.logger.org.springframework.security='off,stdout'
def configFile = new File("$appDir/conf/Config.groovy")
if (configFile.exists()) {
configFile.append("\n\n//log4j.logger.org.springframework.security='off,stdout'")
}
}