/** * Verify the incoming request's user belongs to team. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return \Illuminate\Http\Response */ public function handle($request, $next) { if (Spark::usesTeams() && $request->user() && !$request->user()->hasTeams()) { return redirect('missing-team'); } return $next($request); }
/** * {@inheritdoc} */ public function validator($request) { $validator = $this->baseValidator($request); $validator->sometimes('team', 'required|max:255', function ($input) { return Spark::usesTeams() && !isset($input['invitation']); }); return $validator; }
/** * Create the user for the new registration. * * @param RegisterRequest $request * @return \Illuminate\Contracts\Auth\Authenticatable */ protected function createUser(RegisterRequest $request) { $user = Spark::interact(CreateUserContract::class, [$request]); if (Spark::usesTeams()) { $this->configureTeamForNewUser($request, $user); } return $user; }
/** * Load the relationships for the given user. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @return \Illuminate\Contracts\Auth\Authenticatable */ protected function loadUserRelationships($user) { $user->load('subscriptions'); if (Spark::usesTeams()) { $user->load(['ownedTeams.subscriptions', 'teams.subscriptions']); $user->currentTeam(); } return $user; }
/** * {@inheritdoc} */ public function totalRevenueForUser($user) { $teamIds = Spark::usesTeams() ? $user->teams->pluck('id')->all() : []; return DB::table('invoices')->where('user_id', $user->id)->orWhereIn('team_id', $teamIds)->sum('total'); }
/** * Get the default JavaScript variables for Spark. * * @return array */ public static function scriptVariables() { return ['braintreeMerchantId' => config('services.braintree.merchant_id'), 'braintreeToken' => Spark::billsUsingBraintree() ? BraintreeClientToken::generate() : null, 'cardUpFront' => Spark::needsCardUpFront(), 'collectsBillingAddress' => Spark::collectsBillingAddress(), 'collectsEuropeanVat' => Spark::collectsEuropeanVat(), 'csrfToken' => csrf_token(), 'currencySymbol' => Cashier::usesCurrencySymbol(), 'env' => config('app.env'), 'roles' => Spark::roles(), 'state' => Spark::call(InitialFrontendState::class . '@forUser', [Auth::user()]), 'stripeKey' => config('services.stripe.key'), 'userId' => Auth::id(), 'usesApi' => Spark::usesApi(), 'usesBraintree' => Spark::billsUsingBraintree(), 'usesTeams' => Spark::usesTeams(), 'usesStripe' => Spark::billsUsingStripe()]; }
/** * Get the current team for the user. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @return \Laravel\Spark\Team|null */ protected function currentTeam($user) { if (Spark::usesTeams() && $user->currentTeam()) { return Spark::interact(TeamRepository::class . '@find', [$user->currentTeam()->id]); } }