/** * Обновление или создание нового пользователя * @param $userArray * @return User|\Illuminate\Http\RedirectResponse */ public function userCreateUpdate($userArray) { //Проверяем, есть ли этот пользователь в БД if ($oauth = Oauth::where('provider_user_id', $userArray['provider_user_id'])->where('provider', $userArray['provider'])->first()) { //Обновляем данные в таблице oauth $oauth->access_token = $userArray['access_token']; $oauth->save(); //Обновляем данные в таблице user $user = $oauth->user()->first(); $user->email = $userArray['email']; $user->save(); //Обновляем данные в таблице profile $profile = $user->profile()->first(); $profile->first_name = $userArray['first_name']; $profile->last_name = $userArray['last_name']; $profile->avatar = $userArray['avatar']; $profile->save(); } else { //Если пользователя нет в БД, то создаем нового try { //Запись в таблицу user $user = new User(); $user->nickname = $userArray['first_name'] . ' ' . $userArray['last_name']; $user->email = $userArray['email']; $user->status = 1; $user->access = 'user'; $user->save(); //Запись в таблицу oauth $oauthUser = new Oauth(); $oauthUser->provider_user_id = $userArray['provider_user_id']; $oauthUser->provider = $userArray['provider']; $oauthUser->access_token = $userArray['access_token']; $user->oauth()->save($oauthUser); //Запись в таблицу profile $profile = new Profile(); $profile->first_name = $userArray['first_name']; $profile->last_name = $userArray['last_name']; $profile->avatar = $userArray['avatar']; $user->profile()->save($profile); } catch (\Exception $e) { //Ошибки заносим в лог файл \Log::error('Oauth: ' . $e->getMessage()); return redirect('/')->with('error', 'Ошибка или пользователь с таким email существует!'); } } return $user; }