App\Http\Controllers\Auth\UserProvider::findOrCreate PHP 메소드

findOrCreate() 공개 정적인 메소드

public static findOrCreate ( User $payload, $provider )
$payload Microweber\Providers\Socialite\User
    public static function findOrCreate(SocialiteUser $payload, $provider)
    {
        $user = UserData::where('data_id', '=', $payload->id)->get();
        if ($user->isEmpty()) {
            $data = ['email' => $payload->email, 'username' => $payload->name, 'password' => md5(time()), 'is_active' => 1];
            if (strpos($payload->name, ' ')) {
                $name = explode(' ', $payload->name);
                $data['first_name'] = $name[0];
                $data['last_name'] = $name[1];
            }
            $baseUser = new User($data);
            $baseUser->save();
            app()->cache_manager->delete('users');
            $user = new UserData(['user_id' => $baseUser->id, 'provider' => $provider, 'data_token' => $payload->token, 'data_raw' => json_encode($payload->user), 'data_name' => $payload->name, 'data_id' => $payload->id, 'data_email' => $payload->email, 'data_avatar' => $payload->avatar]);
            $user->save();
        } else {
            $user = $user->first();
        }
        return User::find($user->user_id);
    }

Usage Example

예제 #1
0
 function getMw($action = '')
 {
     Socialite::extend('microweber', function ($app) {
         $config = $app['config']['services.microweber'];
         return Socialite::buildProvider('Microweber\\Providers\\Socialite\\MicroweberProvider', $config);
     });
     if ($action == 'callback') {
         $user = Socialite::driver('microweber')->user();
         $user = UserProvider::findOrCreate($user, 'microweber');
         Auth::login($user);
         return Redirect::intended('/');
     }
     return Socialite::driver('microweber')->redirect();
 }
UserProvider