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