Лучший способ создать раздел администратора в Grails - PullRequest
9 голосов
/ 15 июля 2009

Hy,

Мне интересно, как лучше всего создать раздел администратора (бэкенда) в приложении Grails?

Я хочу создать папку «Admin» в папке «controllers» Grails, чтобы разместить все мои контроллеры администратора. Но тогда мне придется вручную создавать сопоставление URL для каждого контроллера администратора?

Я уже сгенерировал весь свой GSP внешнего интерфейса с помощью команды genernate-all, которая принимает Класс домена , но знаю, как я могу сгенерировать свой CRUD для моего раздела администратора (с тем же классом домена). Я облажался?

Большое спасибо за ваши советы!

Ответы [ 3 ]

11 голосов
/ 17 июля 2009

Я предпочитаю иметь отдельное приложение для администратора. Вставьте все свои доменные классы в плагин и установите этот плагин как в приложение администратора, так и в приложение пользователя.

Таким образом, вы можете настроить контроллеры в соответствии со своими предпочтениями и не беспокоиться о том, что конечные пользователи их ударили. Общие сервисы также могут быть в доменном плагине.

Существует специальный файл, который вы можете поместить в ваше grails-app / conf под названием BuildConfig.groovy, где вы можете указать «локальные» плагины, такие как плагин домена, которые автоматически заносятся в путь к классам без необходимости упаковывать / устанавливать плагин. Делает это очень просто.

2 голосов
/ 16 июля 2009

Вы можете создать свои административные контроллеры, как и любой другой контроллер, и использовать фильтр , чтобы убедиться, что только зарегистрированные пользователи могут получить к ним доступ.

1 голос
/ 27 января 2012

Очень поздно, но вот один способ, который может быть полезен, по крайней мере, для небольших приложений (я использую Grails 2.0):

В конф. / 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')
  }
}

Примечание Как видите, это никак не защищено.

...