Чи повинні проводитись перевірки дозволів користувача у моделі чи контролері? І хто повинен обробляти перевірки дозволів, об’єкт User або якийсь помічник UserManagement?
Де це повинно відбутися?
Перевірка в контролері:
class MyController {
void performSomeAction() {
if (user.hasRightPermissions()) {
model.someAction();
}
}
...
Здійснення перевірок у контролері допомагає робити Моделі простими діями, тому ми можемо зберігати всю логіку щодо контролерів.
Перевірка в моделі:
class MyModel {
void someAction() {
if (user.hasRightPermissions()) {
...
}
}
...
Встановлюючи чеки в Модель, ми ускладнюємо Модель, але також переконуємось, що ми випадково не дозволяємо користувачам робити речі, які вони не повинні містити в Контролері.
А ким?
Як тільки ми оселимось на місці, хто повинен робити чеки? Користувач?
Class User {
bool hasPermissions(int permissionMask) {
...
}
...
Але це не дійсно відповідальність користувача знати те, що він / вона може отримати, тому, можливо, якийсь клас помічників?
Class UserManagement {
bool hasPermissions(User user, int permissionMask) {
...
}
...
Я знаю, що звичайно задавати лише одне запитання, ну, питання, але я думаю, що на них можна відповісти чудово разом.