__init__.py 2.0 KB
from flask_sqlalchemy import sqlalchemy
from sqlalchemy import Column, Integer, Text, Time, ForeignKey
from app.models import db
from authlib.integrations.sqla_oauth2 import (
    OAuth2ClientMixin,
    OAuth2TokenMixin,
    OAuth2AuthorizationCodeMixin
)
from sqlalchemy.orm import relationship


class User (db.Model):
    '''
    用户信息表
    '''
    __tablename__ = "dmap_user"
    id = Column(Integer, primary_key=True)
    username = Column(Text)
   
    password = Column(Text)
    company = Column(Text)
    position = Column(Text)
    phone = Column(Text)
    email = Column(Text)
    create_time = Column(Time)
    update_time = Column(Time)
    role = Column(Text)
    #display_name = Column(Text, nullable=True)  # 昵称
    #origin = Column(Text, default="dmap")  # 用户来源,默认dmap平台用户

    def __str__(self):
        return self.username

    def get_user_id(self):
        return self.id


class OAuth2Client(db.Model, OAuth2ClientMixin):
    __tablename__ = 'dmap_oauth2_client'

    id = Column(Integer, primary_key=True)
    user_id = Column(
        Integer, ForeignKey('dmap_user.id', ondelete='CASCADE'))
    user = relationship('User')

    def get_default_redirect_uri(self):
        if self.redirect_uris:
            return self.redirect_uris[0]

    def check_redirect_uri(self, redirect_uri):
        return redirect_uri in self.redirect_uris


class OAuth2AuthorizationCode(db.Model, OAuth2AuthorizationCodeMixin):
    __tablename__ = 'dmap_oauth2_code'

    id = Column(Integer, primary_key=True)
    user_id = Column(
        Integer, ForeignKey('dmap_user.id', ondelete='CASCADE'))
    user = relationship('User')


class OAuth2Token(db.Model, OAuth2TokenMixin):
    __tablename__ = 'dmap_oauth2_token'

    id = Column(Integer, primary_key=True)
    user_id = Column(
        Integer, ForeignKey('dmap_user.id', ondelete='CASCADE'))
    # name = Column(Text)
    user = relationship('User')