|
2 | 2 |
|
3 | 3 | namespace Pterodactyl\Http\Controllers\Auth; |
4 | 4 |
|
| 5 | +use Lcobucci\JWT\Builder; |
5 | 6 | use Illuminate\Http\Request; |
6 | 7 | use Illuminate\Http\JsonResponse; |
7 | 8 | use Illuminate\Contracts\View\View; |
| 9 | +use Lcobucci\JWT\Signer\Hmac\Sha256; |
8 | 10 | use Pterodactyl\Exceptions\Repository\RecordNotFoundException; |
9 | 11 |
|
10 | 12 | class LoginController extends AbstractLoginController |
@@ -63,11 +65,26 @@ public function login(Request $request): JsonResponse |
63 | 65 | 'request_ip' => $request->ip(), |
64 | 66 | ], 5); |
65 | 67 |
|
66 | | - return response()->json(['complete' => false, 'token' => $token]); |
| 68 | + return response()->json(['complete' => false, 'login_token' => $token]); |
67 | 69 | } |
68 | 70 |
|
| 71 | + $signer = new Sha256(); |
| 72 | + $token = (new Builder)->setIssuer('http://pterodactyl.local') |
| 73 | + ->setAudience('http://pterodactyl.local') |
| 74 | + ->setId(str_random(12), true) |
| 75 | + ->setIssuedAt(time()) |
| 76 | + ->setNotBefore(time()) |
| 77 | + ->setExpiration(time() + 3600) |
| 78 | + ->set('uid', $user->id) |
| 79 | + ->sign($signer, env('APP_JWT_KEY')) |
| 80 | + ->getToken(); |
| 81 | + |
69 | 82 | $this->auth->guard()->login($user, true); |
70 | 83 |
|
71 | | - return response()->json(['complete' => true]); |
| 84 | + return response()->json([ |
| 85 | + 'complete' => true, |
| 86 | + 'intended' => $this->redirectPath(), |
| 87 | + 'token' => $token->__toString(), |
| 88 | + ]); |
72 | 89 | } |
73 | 90 | } |
0 commit comments