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.
40 lines
1.1 KiB
40 lines
1.1 KiB
from odoo import models, fields, api
|
|
from .. import random_tokens
|
|
|
|
try:
|
|
from jwcrypto import jwk
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
class ConfigParameter(models.Model):
|
|
_inherit = "ir.config_parameter"
|
|
|
|
@api.model
|
|
def openid_init_keys(self):
|
|
keys = {
|
|
"galicea_openid_connect.authorization_code_jwk": lambda: jwk.JWK.generate(
|
|
kty="oct",
|
|
size=256,
|
|
kid=random_tokens.alpha_numeric(16),
|
|
use="sig",
|
|
alg="HS256",
|
|
).export(),
|
|
"galicea_openid_connect.id_token_jwk": lambda: jwk.JWK.generate(
|
|
kty="RSA",
|
|
size=2054,
|
|
kid=random_tokens.alpha_numeric(16),
|
|
use="sig",
|
|
alg="RS256",
|
|
).export(),
|
|
}
|
|
|
|
for key, gen in iter(keys.items()):
|
|
if not self.search([("key", "=", key)]):
|
|
self.create(
|
|
{
|
|
"key": key,
|
|
"value": gen(),
|
|
"group_ids": [(4, self.env.ref("base.group_erp_manager").id)],
|
|
}
|
|
)
|