@@ -19,7 +19,7 @@ class UserProviderRepository implements ProviderRepository
1919 public function exists (string $ driver , SocialiteUser $ user ): bool
2020 {
2121 return $ this ->newUserQuery (Bartender::getUserModel ())
22- ->where ('email ' , $ user ->email )
22+ ->where ('email ' , $ user ->getEmail () )
2323 ->where (fn (Builder $ query ) => (
2424 $ query
2525 ->whereNull ('provider_name ' )
@@ -35,51 +35,55 @@ public function updateOrCreate(string $driver, SocialiteUser $user): Authenticat
3535 {
3636 $ model = Bartender::getUserModel ();
3737
38+ /** @var Authenticatable $eloquent */
3839 $ eloquent = $ this ->newUserQuery ($ model )->firstWhere ([
39- 'email ' => $ user ->email ,
40+ 'email ' => $ user ->getEmail () ,
4041 'provider_name ' => $ driver ,
4142 ]) ?? (new $ model )->forceFill ([
42- 'email ' => $ user ->email ,
43+ 'email ' => $ user ->getEmail () ,
4344 'provider_name ' => $ driver ,
4445 ]);
4546
4647 $ eloquent ->forceFill (
47- array_merge ([
48- 'name ' => $ user ->name ,
49- 'provider_id ' => $ user ->id ,
50- 'password ' => $ eloquent ->password ?? $ this ->hash ($ this ->getNewPassword ()),
51- ],
52- $ this ->isUsingSoftDeletes ($ model )
53- ? ['deleted_at ' => null ]
54- : [],
55- $ this ->isVerifyingEmails ($ model )
56- ? ['email_verified_at ' => $ eloquent ->email_verified_at ?? now ()]
57- : [],
58- $ this ->isStoringTokens ($ model )
59- ? [
60- 'provider_access_token ' => $ user ->token ,
61- 'provider_refresh_token ' => $ this ->getRefreshToken ($ user , $ eloquent ->provider_refresh_token ),
62- ] : [],
63- )
48+ $ this ->getUserAttributes ($ model , $ user , $ eloquent )
6449 )->save ();
6550
6651 return $ eloquent ;
6752 }
6853
6954 /**
70- * Hash the given value.
55+ * Get the user attributes to be stored.
56+ *
57+ * @param class-string $model
7158 */
72- protected function hash (string $ value ): string
59+ protected function getUserAttributes (string $ model , SocialiteUser $ user , Authenticatable $ eloquent ): array
7360 {
74- return Hash::make ($ value );
61+ return array_merge (
62+ [
63+ 'name ' => $ user ->getName (),
64+ 'provider_id ' => $ user ->getId (),
65+ 'password ' => $ eloquent ->getAuthPassword () ?? $ this ->getHashedValue ($ this ->getNewPassword ()),
66+ ],
67+ $ this ->isUsingSoftDeletes ($ model )
68+ ? ['deleted_at ' => null ]
69+ : [],
70+ $ this ->isVerifyingEmails ($ model )
71+ ? ['email_verified_at ' => $ eloquent ->email_verified_at ?? now ()]
72+ : [],
73+ $ this ->isStoringTokens ($ model )
74+ ? [
75+ 'provider_access_token ' => $ this ->getAccessToken ($ user , $ eloquent ->provider_access_token ),
76+ 'provider_refresh_token ' => $ this ->getRefreshToken ($ user , $ eloquent ->provider_refresh_token ),
77+ ] : [],
78+ );
7579 }
7680
7781 /**
78- * Get a new password for the user.
82+ * Get the access token from the Socialite user.
7983 */
80- protected function getNewPassword ( ): string
84+ protected function getAccessToken ( SocialiteUser $ user , ? string $ default = null ): ? string
8185 {
82- return Str:: random () ;
86+ return $ user -> token ?? $ default ;
8387 }
8488
8589 /**
@@ -92,6 +96,22 @@ protected function getRefreshToken(SocialiteUser $user, ?string $default = null)
9296 ?? $ default ;
9397 }
9498
99+ /**
100+ * Hash the given value.
101+ */
102+ protected function getHashedValue (string $ value ): string
103+ {
104+ return Hash::make ($ value );
105+ }
106+
107+ /**
108+ * Get a new password for the user.
109+ */
110+ protected function getNewPassword (): string
111+ {
112+ return Str::random ();
113+ }
114+
95115 /**
96116 * Get a new user query instance.
97117 *
0 commit comments