12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
- namespace App\Http\Controllers\Auth;
- use App\Http\Controllers\Controller;
- use App\Http\Requests\WebauthnAttestationRequest;
- use App\Http\Requests\WebauthnAttestedRequest;
- use Illuminate\Contracts\Support\Responsable;
- use Illuminate\Http\Response;
- use Illuminate\Support\Facades\Log;
- use Laragear\WebAuthn\Enums\UserVerification;
- class WebAuthnRegisterController extends Controller
- {
- /**
- * Returns a challenge to be verified by the user device.
- */
- public function options(WebauthnAttestationRequest $request) : Responsable
- {
- switch (config('webauthn.user_verification')) {
- case UserVerification::DISCOURAGED:
- $request = $request->fastRegistration(); // Makes the authenticator to only check for user presence on registration
- break;
- case UserVerification::REQUIRED:
- $request = $request->secureRegistration(); // Makes the authenticator to always verify the user thoroughly on registration
- break;
- }
- return $request
- // ->allowDuplicates() // Allows the device to create multiple credentials for the same user for this app
- // ->userless() // Tells the authenticator use this credential to login instantly, instead of asking for one
- ->toCreate();
- }
- /**
- * Registers a device for further WebAuthn authentication.
- */
- public function register(WebauthnAttestedRequest $request) : Response
- {
- $request->save();
- Log::info(sprintf('User ID #%s registered a new security device', $request->user()->id)); /** @phpstan-ignore property.notFound */
- return response()->noContent();
- }
- }
|