77use App \Http \Requests \Auth \RegisterRequest ;
88use App \Http \Requests \Auth \UpdateBasicProfileSettingsRequest ;
99use App \Http \Requests \Auth \UpdateProfileRequest ;
10- use App \Http \Resources \MyTokensResource ;
1110use App \Models \User ;
1211use App \Models \UserSocial ;
13- use App \TechDiary \Authentication ;
1412use Illuminate \Auth \AuthenticationException ;
13+ use Illuminate \Support \Facades \URL ;
1514use Illuminate \Support \Str ;
1615use Laravel \Socialite \Facades \Socialite ;
1716use Laravel \Socialite \Two \InvalidStateException ;
@@ -24,87 +23,97 @@ class AuthController extends Controller
2423 * @param RegisterRequest $request
2524 * @return \Illuminate\Http\JsonResponse
2625 */
27- public function register (RegisterRequest $ request )
28- {
29- $ user = User::create ($ request ->all (['name ' , 'username ' , 'email ' , 'password ' ]));
30-
31- return response ()->json ([
32- 'message ' => 'Registered successfully ' ,
33- 'user ' => $ user
34- ]);
35- }
26+ // public function register(RegisterRequest $request)
27+ // {
28+ // $user = User::create($request->all(['name', 'username', 'email', 'password']));
29+ //
30+ // return response()->json([
31+ // 'message' => 'Registered successfully',
32+ // 'user' => $user
33+ // ]);
34+ // }
35+ //
3636
3737 /**
3838 * Login using email and password
3939 * @param LoginRequest $request
4040 * @return array
4141 * @throws AuthenticationException
4242 */
43- public function login (LoginRequest $ request )
44- {
45- if (!auth ()->guard ()->attempt ($ request ->all ()))
46- throw new AuthenticationException ('Invalid credential ' );
47-
48- return [
49- 'token ' => Authentication::createToken (auth ()->user ())
50- ];
51- }
43+ // public function getTokenUsingCredential (LoginRequest $request)
44+ // {
45+ // if (!auth()->guard()->attempt($request->all()))
46+ // throw new AuthenticationException('Invalid credential');
47+ //
48+ // return [
49+ // 'token' => Authentication::createToken(auth()->user())
50+ // ];
51+ // }
5252
5353 /**
5454 * Authenticated user's tokens
5555 * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
5656 */
57- public function myTokens ()
58- {
59- return MyTokensResource::collection (auth ()->user ()->tokens );
60- }
57+ // public function myTokens()
58+ // {
59+ // return MyTokensResource::collection(auth()->user()->tokens);
60+ // }
61+
62+ // public function revokeToken($id)
63+ // {
64+ // auth()->user()->tokens()->find($id)->delete();
65+ //
66+ // return response()->json([
67+ // 'message' => 'Token revoked successfully'
68+ // ]);
69+ // }
70+
71+ // public function logout()
72+ // {
73+ // auth()->user()->currentAccessToken()->delete();
74+ //
75+ // return response()->json([
76+ // 'message' => 'Successfully logged out'
77+ // ]);
78+ // }
6179
62- public function revokeToken ($ id )
80+ /**
81+ *
82+ * @param $service
83+ * @return mixed
84+ */
85+ public function oauthRedirect ($ service )
6386 {
64- auth ()->user ()->tokens ()->find ($ id )->delete ();
65-
66- return response ()->json ([
67- 'message ' => 'Token revoked successfully '
68- ]);
87+ return Socialite::driver ($ service )->stateless ()->redirect ();
6988 }
7089
71- public function logout ( )
90+ public function oauthCallback ( $ service )
7291 {
73- auth ()->user ()->currentAccessToken ()->delete ();
7492
75- return response ()->json ([
76- 'message ' => 'Successfully logged out '
77- ]);
78- }
79-
80- public function redirect ($ service )
81- {
82- return Socialite::driver ($ service )->stateless ()->redirect ();
83- }
8493
85- public function callback ($ service )
86- {
8794 try {
88- $ serviceUser = Socialite::driver ($ service )->stateless ()->user ();
89- // Check if this service already exists
95+
96+ $ socialServiceUser = Socialite::driver ($ service )->stateless ()->user ();
97+
9098 $ social_user = UserSocial::where ([
9199 ['service ' , $ service ],
92- ['service_uid ' , $ serviceUser ->id ]
100+ ['service_uid ' , $ socialServiceUser ->id ]
93101 ])->first ();
102+
94103 if ($ social_user ) $ user = $ social_user ->user ;
95- else if (!$ user = User::whereEmail ($ serviceUser ->email )->first ()) {
104+ else if (!$ user = User::whereEmail ($ socialServiceUser ->email )->first ()) {
96105
97106 $ user = new User ([
98- 'username ' => $ serviceUser ->nickname ?? strtolower (explode ("@ " , $ serviceUser ->email )[0 ] . Str::random (4 )),
99- 'name ' => $ serviceUser ->name ?? Str::random (6 ),
100- 'email ' => $ serviceUser ->email ,
101- 'profilePhoto ' => $ serviceUser ?->avatar,
102- 'bio ' => collect ($ serviceUser ->user )->has ('bio ' ) ? $ serviceUser ->user ['bio ' ] : null ,
107+ 'username ' => $ socialServiceUser ->nickname ?? strtolower (explode ("@ " , $ socialServiceUser ->email )[0 ] . Str::random (4 )),
108+ 'name ' => $ socialServiceUser ->name ?? Str::random (6 ),
109+ 'email ' => $ socialServiceUser ->email ,
110+ 'profilePhoto ' => $ socialServiceUser ?->avatar,
111+ 'bio ' => collect ($ socialServiceUser ->user )->has ('bio ' ) ? $ socialServiceUser ->user ['bio ' ] : null ,
103112 ]);
104113
105114 if ($ service == 'github ' ) {
106115 $ user ->social_links = [
107- 'github ' => 'https://github.com/ ' . $ serviceUser ->nickname
116+ 'github ' => 'https://github.com/ ' . $ socialServiceUser ->nickname
108117 ];
109118 }
110119 $ user ->save ();
@@ -114,18 +123,29 @@ public function callback($service)
114123 NewUserCreated::dispatch ($ user );
115124 $ user ->socialProviders ()->create ([
116125 'service ' => $ service ,
117- 'service_uid ' => $ serviceUser ->id
126+ 'service_uid ' => $ socialServiceUser ->id
118127 ]);
119128 }
120129
121- $ redirect_url = env ('CLIENT_URL ' ) . '/social-callback?token= ' . Authentication::createToken ($ user );
130+ $ signedRoute = URL ::temporarySignedRoute ('oauth-signed-login ' , now ()->addMinute (), [
131+ 'user_id ' => $ user ->id ,
132+ ]);
133+ $ signedToken = explode ('? ' , $ signedRoute )[1 ];
134+
135+ $ redirect_url = env ('CLIENT_URL ' ) . '/auth/oauth-callback? ' . $ signedToken ;
122136 return redirect ($ redirect_url );
123137
124138 } catch (InvalidStateException $ e ) {
125139 return $ this ->redirect (env ('CLIENT_URL ' ) . '?error=1 ' );
126140 }
127141 }
128142
143+ public function oauthSignedLogin (\Illuminate \Http \Request $ request )
144+ {
145+ auth ()->loginUsingId ($ request ->get ('user_id ' ));
146+ return response ()->noContent ();
147+ }
148+
129149 public function updateProfile (UpdateProfileRequest $ request )
130150 {
131151 auth ()->user ()->update ($ request ->all ());
@@ -151,4 +171,4 @@ public function updateBasicProfileSettings(UpdateBasicProfileSettingsRequest $re
151171 ]);
152172 }
153173
154- }
174+ }
0 commit comments