diff options
| author | citrons <citrons> | 2021-08-06 22:54:59 +0000 | 
|---|---|---|
| committer | citrons <citrons> | 2021-08-06 22:54:59 +0000 | 
| commit | a4d99164de42603b83b2a7ac6e594e5925108a32 (patch) | |
| tree | 066f4be808a7062a8d459fe76b7b9589f7025490 | |
| parent | bd7a53ba3daf8853707d6df511cc1e31d2a850a3 (diff) | |
logged out users are considered to have no permissions unless in a specific instance login is not required in which case they are treated as having the role "other".
| -rw-r--r-- | apioforum/roles.py | 5 | ||||
| -rw-r--r-- | apioforum/templates/view_forum.html | 2 | ||||
| -rw-r--r-- | apioforum/thread.py | 2 | 
3 files changed, 5 insertions, 4 deletions
diff --git a/apioforum/roles.py b/apioforum/roles.py index ae47e31..1e9b206 100644 --- a/apioforum/roles.py +++ b/apioforum/roles.py @@ -72,8 +72,9 @@ def get_forum_roles(forum_id):              """,(a['id'],)).fetchall()      return set(r['role'] for r in configs) -def has_permission(forum_id, user, permission): -    role = get_user_role(forum_id, user) if user != None else "other" +def has_permission(forum_id, user, permission, login_required=True): +    if user == None and login_required: return False +    role = get_user_role(forum_id, user) if user else "other"      if role == "bureaucrat": return True      config = get_role_config(forum_id, role)      return config[permission] diff --git a/apioforum/templates/view_forum.html b/apioforum/templates/view_forum.html index ff1af9b..a4ffac6 100644 --- a/apioforum/templates/view_forum.html +++ b/apioforum/templates/view_forum.html @@ -76,7 +76,7 @@  please log in to create a new thread  {% endif %} -{% if has_permission(forum.id, g.user, "p_view_threads") %} +{% if has_permission(forum.id, g.user, "p_view_threads", login_required=False) %}  <div class="thread-list">  	{%for thread in threads%}  		<div class="listing"> diff --git a/apioforum/thread.py b/apioforum/thread.py index 0b0804e..a3a122a 100644 --- a/apioforum/thread.py +++ b/apioforum/thread.py @@ -21,7 +21,7 @@ def view_thread(thread_id):      thread = db.execute("SELECT * FROM threads WHERE id = ?;",(thread_id,)).fetchone()      if thread is None:          abort(404) -    if not has_permission(thread['forum'], g.user, "p_view_threads"): +    if not has_permission(thread['forum'], g.user, "p_view_threads", False):          abort(403)      posts = db.execute("""          SELECT * FROM posts  | 
