2015-01-20 2 views
0

У меня есть приложение, которое позволяет пользователям резервировать комнаты. Я хочу добавить возможность для пользователей назначать различные разрешения для каждой комнатыScala способ создания пользовательских разрешений

например, Пользователь является оператором И присваивается этому зданию ИЛИ является администратором.

список условий (isOperator и т. Д.) Будет определяться мной, но как они будут объединены, зависит от пользователя. Приказ о том, что условия применяются, я думаю. Поэтому я думаю, что три таблицы db, одна для условий, одна для комбинаторов (& и т. Д.) И одна для каждой созданной пользователем комбинации, которая, вероятно, будет иметь сводную таблицу с условиями, которые также сохраняют порядок и следующий комбинатор использовано

Мой вопрос в том, что такое scala, mix of oop и functional, способ сделать это. Я хочу вызвать функцию с указанием комнаты и пользователя и получить логическую информацию.

Эта функция должна получить каждое условие и комбинатора в правильном порядке, желательно каким-то образом знают, как заменить каждый комбинатора с языком стандарта лестницу &, или и т.д., проверить каждое условие в отношении пользователя и номер и возвращает булево

+0

Это вопрос дизайна, и ответ на ваш вопрос заключается в том, что это зависит. Это зависит от того, насколько вы знаете теорию функционального программирования и как эта теория применяется к Scala. Вы знаете, что такое HOF? –

+0

Я бы сказал, что я новичок на обоих, но имею понимание обоих, по крайней мере, в той мере, в какой я смог завершить функциональное программирование Oderskys с помощью курса scala coursera и да, если вы имеете в виду функции более высокого порядка. Я понимаю, что это такое – Ir1sh

+1

In Scala , мы моделируем существительные в домене так же, как и в Java. Например, резервирование, пользователь, бизнес-класс, комната. В рамках этих классов у вас будут определения функций, которые моделируют требуемое поведение. Для функционального программирования кода эти функции не должны иметь никаких побочных эффектов. Я бы разместил вашу функцию, описанную выше, в классе резервирования, так как описывает поведение, связанное с этим классом. С точки зрения того, как моделировать данные и определять функции, ну, есть много способов сделать это; взгляните на библиотеку коллекций. –

ответ

1

Я недавно изучал то же самое. Вероятно, мы будем использовать Apache Shiro на уровне авторизации, но я изучил некоторые существующие работы, которые используют функциональный подход к авторизации. Мне не повезло, кроме некоторых примеров Haskell. Даже это использовало ролевое решение, которое меня не устраивало. Например, я не хочу проверять, что у пользователя есть роль администратора, я хочу подтвердить, что у пользователя есть разрешение на выполнение каких-либо действий. Я хочу, чтобы роли только составляли разрешения и назначали их пользователям. Надеюсь, у кого-то есть предложение. Возможно, это благодатная почва для нового проекта.

Смежные вопросы