aboutsummaryrefslogtreecommitdiff
path: root/app/database.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/database.py')
-rw-r--r--app/database.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/app/database.py b/app/database.py
index 532f971..c66f603 100644
--- a/app/database.py
+++ b/app/database.py
@@ -5,15 +5,24 @@ from . import db
from . import login
from flask_login import UserMixin
+from flask import redirect, url_for, flash
+
class User(db.Model, UserMixin):
id = Column(String, primary_key=True)
email = Column(String, unique=True, nullable=False)
password = Column(String, nullable=False)
pref_name = Column(String, nullable=False)
last_login = Column(DateTime, nullable=False)
- fs_uniquifier = Column(String, unique=True, nullable=False)
active = Column(Boolean, nullable=False)
+ is_admin = Column(Boolean, nullable=False, default=False)
roles = relationship('Role', secondary='roles_users',backref=backref('users', lazy='dynamic'))
+ peers = relationship('Peer', backref='owner', lazy=True)
+ networks = relationship('Network', backref="manager", lazy=True)
+
+ def __repr__(self):
+ return f"<User {email}>"
+ def __str__(self):
+ return self.pref_name
class Role(db.Model):
id = Column(String, primary_key=True)
@@ -28,15 +37,27 @@ class RolesUsers(db.Model):
@login.user_loader
def load_user(user_id):
- return User.query.filer_by(id=user_id)
+ return User.query.filter_by(id=user_id).first()
+@login.unauthorized_handler
+def unauth():
+ flash("Please log in first")
+ return redirect(url_for("auth.login"))
class Peer(db.Model):
id = Column(String, primary_key=True)
addr = Column(CIDR, nullable=False)
public_key = Column(String, nullable=False)
+ description = Column(String, nullable=False)
+ owner_id = Column(String, ForeignKey('user.id'), nullable=False)
class Network(db.Model):
id = Column(String, primary_key=True)
- subnet = Column(CIDR, nullable=False)
+ subnet = Column(CIDR, nullable=False, unique=True)
description = Column(String, nullable=True)
+ manager_id = Column(String, ForeignKey('user.id'), nullable=False)
+
+ def __repr__(self):
+ return f"{self.description} ({self.subnet})"
+ def __str__(self):
+ return f"{self.description} ({self.subnet})"