39 lines
985 B
Python
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],
|
|
)
|