Skip to content

Commit

Permalink
Merge branch '7.0.x' into renovate/tomcat
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesfredley authored Oct 1, 2024
2 parents 0ff94ba + 0314580 commit 8c0c699
Show file tree
Hide file tree
Showing 9 changed files with 387 additions and 9 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ jobs:
with:
arguments: |
check
--refresh-dependencies
-Dgeb.env=chromeHeadless
functional-test:
Expand Down Expand Up @@ -67,6 +68,7 @@ jobs:
with:
arguments: |
spring-security-core:build
--refresh-dependencies
-Dgeb.env=chromeHeadless
- name: Publish Snapshot artifacts to Artifactory (repo.grails.org)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package grails.plugin.springsecurity

import grails.converters.JSON
import org.grails.web.servlet.mvc.GrailsWebRequest
import org.springframework.context.MessageSource
import org.springframework.security.access.annotation.Secured
import org.springframework.security.authentication.AccountExpiredException
Expand Down Expand Up @@ -104,18 +105,19 @@ class LoginController {
String msg = ''
def exception = session[WebAttributes.AUTHENTICATION_EXCEPTION]
if (exception) {
def locale = GrailsWebRequest.lookup().getLocale() ?: Locale.getDefault()
if (exception instanceof AccountExpiredException) {
msg = messageSource.getMessage('springSecurity.errors.login.expired', null, "Account Expired", request.locale)
msg = messageSource.getMessage('springSecurity.errors.login.expired', null, "Account Expired", locale)
} else if (exception instanceof CredentialsExpiredException) {
msg = messageSource.getMessage('springSecurity.errors.login.passwordExpired', null, "Password Expired", request.locale)
msg = messageSource.getMessage('springSecurity.errors.login.passwordExpired', null, "Password Expired", locale)
} else if (exception instanceof DisabledException) {
msg = messageSource.getMessage('springSecurity.errors.login.disabled', null, "Account Disabled", request.locale)
msg = messageSource.getMessage('springSecurity.errors.login.disabled', null, "Account Disabled", locale)
} else if (exception instanceof LockedException) {
msg = messageSource.getMessage('springSecurity.errors.login.locked', null, "Account Locked", request.locale)
msg = messageSource.getMessage('springSecurity.errors.login.locked', null, "Account Locked", locale)
} else if (exception instanceof SessionAuthenticationException) {
msg = messageSource.getMessage('springSecurity.errors.login.max.sessions.exceeded', null, "Sorry, you have exceeded your maximum number of open sessions.", request.locale)
msg = messageSource.getMessage('springSecurity.errors.login.max.sessions.exceeded', null, "Sorry, you have exceeded your maximum number of open sessions.", locale)
} else {
msg = messageSource.getMessage('springSecurity.errors.login.fail', null, "Authentication Failure", request.locale)
msg = messageSource.getMessage('springSecurity.errors.login.fail', null, "Authentication Failure", locale)
}
}

Expand Down
42 changes: 42 additions & 0 deletions plugin/src/main/scripts/s2-create-persistent-token.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/* Copyright 2006-2016 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.
*/

import grails.codegen.model.Model

description 'Creates a persistent token domain class for the Spring Security Core plugin', {
usage '''
grails s2-create-persistent-token [DOMAIN CLASS NAME]
Example: grails s2-create-persistent-token com.yourapp.PersistentLogin
'''

argument name: 'Domain class name', description: 'The domain class full name with package'
}

String fullClassName = args[0]
Model model = model(fullClassName)

addStatus "\nCreating persistent token class $fullClassName"

render template: template('PersistentLogin.groovy.template'),
destination: file("grails-app/domain/$model.packagePath/${model.simpleName}.groovy"),
model: model, overwrite: false

file('grails-app/conf/application.groovy').withWriterAppend { BufferedWriter writer ->
writer.newLine()
writer.writeLine 'grails.plugin.springsecurity.rememberMe.persistent = true'
writer.writeLine "grails.plugin.springsecurity.rememberMe.persistentToken.domainClassName = '$fullClassName'"
writer.newLine()
}
46 changes: 46 additions & 0 deletions plugin/src/main/scripts/s2-create-role-hierarchy-entry.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* Copyright 2015-2016 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.
*/

import grails.codegen.model.Model

/**
* @author fpape
* @author Burt Beckwith
*/

description 'Creates a domain class for a persistent role hierarchy for the Spring Security Core plugin', {
usage '''
grails s2-create-role-hierarchy-entry [DOMAIN CLASS NAME]
Example: grails s2-create-role-hierarchy-entry com.yourapp.RoleHierarchyEntry
'''

argument name: 'Domain class name', description: 'The domain class full name with package'
}

String fullClassName = args[0]
Model model = model(fullClassName)

addStatus "\nCreating role hierarchy entry class $fullClassName"

render template: template('RoleHierarchyEntry.groovy.template'),
destination: file("grails-app/domain/$model.packagePath/${model.simpleName}.groovy"),
model: model, overwrite: false

file('grails-app/conf/application.groovy').withWriterAppend { BufferedWriter writer ->
writer.newLine()
writer.writeLine "grails.plugin.springsecurity.roleHierarchyEntryClassName = '$fullClassName'"
writer.newLine()
}
Loading

0 comments on commit 8c0c699

Please sign in to comment.