/** * Creates a subscription for the currently Authenticated user, provided they are first * at least a member of the site. * * Once a subscription is created, it also creates a payment model for that user and upgrades * their role to 'Susbcriber'. * * @param string $token The user subscription token from Stripe. */ public function createSubscription($token) { // It makes no sense to try and give a subscription to someone who // is not a member if (Auth::isMember()) { // Subscribe the user Auth::user()->subscription($this->currentPlan)->create($token); $subscriptionEndsAt = Auth::user()->subscription()->getSubscriptionEndDate(); // Create a payment representation Payment::create(['user_id' => Auth::id(), 'price' => Plan::retrieve($this->currentPlan)->amount, 'subscription_ends_at' => $subscriptionEndsAt]); // Set the user to the subscriber role Auth::user()->role_id = UserRole::Subscriber; Auth::user()->subscription_ends_at = $subscriptionEndsAt; Auth::user()->trial_ends_at = null; Auth::user()->save(); } }