You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CreateConnectedAccount.php 1.3KB

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