Benoit Wickramarachi
Benoit Wickramarachi

Reputation: 6226

Best way to create an Admin section in Grails

Hy,

I'm wondering what's the best way to create an Admin (backend) section in a Grails app ?

I want to create an "Admin" folder in the "controllers" folder of Grails to put all my admin controllers. But then will I have to create manually the URL mapping for each Admin controller?

I have already generated all my frontend GSP with the genernate-all command which takes a Domain Class but know how can I generate my CRUD for my admin section (with the same domain class). Am I screwed ?

Thanks a lot for your tips!

Upvotes: 9

Views: 4249

Answers (3)

traneHead
traneHead

Reputation: 986

Very late to this, but here is one way that might be useful, at least for a smaller application (I'm using Grails 2.0):

In conf/UrlMappings.groovy:

class UrlMappings {
  static mappings = {
    "/admin/$controller/$action?/$id?"{ constraints { // apply constraints here
      } }
    '/admin' (controller: 'yourMainController', action: 'list')
    '/' (controller: 'public', action:'index')
    // For the PublicController to handle *all* other requests (like /foo/bar/):
    // '/**' (controller: 'public', action:'index')
    "500"(view:'/error')
  }
}

Note As you can see, this i not secured in any way.

Upvotes: 1

Ted Naleid
Ted Naleid

Reputation: 26801

My preference for this is to have a separate application for admin. Stick all of your domain classes in a plugin and install that plugin into both the admin application and the consumer appilcation.

That way, you can tweak the controllers to your hearts content and not worry about end users hitting them. Shared services can also be in the domain plugin.

There's a special file that you can put in your grails-app/conf called BuildConfig.groovy where you can specify "local" plugins like the domain plugin that are automatically brought into the classpath without having to package/install the plugin. Makes it super easy.

Upvotes: 11

Jared
Jared

Reputation: 39887

You could create your admin controllers like any other controller and use a filter to make sure only logged in users with admin privilages can access them.

Upvotes: 2

Related Questions