mirror of
https://github.com/bringout/oca-server-auth.git
synced 2026-04-18 14:12:10 +02:00
117 lines
4 KiB
Python
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)
|