/** * Update the specified contributor in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function update(Request $request) { $rules = ['avatar' => 'mimes:jpg,jpeg,gif,png|max:1000', 'cover' => 'mimes:jpg,jpeg,gif,png|max:1000']; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { $failedRules = $validator->failed(); $validAvatar = isset($failedRules['avatar']); $validCover = isset($failedRules['cover']); $errorMessage = "Invalid avatar or cover"; if ($validAvatar && $validCover) { $errorMessage = "Cover and Avatar is invalid"; } else { if ($validAvatar) { $errorMessage = "Avatar is invalid"; } else { if ($validCover) { $errorMessage = "Cover is invalid"; } } } $errorMessage .= ", must image and less than 1MB"; return response()->json(['request_id' => uniqid(), 'status' => 'denied', 'message' => $errorMessage, 'timestamp' => Carbon::now()], 400); } $contributor = Contributor::findOrFail($request->input('contributor_id')); if ($request->has('new_password') && !empty($request->get('new_password'))) { $credential = Hash::check($request->input('password'), $contributor->password); if (!$credential) { return response()->json(['request_id' => uniqid(), 'status' => 'mismatch', 'message' => 'Current password is mismatch', 'timestamp' => Carbon::now()], 401); } } $usernameExist = Contributor::whereUsername($request->input('username'))->where('id', '!=', $contributor->id)->count(); if ($usernameExist) { return response()->json(['request_id' => uniqid(), 'status' => 'denied', 'message' => 'Username has been taken', 'timestamp' => Carbon::now()], 400); } $emailExist = Contributor::whereEmail($request->input('email'))->where('id', '!=', $contributor->id)->count(); if ($emailExist) { return response()->json(['request_id' => uniqid(), 'status' => 'denied', 'message' => 'Email has been taken', 'timestamp' => Carbon::now()], 400); } $contributor->name = $request->input('name'); $contributor->gender = $request->input('gender'); $contributor->birthday = $request->input('birthday'); $contributor->location = $request->input('location'); $contributor->contact = $request->input('contact'); $contributor->about = $request->input('about'); $contributor->username = $request->input('username'); $contributor->email = $request->input('email'); $image = new Uploader(); if ($image->upload($request, 'avatar', base_path('public/images/contributors/'), 'avatar_' . $request->input('contributor_id'))) { $contributor->avatar = $request->input('avatar'); } if ($image->upload($request, 'cover', base_path('public/images/covers/'), 'cover_' . $request->input('contributor_id'))) { $contributor->cover = $request->input('cover'); } $contributor->instagram = $request->input('instagram'); $contributor->facebook = $request->input('facebook'); $contributor->twitter = $request->input('twitter'); $contributor->googleplus = $request->input('googleplus'); $contributor->email_subscription = $request->input('email_subscription'); $contributor->email_message = $request->input('email_message'); $contributor->email_follow = $request->input('email_follow'); $contributor->email_feed = $request->input('email_feed'); $contributor->mobile_notification = $request->input('mobile_notification'); if ($request->has('new_password') && !empty($request->get('new_password'))) { $request->merge(['password' => Hash::make($request->input('new_password'))]); $contributor->password = $request->input('password'); } $contributor->bank_id = $request->input('bank_id'); $contributor->account_name = $request->input('account_name'); $contributor->account_number = $request->input('account_number'); if ($contributor->save()) { return response()->json(['request_id' => uniqid(), 'status' => 'success', 'message' => 'Setting was updated', 'timestamp' => Carbon::now(), 'contributor' => $contributor->profile($contributor->username, false, $request->input('contributor_id'), true)]); } else { return response()->json(['request_id' => uniqid(), 'status' => 'failure', 'message' => Lang::get('alert.database.generic'), 'timestamp' => Carbon::now()], 500); } }
/** * Obtain the user information from Facebook. * * @return Response */ public function handleFacebookProviderCallback() { /* * -------------------------------------------------------------------------- * Login with facebook * -------------------------------------------------------------------------- * Initiating facebook driver and retrieve authenticate facebook login, * check if the user has been registered before, if they doesn't exist * create the new one then authenticating them and redirect. */ $user = Socialite::driver('facebook')->user(); $contributor = Contributor::whereVendor('facebook')->whereToken($user->id); if ($contributor->count() == 0) { /* * -------------------------------------------------------------------------- * Populate facebook data * -------------------------------------------------------------------------- * Collect the facebook basic data and create new contributor, * the data including avatar, cover and facebook profile information. */ if (Contributor::whereEmail($user->email)->count()) { return redirect()->route('login.form')->with('status', 'Email has been registered via web or twitter'); } $contributor = new Contributor(); $avatar = file_get_contents("https://graph.facebook.com/{$user->id}/picture?type=large"); file_put_contents('images/contributors/facebook-' . $user->id . '.jpg', $avatar); $contributor->token = $user->id; $contributor->api_token = str_random(60); $contributor->name = $user->name; $contributor->username = explode('@', $user->email)[0] . '.fb'; $contributor->password = Hash::make(uniqid()); $contributor->email = $user->email; $contributor->vendor = 'facebook'; $contributor->status = 'activated'; $contributor->avatar = 'facebook-' . $user->id . '.jpg'; $contributor->save(); /* * -------------------------------------------------------------------------- * Create register activity * -------------------------------------------------------------------------- * Create new instance of Activity and insert register activity. */ Activity::create(['contributor_id' => $contributor->id, 'activity' => Activity::registerActivity($contributor->username, 'facebook')]); $this->sendAdminContributorNotification($contributor); } Auth::login($contributor->first()); return redirect()->route('account.stream'); }
/** * Show reset password view. * * @param null $token * @return $this|\Illuminate\Http\Response */ public function showResetForm($token = null) { if (is_null($token)) { return $this->getEmail(); } /* * -------------------------------------------------------------------------- * Checking password reset request token * -------------------------------------------------------------------------- * Check if user has been creating request for changing their password * otherwise throw it 404 error page, then retrieve their profile to make * sure they are going to update the correct account. */ $reset = DB::table('password_resets')->whereToken($token)->first(); if ($reset == null) { abort(404); } $contributor = Contributor::whereEmail($reset->email)->firstOrFail(); return view('auth.passwords.reset')->with(compact('token', 'contributor')); }