You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

54 lines
1.6 KiB

from odoo import models, fields, api
from .. import random_tokens
class AccessTokenBase(models.AbstractModel):
_name = "galicea_openid_connect.access_token_base"
token = fields.Char(
readonly=True,
required=True,
default=lambda _: random_tokens.alpha_numeric(64),
index=True,
)
client_id = fields.Many2one(
"galicea_openid_connect.client",
readonly=True,
index=True,
required=True,
ondelete="cascade",
)
class AccessToken(models.Model):
_inherit = "galicea_openid_connect.access_token_base"
_name = "galicea_openid_connect.access_token"
_description = "Acccess token representing user-client pair"
user_id = fields.Many2one(
"res.users", required=True, readonly=True, index=True, ondelete="cascade"
)
@api.model
def retrieve_or_create(self, user_id, client_id):
existing_tokens = self.search(
[("user_id", "=", user_id), ("client_id", "=", client_id),]
)
if existing_tokens:
return existing_tokens[0]
else:
return self.create({"user_id": user_id, "client_id": client_id})
class ClientAccessToken(models.Model):
_inherit = "galicea_openid_connect.access_token_base"
_name = "galicea_openid_connect.client_access_token"
_description = "Access token representing client credentials"
@api.model
def retrieve_or_create(self, client_id):
existing_tokens = self.search([("client_id", "=", client_id),])
if existing_tokens:
return existing_tokens[0]
else:
return self.create({"client_id": client_id})