您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

CreateConnectedAccount.php 1.2KB

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace App\Actions\FilamentCompanies;
  3. use Illuminate\Contracts\Auth\Authenticatable;
  4. use Laravel\Socialite\Contracts\User as ProviderUser;
  5. use Wallo\FilamentCompanies\Contracts\CreatesConnectedAccounts;
  6. use Wallo\FilamentCompanies\{ConnectedAccount, Socialite};
  7. class CreateConnectedAccount implements CreatesConnectedAccounts
  8. {
  9. /**
  10. * Create a connected account for a given user.
  11. */
  12. public function create(Authenticatable $user, string $provider, ProviderUser $providerUser): ConnectedAccount
  13. {
  14. return Socialite::connectedAccountModel()::forceCreate([
  15. 'user_id' => $user->getAuthIdentifier(),
  16. 'provider' => strtolower($provider),
  17. 'provider_id' => $providerUser->getId(),
  18. 'name' => $providerUser->getName(),
  19. 'nickname' => $providerUser->getNickname(),
  20. 'email' => $providerUser->getEmail(),
  21. 'avatar_path' => $providerUser->getAvatar(),
  22. 'token' => $providerUser->token,
  23. 'secret' => $providerUser->tokenSecret ?? null,
  24. 'refresh_token' => $providerUser->refreshToken ?? null,
  25. 'expires_at' => property_exists($providerUser, 'expiresIn') ? now()->addSeconds($providerUser->expiresIn) : null,
  26. ]);
  27. }
  28. }