diff --git a/geomagio/webservice/database.py b/geomagio/webservice/database.py index c8b84954244555bfb0b8e10b7d393b5af2677008..4484cb0bff52e5195f91cbae9ec338889420a2ca 100644 --- a/geomagio/webservice/database.py +++ b/geomagio/webservice/database.py @@ -1,8 +1,5 @@ -from __future__ import unicode_literals -from builtins import str import flask -import flask_login import flask_migrate import flask_sqlalchemy @@ -15,20 +12,3 @@ def init_app(app: flask.Flask): db.init_app(app) migrate = flask_migrate.Migrate(app, db) - -class User(db.Model, flask_login.UserMixin): - id = db.Column(db.Integer, primary_key=True) - openid = db.Column(db.Text, unique=True, nullable=False) - email = db.Column(db.Text, unique=True, nullable=False) - groups = db.Column(db.Text) - - def get_id(self) -> str: - return str(self.openid) - - def to_dict(self): - return { - 'id': self.id, - 'openid': self.openid, - 'email': self.email, - 'groups': self.groups - } diff --git a/geomagio/webservice/login.py b/geomagio/webservice/login.py index a5a78e756c347e6cb92a776f8d0549d1c95e8aef..9f7c94b2471fb570ccb8f0e684eab69dae60e443 100644 --- a/geomagio/webservice/login.py +++ b/geomagio/webservice/login.py @@ -6,7 +6,7 @@ import os from authlib.integrations.flask_client import OAuth from functools import wraps -from .database import db, User +from .database import db # Blueprint for auth routes @@ -39,6 +39,28 @@ def init_app(app: flask.Flask): app.register_blueprint(blueprint) +class User(db.Model, flask_login.UserMixin): + """User database model. + """ + __tablename__ = 'user' + id = db.Column(db.Integer, primary_key=True) + openid = db.Column(db.Text, unique=True, nullable=False) + email = db.Column(db.Text, unique=True, nullable=False) + is_active = db.Column(db.Boolean, default=False) + groups = db.Column(db.Text) + + def get_id(self) -> str: + return str(self.openid) + + def to_dict(self): + return { + 'id': self.id, + 'openid': self.openid, + 'email': self.email, + 'groups': self.groups + } + + @login_manager.user_loader def _load_user(user_id): return User.query.filter_by(openid=user_id).first()