@Danila534

Как создать временные роли на сайте?

Добрый вечер,

Я создал форму, в которой пользователь моего сайта может воспользоваться покупкой улучшенной роли...
Происходит это благодаря запросу в базу данных через InsertID ))

Подскажите пожалуйста, как можно реализовать временные роли на сайте? Например роль сроком на 1 месяц, после она автоматически должна исчезнуть...

Спасибо.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kandrash
Кратко о себе
Это называется не роли а "подписки". Есть готовые пакеты как официальные, например https://laravel.com/docs/8.x/billing так и сторонние.

А в целом, для начала, достаточно одной таблицы типа subscriptions. Храните там юзера, тип подписки, и таймстамп срока годности типа valid_until. При обращении к функционалу который зависит от подписки проверяете что она ещё не закончилась. Какой-нибудь middleware добавьте HasActiveSubscription
public function handle(Request $request, Closure $next, string $subscription)
{
    if (
        $request->user()->subscription->name !== $subscription
        || $request->user()->subscription->valid_until < Carbon::now()
    ) {
        abort(403);
    }

    return $next($request);
}

Это примерная идея, в процессе сами уточните реализацию.
Ответ написан
@jazzus
Судя по вопросам, самый сложный способ)
Добавить поле даты активности. Купил на месяц записываешь в active_at = now()->addMonth()
Проверять с помощью политик авторизации. Правило
$enity->active_at >= now()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы