Skip to content

Commit 7c7dc22

Browse files
author
David Estes
committed
detect if we are using application.yml vs groovy and inject spring configuration in the yml instead
1 parent 3499549 commit 7c7dc22

File tree

1 file changed

+79
-2
lines changed

1 file changed

+79
-2
lines changed

plugin-core/plugin/grails-app/commands/grails.plugin.springsecurity/S2QuickstartCommand.groovy

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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('\nConfiguring 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

Comments
 (0)