2017-02-09 14 views
2

Сценарий3 Уровни аутентификации/Middleware Laravel

Im здание приложение, которое предлагает 3 уровня платных услуг, но им не уверен, как идти о кодировании функциональности 3 уровня.

Так, например, если мое приложение разрешало пользователям размещать контент на странице, а 3 уровня позволяли вам отправлять 1,5 и 10 раз в месяц, я бы просто создал базу данных, в которой хранятся данные, а затем создаю промежуточное программное обеспечение чтобы проверить количество опубликованных сообщений/уровень публикации пользователей и т. д. Я просто не 100% уверен, что я об этом прав, и задавался вопросом, предложили ли laravel какие-либо альтернативы, которые я, возможно, упустил.

Вопрос

Должен ли я использовать промежуточное программное обеспечение для контроля уровня пользователей или же Laravel предлагают альтернативные и более конкретные методы?

+1

Laravel Разрешения с политикой и воротами. https://laravel.com/docs/5.4/authorization – EddyTheDove

+0

@EddyTheDove Это хорошо и отвечает на мой вопрос об альтернативах, но я бы не знал, как начать реализацию этого –

+0

Ну, middlewares все еще работают. Просто ваш вопрос был о «альтернативных и более конкретных методах». Поэтому, если вы считаете, что это слишком сложно для вас, все хорошо, промежуточное программное обеспечение так же эффективно. Например, пример того, что вы делаете, например, – EddyTheDove

ответ

1

Рассмотрите возможность внедрения пользовательских ролей, соответствующих каждому уровню членства (то есть первая роль может быть «основным пользователем», вторая роль может быть «промежуточным пользователем», а третья роль может быть «продвинутым пользователем»), если вы Не хотите идти с предлагаемым маршрутом политики. Роли могут быть установлены в Laravel с использованием существующих пакетов, таких как Entrust и Sentinel. В вашей таблице пользователей у вас должно быть имя пользователя и идентификатор роли (внешний ключ для роли), в вашей таблице сообщений вы должны иметь идентификатор пользователя (внешний ключ для пользователя) для каждого сообщения, а в таблице ролей - запись ограничивать каждую роль (или хранить ее где-то в приложении в качестве константы/config). Когда пользователь пытается создать новое сообщение, вы можете сделать подсчет всех сообщений, которые они уже отправили, например.

App\User::findById(1)->posts->count();

или рассмотреть возможность использования withCount(), если вы не хотите, чтобы на самом деле загружать их. Затем выполните эту проверку с проверкой того, сколько сообщений ограничено пользователем, например.

User::findById(1)->role->postLimit

Сравнение между ними позволит вам определить, является ли пользователь может продолжить регистрацию.

+0

Это чрезвычайно описательное и просто объяснение, которое я искал. Laravel чрезвычайно устойчив и содержит столько, что я часто пропускаю методы, которые я должен использовать –