n33dle
n33dle

Reputation: 289

Grails Request Map custom errors

I've got a websoftware done with Grails that uses request maps from Spring Security. I am using them for security reasons, so that the user can't access admin areas but also it's used for our business model. We've got two different user roles. One is premium and one is premium plus, while PREMIUM_PLUS > PREMIUM. The premium plus user can access some more pages than the premium user can. If a premium user wants to access a page that can only get called by a premium plus user, there will be a error like 'no access', but I want a custom message like 'Upgrade now to premium plus'.

I could easily edit the template for all request maps errors but there are also some restricted pages nobody should see where a message like 'no access' is perfect for.

Is there any possibility to do this with two different error pages? Thank you.

Upvotes: 1

Views: 166

Answers (1)

user800014
user800014

Reputation:

The LoginController have the action denied that shows the denied.gsp. You can customize your controller action to check if you need to display the upgrade page or the denied page.

class LoginController  {
    def denied() {
        if (springSecurityService.isLoggedIn() &&
        authenticationTrustResolver.isRememberMe(SCH.context?.authentication)) {
            // have cookie but the page is guarded with IS_AUTHENTICATED_FULLY
            redirect action: 'full', params: params
        } else {
            //implement a method checking whatever you need to define that will display the upgrade
            if(mustShowUpgrade()) {
                render view: 'upgrade'
            }
        }
    }
}

Upvotes: 1

Related Questions