PersonalAccessTokenController.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\StorePersonalAccessTokenRequest;
  5. use App\Http\Resources\PersonalAccessTokenResource;
  6. use chillerlan\QRCode\QRCode;
  7. class PersonalAccessTokenController extends Controller
  8. {
  9. public function index()
  10. {
  11. return PersonalAccessTokenResource::collection(user()->tokens()->select(['id', 'tokenable_id', 'name', 'created_at', 'last_used_at', 'expires_at'])->get());
  12. }
  13. public function store(StorePersonalAccessTokenRequest $request)
  14. {
  15. // day, week, month, year or null
  16. if ($request->expiration) {
  17. $method = "add".ucfirst($request->expiration);
  18. $expiration = now()->{$method}();
  19. } else {
  20. $expiration = null;
  21. }
  22. $token = user()->createToken($request->name, ['*'], $expiration);
  23. $accessToken = explode('|', $token->plainTextToken, 2)[1];
  24. return [
  25. 'token' => new PersonalAccessTokenResource($token->accessToken),
  26. 'accessToken' => $accessToken,
  27. 'qrCode' => (new QRCode())->render(config('app.url') . "|" . $accessToken)
  28. ];
  29. }
  30. public function destroy($id)
  31. {
  32. $token = user()->tokens()->findOrFail($id);
  33. $token->delete();
  34. return response('', 204);
  35. }
  36. }