public function makeSubscription(Request $request)
 {
     if ($request->input('_key')) {
         return ['error' => 'forbidden'];
     }
     $email = Input::get('email');
     $pushBullet = Input::get('push_bullet');
     $user = Auth::user();
     $userMail = $user->UserMail;
     if (!isset($userMail->id)) {
         $userMail = new UserMail();
         $userMail->user_id = $user->id;
     }
     $sendVerificationTo = [];
     $rules = array('email' => 'email');
     if ($email) {
         $validator = Validator::make(['email' => $email], $rules);
         if (!$validator->fails() && $userMail->email != $email) {
             $verificationCode = str_random(32);
             $sendVerificationTo[] = ['email' => $email, 'verify' => $verificationCode];
             $userMail->email = $email;
             $userMail->verify = $verificationCode;
         }
     }
     if ($pushBullet) {
         $validator = Validator::make(['email' => $pushBullet], $rules);
         if (!$validator->fails() && $userMail->pushbullet != $pushBullet) {
             $verificationCode = str_random(32);
             $sendVerificationTo[] = ['email' => $pushBullet, 'verify' => $verificationCode];
             $userMail->pushbullet = $pushBullet;
             $userMail->pushbullet_verify = $verificationCode;
         }
     }
     if (count($sendVerificationTo) == 0) {
         return $this->subscribeIndex();
     }
     if (!$userMail->save()) {
         return ['error' => 'There was an error trying to save the emails'];
     }
     foreach ($sendVerificationTo as $email) {
         Mail::send('emails.verification', ['email' => $email], function ($message) use($email) {
             $message->to($email['email'])->subject('Thank you for subscribing!');
         });
     }
     return $this->subscribeIndex();
 }
Esempio n. 2
0
 public function __construct($lastCheckedSubscription)
 {
     $userMail = UserMail::whereRaw('user_mail.id > ? and (user_mail.verify = ? or user_mail.pushbullet_verify = ?)', array($lastCheckedSubscription, 'verified', 'verified'))->first();
     $userLists = Subscription::where('subscription.user_id', $userMail->user_id)->whereNull('user_list.deleted_at')->whereNull('subscription.deleted_at')->leftJoin('user_list', 'subscription.user_list_id', '=', 'user_list.id')->distinct()->get(['user_list.id', 'subscription.id as sub_id', 'subscription.created_at', 'subscription.updated_at']);
     $subscriptionIds = $userLists->lists('sub_id');
     $profiles = UserListProfile::whereIn('user_list_profile.user_list_id', $userLists->lists('id'))->leftJoin('profile', 'user_list_profile.profile_id', '=', 'profile.id')->leftJoin('profile_ban', 'profile_ban.profile_id', '=', 'profile.id')->whereNull('user_list_profile.deleted_at')->distinct()->get(['user_list_profile.user_list_id', 'profile.id', 'profile.display_name', 'profile.small_id', 'profile.avatar_thumb', 'profile_ban.vac', 'profile_ban.community', 'profile_ban.trade', 'profile_ban.unban', 'profile_ban.created_at', 'profile_ban.updated_at', 'profile_ban.vac_banned_on']);
     $this->profiles = $profiles;
     $this->userMail = $userMail;
     $this->userLists = $userLists;
     $this->subscriptionIds = $subscriptionIds;
 }
 public function subscriptionVerify($email, $verifyKey)
 {
     $userMail = UserMail::whereRaw('(email = ? and verify = ?) or (pushbullet = ? and pushbullet_verify = ?)', [$email, $verifyKey, $email, $verifyKey])->first();
     if (!isset($userMail->id)) {
         if (Auth::check()) {
             return redirect()->route('settings');
         }
         return redirect()->route('home');
     }
     if ($userMail->email == $email && $userMail->verify == $verifyKey) {
         $userMail->verify = "verified";
     } else {
         if ($userMail->pushbullet == $email && $userMail->pushbullet_verify == $verifyKey) {
             $userMail->pushbullet_verify = "verified";
         }
     }
     $userMail->save();
     if (Auth::check()) {
         return redirect()->route('settings');
     }
     return redirect()->route('home');
 }