createsConnectedAccounts = $createsConnectedAccounts; } /** * Create a new user from a social provider user. */ public function create(string $provider, ProviderUserContract $providerUser): User { return DB::transaction(function () use ($providerUser, $provider) { return tap(User::create([ 'name' => $providerUser->getName(), 'email' => $providerUser->getEmail(), ]), function (User $user) use ($providerUser, $provider) { $user->markEmailAsVerified(); if ($this->shouldSetProfilePhoto($providerUser)) { $user->setProfilePhotoFromUrl($providerUser->getAvatar()); } $user->switchConnectedAccount( $this->createsConnectedAccounts->create($user, $provider, $providerUser) ); // $this->createCompany($user); // Commented out to prevent creating a company for a Socialite user }); }); } private function shouldSetProfilePhoto(ProviderUserContract $providerUser): bool { return Socialite::hasProviderAvatarsFeature() && Features::managesProfilePhotos() && $providerUser->getAvatar(); } /** * Create a personal company for the user. */ protected function createCompany(User $user): void { $user->ownedCompanies()->save(Company::forceCreate([ 'user_id' => $user->id, 'name' => explode(' ', $user->name, 2)[0]."'s Company", 'personal_company' => true, ])); } }