/**
  * 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();
     }
 }