diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models.py | 13 | ||||
-rw-r--r-- | app/utils.py | 4 | ||||
-rw-r--r-- | app/views/__init__.py | 7 |
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')) |