Étape 1 sur 3 · environ 20 min

Commencez par une route qui indique l’utilisateur courant

Avant de lire des notes, créez une petite route indépendante. Elle montre simplement l’utilisateur que l’environnement Odoo associe à la requête.

1. Ajoutez une route publique, sans toucher aux notes

Créez ce nouveau contrôleur. La route ne lit aucun modèle du journal et ne modifie rien : elle répond seulement avec le nom de l’utilisateur courant.

custom_addons/training_hello/controllers/who_am_i.py
from odoo import http
from odoo.http import request


class TrainingWhoAmIController(http.Controller):
    @http.route("/training/who-am-i", type="http", auth="public", methods=["GET"])
    def who_am_i(self):
        user = request.env.user
        return request.make_json_response({
            "user_name": user.name,
        })

auth="public" rend la route accessible sans connexion. Quand personne n’est connecté, request.env.user est l’utilisateur public d’Odoo. Quand vous êtes connecté, il devient votre compte Odoo.

2. Importez le nouveau contrôleur

Dans le package des contrôleurs, ajoutez cette ligne avec les imports déjà présents :

custom_addons/training_hello/controllers/__init__.py
from . import who_am_i

Ne modifiez ni training_notes.py, ni notes_api.py. Cette route est un petit repère séparé pour l’exercice.

3. Observez les deux réponses

  1. Action qui redémarre Odoo : redémarrez le serveur local, car vous avez ajouté du code Python.
  2. Dans une fenêtre de navigation privée, ouvrez http://127.0.0.1:8069/training/who-am-i. La réponse JSON contient le nom de l’utilisateur public.
  3. Connectez-vous ensuite à Odoo comme Alex, puis ouvrez exactement la même URL. La réponse contient maintenant le nom d’Alex.
RequêteValeur de request.env.user
Sans session OdooL’utilisateur public.
Avec la session d’AlexLe compte Alex connecté.

4. Optionnel — voyez l’utilisateur de la clé Bearer

Si votre espace d’exercice permet de créer une clé API, ajoutez cette seconde route au même fichier. Elle ne touche toujours pas aux notes : elle montre seulement le compte associé à la clé Bearer.

custom_addons/training_hello/controllers/who_am_i.py · seconde route
    @http.route("/who/am/i/bearer", type="http", auth="bearer", methods=["GET"])
    def who_am_i_bearer(self):
        user = request.env.user
        return request.make_json_response({
            "user_name": user.name,
        })

Redémarrez Odoo après cette modification. Avec les variables temporaires déjà préparées au Jour 4, appelez la route ainsi :

Terminal Bash ou zsh · lecture avec la clé d’Alex
curl \
  --header "Authorization: Bearer $TRAINING_API_KEY_ALEX" \
  http://127.0.0.1:8069/who/am/i/bearer

La réponse JSON contient le nom d’Alex : Odoo a retrouvé le propriétaire de la clé et l’a placé dans request.env.user. Si vous ne disposez pas de clé API dans cet environnement, sautez cette partie ; la suite du cours reste identique.

5. Gardez ces routes comme démonstrations

Une route publique n’accorde aucun droit sur training.note. L’utilisateur public ne reçoit pas l’ACL du journal. N’ajoutez pas sudo() pour lire des notes depuis cette route : elle sert uniquement à voir quel utilisateur Odoo traite la requête.

Point de contrôle — identifiez l’utilisateur de la requête

La même URL répond avec l’utilisateur public sans session, puis avec votre compte après connexion. Vous pouvez maintenant utiliser l’utilisateur courant côté serveur, sans demander son identité au navigateur.