Aller au contenu

Authentification par le site etu

Les membres du serveur Discord peuvent (et doivent !) s'authentifier au moyen de l'API du site étu. Cette authentification permet automatiquement :

  • d'attribuer le pseudo utilisé sur le serveur ; ce dernier est de la forme <prénom> <nom> - <nom de la branche>.
  • d'attribuer les rôles du membre :
    • Étudiant/Ancien étudiant/Enseignant
    • S'il est étudiant, le(s) rôle(s) de sa ou ses formations
    • S'il est étudiant, ses rôles d'UE.

Pseudo Discord

Comme un pseudo Discord ne peut faire plus de 32 caractères, la sélection de celui-ci a quelques subtilités. Pour plus de détails, voir [UserService.get_server_nickname][etuutt_bot.services.user.UserService.get_server_nickname]

Déroulement de l'authentification

Pour l'authentification, plusieurs acteurs sont nécessaires :

  • l'API du site étu ; celle-ci fonctionne indépendamment du bot (tant que le site tourne)
  • le serveur du bot ; celui-ci est géré par le même processus que le bot
  • le bot
  • Et bien sûr, l'utilisateur

Pour accomplir l'opération, l'utilisateur va se rendre sur un formulaire fourni par le serveur du bot. Le serveur va ensuite interagir avec l'API du site étu pour récupérer les informations utilisateur puis utiliser les services du bot pour attribuer le pseudo et les rôles.

sequenceDiagram
    actor User as Membre du serveur
    participant bot
    participant server
    participant api as API du site étu

    User->>server: GET /
    server->>api: Redirect /oauth/authorize
    alt Si l'utilisateur n'est pas encore connecté
        api->>User: Formulaire de connexion
        User-->>api: POST /user
    end
    api-->>server: Code d'autorisation
    server->>api: POST /oauth/token
    api-->>server: token d'accès
    server->>User: Formulaire de saisie <br>des infos sur le compte Discord
    User-->>server: POST /role
    server->>api: GET /public/user/account
    api-->>server: Informations sur l'utilisateur
    server->>bot: Transmission des informations
    bot->>bot: Attribution des rôles
    bot->>server: Résultat de l'attribution
    server->>User: Affichage de la page de réussite ou d'une page d'erreur