You've already forked hotpocket
This commit is contained in:
93
services/backend/hotpocket_backend/secrets/base.py
Normal file
93
services/backend/hotpocket_backend/secrets/base.py
Normal file
@@ -0,0 +1,93 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
from keep_it_secret import AbstractField, LiteralField, Secrets, SecretsField
|
||||
|
||||
|
||||
class DatabaseSecrets(Secrets):
|
||||
payload: str = AbstractField.new()
|
||||
|
||||
def get_decoded_payload(self) -> dict:
|
||||
if hasattr(self, '_decoded_payload') is False:
|
||||
self._decoded_payload = json.loads(self.payload)
|
||||
|
||||
return self._decoded_payload
|
||||
|
||||
@property
|
||||
def engine(self) -> str:
|
||||
return self.get_decoded_payload()['engine']
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self.get_decoded_payload()['name']
|
||||
|
||||
@property
|
||||
def user(self) -> str | None:
|
||||
return self.get_decoded_payload().get('user', None)
|
||||
|
||||
@property
|
||||
def password(self) -> str | None:
|
||||
return self.get_decoded_payload().get('password', None)
|
||||
|
||||
@property
|
||||
def host(self) -> str | None:
|
||||
return self.get_decoded_payload().get('host', None)
|
||||
|
||||
@property
|
||||
def port(self) -> str | None:
|
||||
return self.get_decoded_payload().get('port', None)
|
||||
|
||||
|
||||
class OIDCSecrets(Secrets):
|
||||
DEFAULT_SCOPE = ['roles']
|
||||
|
||||
payload: str | None = LiteralField.new(None)
|
||||
|
||||
def get_decoded_payload(self) -> dict:
|
||||
if hasattr(self, '_decoded_payload') is False:
|
||||
if self.payload is None:
|
||||
self._decoded_payload = dict()
|
||||
else:
|
||||
self._decoded_payload = json.loads(self.payload)
|
||||
|
||||
return self._decoded_payload
|
||||
|
||||
@property
|
||||
def is_enabled(self) -> bool:
|
||||
return self.payload is not None
|
||||
|
||||
@property
|
||||
def endpoint(self) -> str | None:
|
||||
return self.get_decoded_payload().get('endpoint', None)
|
||||
|
||||
@property
|
||||
def key(self) -> str | None:
|
||||
return self.get_decoded_payload().get('key', None)
|
||||
|
||||
@property
|
||||
def secret(self) -> str | None:
|
||||
return self.get_decoded_payload().get('secret', None)
|
||||
|
||||
@property
|
||||
def scope(self) -> list[str]:
|
||||
return self.get_decoded_payload().get('scope', [*self.DEFAULT_SCOPE])
|
||||
|
||||
@property
|
||||
def display_name(self) -> str:
|
||||
return self.get_decoded_payload().get('display_name', 'OIDC')
|
||||
|
||||
|
||||
class CelerySecrets(Secrets):
|
||||
broker_url: str = AbstractField.new()
|
||||
result_backend: str = AbstractField.new()
|
||||
|
||||
|
||||
class BaseSecrets(Secrets):
|
||||
SECRET_KEY: str = AbstractField.new()
|
||||
|
||||
DATABASE: DatabaseSecrets = SecretsField.new(DatabaseSecrets)
|
||||
CELERY: CelerySecrets = SecretsField.new(CelerySecrets)
|
||||
|
||||
OIDC: OIDCSecrets = SecretsField.new(OIDCSecrets)
|
||||
Reference in New Issue
Block a user