diff --git a/files/classes/user.py b/files/classes/user.py index 7c1df12cd..793eae0d3 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -270,6 +270,14 @@ class User(Base): def over_18(self): return session.get('over_18', False) + @property + @lazy + def allowed_in_chat(self): + if self.admin_level: return True + if self.truescore >= TRUESCORE_CHAT_MINIMUM: return True + if self.email_verified: return True + return False + @property @lazy def num_of_bought_awards(self): diff --git a/files/routes/chat.py b/files/routes/chat.py index c3ad1449b..4cda46049 100644 --- a/files/routes/chat.py +++ b/files/routes/chat.py @@ -47,13 +47,16 @@ def is_not_permabanned_socketio(f): wrapper.__name__ = f.__name__ return wrapper +CHAT_ERROR_MESSAGE = f"To prevent spam, you'll need either {TRUESCORE_CHAT_MINIMUM} truescore (this is {TRUESCORE_CHAT_MINIMUM} votes, either up or down, on any threads or comments you've made) OR simply verify your email in order to access chat. Sorry! I love you 💖" + @app.get("/chat") @limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400) @limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400, key_func=get_ID) @is_not_permabanned def chat(v): - if not v.admin_level and TRUESCORE_CHAT_MINIMUM and v.truescore < TRUESCORE_CHAT_MINIMUM: - abort(403, f"Need at least {TRUESCORE_CHAT_MINIMUM} truescore for access to chat!") + if not v.allowed_in_chat: + abort(403, CHAT_ERROR_MESSAGE) + orgy = get_orgy() displayed_messages = {k: val for k, val in messages.items() if val["user_id"] not in v.userblocks} @@ -68,8 +71,8 @@ def chat(v): @limiter.limit(DEFAULT_RATELIMIT, deduct_when=lambda response: response.status_code < 400, key_func=get_ID) @is_not_permabanned def old_chat(v): - if not v.admin_level and TRUESCORE_CHAT_MINIMUM and v.truescore < TRUESCORE_CHAT_MINIMUM: - abort(403, f"Need at least {TRUESCORE_CHAT_MINIMUM} truescore for access to chat!") + if not v.allowed_in_chat: + abort(403, CHAT_ERROR_MESSAGE) displayed_messages = {k: val for k, val in messages.items() if val["user_id"] not in v.userblocks} @@ -85,7 +88,7 @@ def speak(data, v): f.write(data['file']) image = process_image(name, v) - if TRUESCORE_CHAT_MINIMUM and v.truescore < TRUESCORE_CHAT_MINIMUM: + if not v.allowed_in_chat: return '', 403 global messages