Проблема с промежуточным программным обеспечением Spark ‘teamSubscribed’ от Laravel с freeTeamPlan

#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. Почему бы это не рассмотреть? Или я что-то пропустил?