/**
  * Return user if exists; create and return if doesn't.
  *
  * @param $socialUser
  * @return User
  */
 private function findOrCreateUser($socialUser)
 {
     if ($authUser = User::where('email', $socialUser->getEmail())->first()) {
         return $authUser;
     }
     return User::create(['name' => $socialUser->getName(), 'email' => $socialUser->getEmail(), 'provider_id' => $socialUser->getId(), 'avatar' => $socialUser->getAvatar()]);
 }
 /**
  * Store a newly created category in database.
  *
  * @param  Soma\Http\Requests\CategoriesRequest  $request
  * @return \Illuminate\Routing\Redirector
  */
 public function store(CategoriesRequest $request)
 {
     $user = User::authorizedUser($request->email)->first();
     $user->categories()->create(['title' => $request->title]);
     flash()->success('Category Added', 'You have created a new category!');
     return redirect()->back();
 }
 /**
  * Update the avatar url.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return void
  */
 public function changeAvatar(Request $request, $id)
 {
     $baseDir = 'avatar';
     $this->validate($request, ['photo' => 'required|mimes:jpg,jpeg,png,bmp']);
     $file = $request->file('photo');
     $name = $file->getClientOriginalName();
     $file->move($baseDir, $name);
     $user = User::find($id);
     $user->avatar = '/' . $baseDir . '/' . $name;
     $user->save();
 }
 /**
  * Create a new user instance after a valid registration.
  *
  * @param  array  $data
  * @return User
  */
 protected function create(array $data)
 {
     $user = User::create(['name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password'])]);
     flash()->success('Welcome to SomaTech!', 'Thank you for being a member.');
     return $user;
 }