Skip to content

Authentification ​

Creopse s'appuie sur Laravel Sanctum pour l'authentification, avec deux mécanismes selon le type de client :

  • Session/cookie pour l'interface d'administration (SPA Inertia) — c'est le mode par défaut pour toute requête « navigateur ».
  • Token Bearer pour les clients externes (application mobile, intégration tierce) consommant l'API publique.

Toutes les routes d'authentification vivent sous /auth/* ; les autres routes protégées de l'API utilisent le middleware auth:sanctum, qui accepte indifféremment l'un ou l'autre mécanisme.

Choisir le mode ​

Le mode est déterminé automatiquement à la connexion/l'inscription, selon la présence de l'en-tête X-Client-Type: mobile (ou des paramètres device_name/device_id) sur la requête :

  • Absent → mode session : POST /auth/login régénère la session côté serveur, le cookie fait foi pour les requêtes suivantes.
  • Présent → mode token : un token Sanctum est émis (ability mobile) et renvoyé dans la réponse sous token, à envoyer ensuite via Authorization: Bearer <token>. Une reconnexion avec le même device_id révoque l'ancien token.

TIP

Pour que le cookie de session fonctionne en cross-origin (SPA sur un domaine, API sur un autre), le domaine doit figurer dans SANCTUM_STATEFUL_DOMAINS (config/sanctum.php) — par défaut localhost/127.0.0.1 uniquement. Voir aussi CORS.

Endpoints ​

MéthodeRouteDescriptionAccès
POST/auth/loginConnexion par email/identifiant + mot de passe.Public
POST/auth/registerInscription. Le tout premier utilisateur créé reçoit automatiquement le rôle super-admin.Public
POST/auth/googleConnexion via un ID token Google.Public
POST/auth/appleConnexion via un identity_token Apple.Public
POST/auth/phoneEnvoi d'un code de vérification par SMS.Public
POST/auth/phone/verifyValidation du code envoyé, connexion.Public
POST/auth/send-password-linkEnvoi d'un lien de réinitialisation de mot de passe.Public
POST/auth/reset-passwordRéinitialisation via le lien reçu.Public
POST/auth/edit-passwordChangement de mot de passe (utilisateur connecté).Authentifié
POST/auth/edit-emailChangement d'email — réinitialise la vérification.Authentifié
POST/auth/edit-usernameChangement d'identifiant.Authentifié
GET/auth/send-verification-emailRenvoi de l'email de vérification.Authentifié
GET/auth/verify-email/{id}/{hash}Validation du lien de vérification (URL signée).Authentifié
GET/auth/logout/{guard?}Déconnexion (révoque le token en mode mobile, invalide la session sinon).Authentifié
GET/auth/disable-accountDésactive le compte courant (account_status), sans le supprimer.Authentifié
GET/auth/tokens/{name}Liste les tokens actifs de l'utilisateur par nom.Authentifié
POST/auth/tokens/revoke/{id}Révoque un token précis.Authentifié

Connexion via un fournisseur tiers ​

FournisseurMécanisme
GoogleVérifie l'ID token via le SDK Google\Client (GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET/GOOGLE_REDIRECT dans config/services.php).
AppleVérifie le JWT identity_token reçu contre les clés publiques Apple (JWKS).
TéléphoneCode de vérification envoyé via Twilio Verify (TWILIO_SID/TWILIO_TOKEN/TWILIO_SERVICE) ou un fournisseur SMS alternatif configuré.

Dans les trois cas, un utilisateur est créé automatiquement s'il n'existe pas encore (auth_type renseigné en conséquence), puis connecté selon le mode déterminé plus haut.

WARNING

laravel/socialite figure parmi les dépendances du package, mais n'est pas utilisé par ces intégrations — l'authentification Google/Apple/téléphone est implémentée directement, sans passer par Socialite.

Sessions et appareils actifs ​

MéthodeRouteDescription
GET/sessionsListe unifiée des sessions actives : sessions web et tokens Sanctum (mobile), avec l'appareil courant marqué.
DELETE/sessions/{type}/{id}Révoque une session ou un token précis (impossible pour la session courante).
DELETE/sessions/revoke-allRévoque toutes les autres sessions/tokens de l'utilisateur.

Toutes ces routes nécessitent auth:sanctum.

Rôles et permissions ​

La gestion des accès s'appuie sur spatie/laravel-permission. Quatre guards existent (web, admin, api, mobile) ; trois rôles par défaut sont fournis (super-admin, admin, user), chacun avec un jeu de permissions par défaut. Voir Gestion d'accès pour l'équivalent depuis l'interface d'administration.

Les endpoints GET /roles et GET /permissions sont publics ; la création/modification/suppression de rôles et permissions nécessite auth:sanctum. Certaines actions de gestion des utilisateurs (POST /users, PUT /users/{user}, DELETE /users/{user}...) exigent en plus une permission nommée précise (action-add-user, action-edit-user, action-delete-user...).

Configuration ​

FichierContenu
config/auth.phpGuards (web, admin), providers, modèle utilisateur.
config/sanctum.phpDomaines stateful (SANCTUM_STATEFUL_DOMAINS), guards vérifiés (web, admin), expiration des tokens.
config/permission.phpConfiguration de spatie/laravel-permission (tables, cache).