Установление лимитов на основе планов Laravel Cashier

Мне было интересно, есть ли у кого-нибудь опыт наложения ограничений на функции, основанные на текущем плане пользователя (используя Кассу). Например, скажем, у нас есть приложение, похожее на netflix, которое имеет 3 ежемесячных плана:

  • ежемесячно-1
  • в месяц-2
  • ежемесячно неограниченное

Ограничение пользователей определенными областями сайта или функциями кажется достаточно тривиальным с использованием subscription (). Например, если только пользователи с ежемесячным неограниченным или ежемесячным неограниченным тарифом могут смотреть в HD, мы могли бы сделать что-то вроде этого (вероятно, не лучшим способом, а просто примером):

public function getHdLink(Video $video)
{
    if (Auth::user()->subscribed('monthly-1')) {
        throw new AccessDeniedException("You should upgrade your plan to watch in HD");
    }

    return "...";
}

Но что, если мы хотим ограничить количество видео, которые людям разрешено смотреть в зависимости от их плана? То, что я делаю сейчас, примерно так:

// in a controller
public function watch(Video $video)
{
    $view_counts = Auth::user()->activities()->count();

    if (Auth::user()->subscribed('monthly-1') && $view_counts >= 25) {
        throw new Exception("You watched too many movies");
    }
}

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

Спасибо!

0 ответов

Другие вопросы по тегам