WebAuthnManageController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use App\Http\Requests\WebauthnRenameRequest;
  6. use DarkGhostHunter\Larapass\Eloquent\WebAuthnCredential;
  7. class WebAuthnManageController extends Controller
  8. {
  9. // use RecoversWebAuthn;
  10. /*
  11. |--------------------------------------------------------------------------
  12. | WebAuthn Manage Controller
  13. |--------------------------------------------------------------------------
  14. |
  15. |
  16. */
  17. /**
  18. * Create a new controller instance.
  19. *
  20. * @return void
  21. */
  22. public function __construct()
  23. {
  24. }
  25. /**
  26. * List all WebAuthn registered credentials
  27. */
  28. public function index(Request $request)
  29. {
  30. $user = $request->user();
  31. $allUserCredentials = $user->webAuthnCredentials()
  32. ->enabled()
  33. ->get()
  34. ->all();
  35. return response()->json($allUserCredentials, 200);
  36. }
  37. /**
  38. * Rename a WebAuthn device
  39. *
  40. * @param \App\Http\Requests\WebauthnRenameRequest $request
  41. * @return \Illuminate\Http\JsonResponse
  42. */
  43. public function rename(WebauthnRenameRequest $request, string $credential)
  44. {
  45. $validated = $request->validated();
  46. $webAuthnCredential = WebAuthnCredential::where('id', $credential)->firstOrFail();
  47. $webAuthnCredential->name = $validated['name'];
  48. $webAuthnCredential->save();
  49. return response()->json([
  50. 'name' => $webAuthnCredential->name,
  51. ], 200);
  52. }
  53. /**
  54. * Remove the specified credential from storage.
  55. *
  56. * @return \Illuminate\Http\JsonResponse
  57. */
  58. public function delete(Request $request, $credential)
  59. {
  60. $user = $request->user();
  61. $user->removeCredential($credential);
  62. return response()->json(null, 204);
  63. }
  64. }