#laravel #laravel-spark
#laravel #laravel-spark
Вопрос:
Кто-нибудь знает, почему VerifyTeamIsSubscribed
модель ( ->middleware('teamSubscribed');
) не проверяет, находится ли команда на бесплатном плане? Кажется, что это только делает, onGenericTrial()
который просто проверяет, находится ли trial_ends_at
столбец после сегодняшней даты, но это должно быть null (результат false) на бесплатном плане. (отредактировано)
Мой поставщик услуг Spark выглядит следующим образом:
Spark::freeTeamPlan('DIY Free','test_1234diyfree')
->features($diyFree)
->yearly()
->attributes([
'planid'=>'plan_DIYMFree',
'free'=>1,
'category' => 'all',
])
->maxTeamMembers(3);
и класс VerifyTeamIsSubscribed отключается на onGenericTrial()
где он, конечно, получает false из-за того, что tial_ends_at равен null:
class VerifyTeamIsSubscribed
{
/**
* Verify the incoming request's current team has a subscription.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @param string $subscription
* @param string $plan
* @return IlluminateHttpResponse
*/
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 IlluminateContractsAuthAuthenticatable $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 amp;amp; $user->currentTeam->onGenericTrial()) ||
$user->currentTeam->subscribed($subscription, $plan);
}
}
Комментарии:
1. К счастью, я, кажется, решил ее, добавив третье условие к подписанной функции:
return ($defaultSubscription amp;amp; $user->currentTeam->onGenericTrial()) || $user->currentTeam->subscribed($subscription, $plan) || $user->currentTeam->subscribed('DIY Free');
Но это кажется странным, и я не понимаю, зачем это было бы необходимо, если у Spark есть концепция freeTeamPlan. Почему бы это не рассмотреть? Или я что-то пропустил?