aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/models.py13
-rw-r--r--app/utils.py4
-rw-r--r--app/views/__init__.py7
3 files changed, 18 insertions, 6 deletions
diff --git a/app/models.py b/app/models.py
index aa67c6a..142b61c 100644
--- a/app/models.py
+++ b/app/models.py
@@ -31,12 +31,13 @@ migrate = Migrate(app, db)
class UserRank(enum.Enum):
- NOT_JOINED = 0
- NEW_MEMBER = 1
- MEMBER = 2
- EDITOR = 3
- MODERATOR = 4
- ADMIN = 5
+ BANNED = 0
+ NOT_JOINED = 1
+ NEW_MEMBER = 2
+ MEMBER = 3
+ EDITOR = 4
+ MODERATOR = 5
+ ADMIN = 6
def atLeast(self, min):
return self.value >= min.value
diff --git a/app/utils.py b/app/utils.py
index 9be70d6..5fd7cae 100644
--- a/app/utils.py
+++ b/app/utils.py
@@ -62,6 +62,10 @@ def _do_login_user(user, remember_me=False):
if not user:
return False
+ if user.rank == UserRank.BANNED:
+ flash("You have been banned.", "error")
+ return False
+
user.active = True
if not user.rank.atLeast(UserRank.NEW_MEMBER):
user.rank = UserRank.NEW_MEMBER
diff --git a/app/views/__init__.py b/app/views/__init__.py
index abaacd7..8bfb178 100644
--- a/app/views/__init__.py
+++ b/app/views/__init__.py
@@ -51,3 +51,10 @@ def flatpage(path):
page = pages.get_or_404(path)
template = page.meta.get('template', 'flatpage.html')
return render_template(template, page=page)
+
+@app.before_request
+def do_something_whenever_a_request_comes_in():
+ if current_user.is_authenticated and current_user.rank == UserRank.BANNED:
+ flash("You have been banned.", "error")
+ logout_user()
+ return redirect(url_for('user.login'))