/**
  * 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);
     }
 }
Esempio n. 2
0
 /**
  * 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'));
 }