Это называется не роли а "подписки". Есть готовые пакеты как официальные, например
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);
}
Это примерная идея, в процессе сами уточните реализацию.