oca-server-auth/odoo-bringout-oca-server-auth-auth_jwt_demo/auth_jwt_demo/controllers/main.py
2025-08-29 15:43:06 +02:00

117 lines
4 KiB
Python

# Copyright 2021 ACSONE SA/NV
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
import json
from odoo.http import Controller, Response, request, route
class JWTTestController(Controller):
@route(
"/auth_jwt_demo/whoami",
type="http",
auth="jwt_demo",
csrf=False,
cors="*",
save_session=False,
methods=["GET", "OPTIONS"],
)
def whoami(self):
data = {}
if getattr(request, "jwt_partner_id", None):
partner = request.env["res.partner"].browse(request.jwt_partner_id)
data.update(name=partner.name, email=partner.email, uid=request.env.uid)
return Response(json.dumps(data), content_type="application/json", status=200)
@route(
"/auth_jwt_demo/whoami-public-or-jwt",
type="http",
auth="public_or_jwt_demo",
csrf=False,
cors="*",
save_session=False,
methods=["GET", "OPTIONS"],
)
def whoami_public_or_jwt(self):
data = {"uid": request.env.uid}
if getattr(request, "jwt_partner_id", None):
partner = request.env["res.partner"].browse(request.jwt_partner_id)
data.update(name=partner.name, email=partner.email)
return Response(json.dumps(data), content_type="application/json", status=200)
@route(
"/auth_jwt_demo_cookie/whoami",
type="http",
auth="jwt_demo_cookie",
csrf=False,
cors="*",
save_session=False,
methods=["GET", "OPTIONS"],
)
def whoami_cookie(self):
data = {"uid": request.env.uid}
if getattr(request, "jwt_partner_id", None):
partner = request.env["res.partner"].browse(request.jwt_partner_id)
data.update(name=partner.name, email=partner.email)
return Response(json.dumps(data), content_type="application/json", status=200)
@route(
"/auth_jwt_demo_cookie/whoami-public-or-jwt",
type="http",
auth="public_or_jwt_demo_cookie",
csrf=False,
cors="*",
save_session=False,
methods=["GET", "OPTIONS"],
)
def whoami_cookie_public_or_jwt(self):
data = {"uid": request.env.uid}
if getattr(request, "jwt_partner_id", None):
partner = request.env["res.partner"].browse(request.jwt_partner_id)
data.update(name=partner.name, email=partner.email)
return Response(json.dumps(data), content_type="application/json", status=200)
@route(
"/auth_jwt_demo/keycloak/whoami",
type="http",
auth="jwt_demo_keycloak",
csrf=False,
cors="*",
save_session=False,
methods=["GET", "OPTIONS"],
)
def whoami_keycloak(self):
"""To use with the demo_keycloak validator.
You can play with this using the browser app in tests/spa and the
identity provider in tests/keycloak.
"""
data = {}
if getattr(request, "jwt_partner_id", None):
partner = request.env["res.partner"].browse(request.jwt_partner_id)
data.update(name=partner.name, email=partner.email)
return Response(json.dumps(data), content_type="application/json", status=200)
@route(
"/auth_jwt_demo/keycloak/whoami-public-or-jwt",
type="http",
auth="public_or_jwt_demo_keycloak",
csrf=False,
cors="*",
save_session=False,
methods=["GET", "OPTIONS"],
)
def whoami_public_or_keycloak(self):
"""To use with the demo_keycloak validator.
You can play with this using the browser app in tests/spa and the
identity provider in tests/keycloak.
"""
data = {"uid": request.env.uid}
if getattr(request, "jwt_partner_id", None):
partner = request.env["res.partner"].browse(request.jwt_partner_id)
data.update(name=partner.name, email=partner.email)
else:
# public
data.update(name="Anonymous")
return Response(json.dumps(data), content_type="application/json", status=200)