Я должен считать все доступные действия от любого контроллера в моем веб-приложении. Причиной этого является система авторизации, где я должен дать пользователям список позволенных действий.
Например: у Пользователя xyz есть авторизация для выполнения шоу действий, списка, поиска. У пользовательского администратора есть авторизация для выполнения редактирования действий, удалите и т.д.
Я должен считать все действия от контроллера. У кого-либо есть идея?
Это создаст список карт (переменная 'data') с информацией о контроллере. Каждый элемент списка представляет собой Map с ключами 'controller', соответствующим URL-имени контроллера (например, BookController -> 'book'), controllerName, соответствующим имени класса ('BookController'), и 'actions', соответствующим списку имен действий для этого контроллера:
import org.springframework.beans.BeanWrapper
import org.springframework.beans.PropertyAccessorFactory
def data = []
for (controller in grailsApplication.controllerClasses) {
def controllerInfo = [:]
controllerInfo.controller = controller.logicalPropertyName
controllerInfo.controllerName = controller.fullName
List actions = []
BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(controller.newInstance())
for (pd in beanWrapper.propertyDescriptors) {
String closureClassName = controller.getPropertyOrStaticPropertyOrFieldValue(pd.name, Closure)?.class?.name
if (closureClassName) actions << pd.name
}
controllerInfo.actions = actions.sort()
data << controllerInfo
}