sso/sso/models.py

39 lines
985 B
Python

from authlib.integrations.sqla_oauth2 import (
OAuth2ClientMixin,
OAuth2TokenMixin,
OAuth2AuthorizationCodeMixin,
)
from sso.extensions import db
from sso.directory import LDAPUserProxy
class Client(db.Model, OAuth2ClientMixin):
__tablename__ = "oauth2_client"
id = db.Column(db.Integer, primary_key=True)
class AuthorizationCode(db.Model, OAuth2AuthorizationCodeMixin):
__tablename__ = "oauth2_code"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.String(40), nullable=False)
class Token(db.Model, OAuth2TokenMixin):
__tablename__ = "oauth2_token"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.String(40), nullable=False)
@property
def user(self):
return LDAPUserProxy(self.user_id)
client_id = db.Column(db.String(48))
client = db.relationship(
"Client",
primaryjoin="Token.client_id == Client.client_id",
foreign_keys=[client_id],
)