From 401a971c6a91f780fd3461c22c4e6b6e586387cf Mon Sep 17 00:00:00 2001 From: nathanhilbert Date: Sun, 9 Aug 2015 10:28:05 -0500 Subject: [PATCH] fix permissions for a regular user relates to #236 --- openspending/auth/forum.py | 43 ++++++++++++++----- .../forum/forum/category_layout.html | 8 ---- openspending/templates/forum/forum/forum.html | 6 --- .../templates/forum/forum/report_post.html | 6 +-- 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/openspending/auth/forum.py b/openspending/auth/forum.py index 0cd8a227..b2d9866e 100644 --- a/openspending/auth/forum.py +++ b/openspending/auth/forum.py @@ -31,6 +31,14 @@ def decorated(*args, **kwargs): return f(*args, **kwargs) return decorated +def authenticated_required(f): + @wraps(f) + def decorated(*args, **kwargs): + if not is_authenticated(current_user): + abort(403) + else: + return f(*args, **kwargs) + return decorated def check_perm(user, perm, forum, post_user_id=None): """Checks if the `user` has a specified `perm` in the `forum` @@ -105,36 +113,49 @@ def can_edit_post(user, post): if topic.locked or topic.forum.locked: return False - return check_perm(user=user, perm='editpost', forum=post.topic.forum, - post_user_id=post.user_id) + return is_authenticated(user) and post.user_id==user.id + + # return check_perm(user=user, perm='editpost', forum=post.topic.forum, + # post_user_id=post.user_id) def can_delete_post(user, post): - """Check if the post can be deleted by the user.""" - return check_perm(user=user, perm='deletepost', forum=post.topic.forum, - post_user_id=post.user_id) + """Moderators and owners of the post can delete them""" + if can_moderate(user, topic.forum): + return True + if topic.locked or topic.forum.locked: + return False + return is_authenticated(user) and post.user_id==user.id + # return check_perm(user=user, perm='deletepost', forum=post.topic.forum, + # post_user_id=post.user_id) def can_delete_topic(user, topic): - """Check if the topic can be deleted by the user.""" - return check_perm(user=user, perm='deletetopic', forum=topic.forum, - post_user_id=topic.user_id) + """Only moderators can delete topics""" + if can_moderate(user, topic.forum): + return True + + # return check_perm(user=user, perm='deletetopic', forum=topic.forum, + # post_user_id=topic.user_id) def can_post_reply(user, topic): - """Check if the user is allowed to post in the forum.""" + """If user is authenticated and topic is not locked""" if can_moderate(user, topic.forum): return True if topic.locked or topic.forum.locked: return False - return check_perm(user=user, perm='postreply', forum=topic.forum) + return is_authenticated(user) and not topic.locked + + #return check_perm(user=user, perm='postreply', forum=topic.forum) def can_post_topic(user, forum): """Checks if the user is allowed to create a new topic in the forum.""" - return check_perm(user=user, perm='posttopic', forum=forum) + return is_authenticated(user) and not forum.locked + # return check_perm(user=user, perm='posttopic', forum=forum) # Moderator permission checks diff --git a/openspending/templates/forum/forum/category_layout.html b/openspending/templates/forum/forum/category_layout.html index 54cb6f7d..2d151617 100644 --- a/openspending/templates/forum/forum/category_layout.html +++ b/openspending/templates/forum/forum/category_layout.html @@ -55,14 +55,6 @@ {% autoescape false %} {{ forum.description|markup }} {% endautoescape %} - {% if forum.show_moderators %} -
- Moderators: - {% for moderator in forum.moderators %} - {% if not loop.last %}, {% endif %} - {% endfor %} -
- {% endif %} diff --git a/openspending/templates/forum/forum/forum.html b/openspending/templates/forum/forum/forum.html index 3c3d7439..b252c2f6 100644 --- a/openspending/templates/forum/forum/forum.html +++ b/openspending/templates/forum/forum/forum.html @@ -17,12 +17,6 @@ {% if current_user|post_topic(forum) %}
-
- - -
{% if forum.locked %} diff --git a/openspending/templates/forum/forum/report_post.html b/openspending/templates/forum/forum/report_post.html index 3ae9b560..3dd79eab 100644 --- a/openspending/templates/forum/forum/report_post.html +++ b/openspending/templates/forum/forum/report_post.html @@ -11,11 +11,11 @@
{{ form.hidden_tag() }} -

{% trans %}Report Post{% endtrans %}

+

Report Post

{{ render_field(form.reason) }} - - {% trans %}Close{% endtrans %} + + Close
{% endblock %}