Кто-нибудь знает, почему модель VerifyTeamIsSubscribed
(->middleware('teamSubscribed');
) не проверяет, есть ли у команды бесплатный план?Кажется, он только делает onGenericTrial()
, который просто проверяет, находится ли столбец trial_ends_at
после сегодняшней даты, но это должно быть нулевым (приводить к ложному) в бесплатном плане.(отредактировано)
Мой провайдер службы Spark выглядит следующим образом:
Spark::freeTeamPlan('DIY Free','test_1234diyfree')
->features($diyFree)
->yearly()
->attributes([
'planid'=>'plan_DIYMFree',
'free'=>1,
'category' => 'all',
])
->maxTeamMembers(3);
, и класс VerifyTeamIsSubscribeed срабатывает в onGenericTrial()
, где он становится ложным из-за этого, конечно, потому что tial_ends_atявляется нулевым:
class VerifyTeamIsSubscribed
{
/**
* Verify the incoming request's current team has a subscription.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string $subscription
* @param string $plan
* @return \Illuminate\Http\Response
*/
public function handle($request, $next, $subscription = 'default', $plan = null)
{
if ($this->subscribed($request->user(), $subscription, $plan, func_num_args() === 2)) {
return $next($request);
}
return $request->ajax() || $request->wantsJson()
? response('Subscription Required.', 402)
: redirect('/settings/'.Spark::teamsPrefix().'/'.$request->user()->currentTeam->id.'#/subscription');
}
/**
* Determine if the given user's current team is subscribed to the given plan.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @param string $subscription
* @param bool $plan
* @param bool $defaultSubscription
* @return bool
*/
protected function subscribed($user, $subscription, $plan, $defaultSubscription)
{
if (! $user || ! $user->currentTeam) {
return false;
}
return ($defaultSubscription && $user->currentTeam->onGenericTrial()) ||
$user->currentTeam->subscribed($subscription, $plan);
}
}