Используя CRUD, вы можете объявить один контроллер на объект. Затем вы можете добавить аннотации, необходимые для безопасности.
Например, для сущности пользователя у вас будет этот контроллер:
@Check("admin")
@With(Security.class)
@For(models.User.class)
public class Users extends controllers.CRUD {
}
В @With вы должны указать на класс, расширяющий Secure.Security. Например:
public class Security extends Secure.Security {
static boolean authenticate(String username, String password) {
return User.connect(email, password) != null;
}
static boolean check(String profile) {
if("admin".equals(profile)) {
return User.all().filter("email", connected()).get().isAdmin;
}
return false;
}
static void onDisconnected() {
Application.index();
}
static void onAuthenticated() {
Admin.index();
}
}