@@ -77,8 +77,12 @@ Example: ./grailsw s2-quickstart --uiOnly
7777 initializeTemplateAttributes()
7878 createDomains(userModel, roleModel, requestmapModel, roleGroupModel)
7979 }
80-
81- updateConfig(userModel?. simpleName, roleModel?. simpleName, requestmapModel?. simpleName, userModel?. packageName, roleGroupModel != null )
80+ if (new File (' grails-app/conf/application.yml' ). exists()) {
81+ consoleLogger. addStatus(' \n Configuring Spring Security; Updating YAML Application Config' )
82+ updateYmlConfig(userModel?. simpleName, roleModel?. simpleName, requestmapModel?. simpleName, userModel?. packageName, roleGroupModel != null )
83+ } else {
84+ updateConfig(userModel?. simpleName, roleModel?. simpleName, requestmapModel?. simpleName, userModel?. packageName, roleGroupModel != null )
85+ }
8286 logStatus()
8387 return SUCCESS
8488 }
@@ -276,6 +280,79 @@ Example: ./grailsw s2-quickstart --uiOnly
276280 }
277281 }
278282
283+ private void updateYmlConfig (String userClassName , String roleClassName , String requestmapClassName , String packageName , boolean useRoleGroups ) {
284+ // I mean, we could use SNAKE YAML TO GENERATE THIS BUT I DIGRESS
285+ file(' grails-app/conf/application.yml' ). withWriterAppend { BufferedWriter writer ->
286+ writer. newLine()
287+ writer. writeLine(' ---' )
288+ writer. writeLine(' # Added by the Spring Security Core plugin:' )
289+ writer. writeLine(' grails:' )
290+ writer. writeLine(' plugin:' )
291+ writer. writeLine(' springsecurity:' )
292+ if (! uiOnly) {
293+ writer. writeLine(' userLookup:' )
294+ writer. writeLine(" userDomainClassName: '${ packageName} .$userClassName '" )
295+ writer. writeLine(" authorityJoinClassName: '${ packageName} .$userClassName $roleClassName '" )
296+ }
297+ if (! uiOnly || useRoleGroups) {
298+ writer. writeLine(' authority:' )
299+ if (! uiOnly) {
300+ writer. writeLine(" className: '${ packageName} .$roleClassName '" )
301+ }
302+ if (useRoleGroups) {
303+ writer. writeLine(" groupAuthorityNameField: authorities" )
304+ }
305+ }
306+
307+ if (useRoleGroups) {
308+ writer. writeLine(' useRoleGroups: true' )
309+ }
310+ if (requestmapClassName) {
311+ writer. writeLine(" requestMap.className: '${ packageName} .$requestmapClassName '" )
312+ writer. writeLine(" securityConfigType: Requestmap" )
313+ }
314+ writer. writeLine(' controllerAnnotations:' )
315+ writer. writeLine(' staticRules:' )
316+ writer. writeLine(' - pattern: /' )
317+ writer. writeLine(' access: [\' permitAll\' ]' )
318+ writer. writeLine(' - pattern: /error' )
319+ writer. writeLine(' access: [\' permitAll\' ]' )
320+ writer. writeLine(' - pattern: /index' )
321+ writer. writeLine(' access: [\' permitAll\' ]' )
322+ writer. writeLine(' - pattern: /index.gsp' )
323+ writer. writeLine(' access: [\' permitAll\' ]' )
324+ writer. writeLine(' - pattern: /shutdown' )
325+ writer. writeLine(' access: [\' permitAll\' ]' )
326+ writer. writeLine(' - pattern: /assets/**' )
327+ writer. writeLine(' access: [\' permitAll\' ]' )
328+ writer. writeLine(' - pattern: /**/js/**' )
329+ writer. writeLine(' access: [\' permitAll\' ]' )
330+ writer. writeLine(' - pattern: /**/css/**' )
331+ writer. writeLine(' access: [\' permitAll\' ]' )
332+ writer. writeLine(' - pattern: /**/images/**' )
333+ writer. writeLine(' access: [\' permitAll\' ]' )
334+ writer. writeLine(' - pattern: /**/favicon.ico' )
335+ writer. writeLine(' access: [\' permitAll\' ]' )
336+ writer. newLine()
337+
338+ writer. writeLine(' filterChain:' )
339+ writer. writeLine(' chainMap:' )
340+ writer. writeLine(' - pattern: /assets/**' )
341+ writer. writeLine(' filters: none' )
342+ writer. writeLine(' - pattern: /**/js/**' )
343+ writer. writeLine(' filters: none' )
344+ writer. writeLine(' - pattern: /**/css/**' )
345+ writer. writeLine(' filters: none' )
346+ writer. writeLine(' - pattern: /**/images/**' )
347+ writer. writeLine(' filters: none' )
348+ writer. writeLine(' - pattern: /**/favicon.ico' )
349+ writer. writeLine(' filters: none' )
350+ writer. writeLine(' - pattern: /**' )
351+ writer. writeLine(' filters: JOINED_FILTERS' )
352+ writer. newLine()
353+ }
354+ }
355+
279356 private void generateFile (String templateName , String packagePath , String className , String fileName = null , String folder = ' grails-app/domain' ) {
280357 render template(templateName + ' .groovy.template' ),
281358 file(" ${ folder} /$packagePath /${ fileName ?: className} .groovy" ),
0 commit comments