Add moderator permission for access (bans, contributors, etc.).

This commit is contained in:
Logan Hanks
2013-01-30 16:49:05 -08:00
parent 5106508ed6
commit 2619be4244
3 changed files with 27 additions and 20 deletions

View File

@@ -594,7 +594,8 @@ class ApiController(RedditController, OAuth2ResourceController):
# for the privilege change to succeed.
victim = iuser or nuser
if (not c.user_is_admin
and (type in self._sr_friend_types and not container.is_moderator(c.user))):
and (type in self._sr_friend_types
and not container.is_moderator_with_perms(c.user, 'access'))):
abort(403, 'forbidden')
if (type == 'moderator' and not
(c.user_is_admin or container.can_demod(c.user, victim))):
@@ -688,7 +689,7 @@ class ApiController(RedditController, OAuth2ResourceController):
# for the privilege change to succeed.
if (not c.user_is_admin
and type in self._sr_friend_types
and (not container.is_moderator(c.user)
and (not container.is_moderator_with_perms(c.user, 'access')
or c.user._spam)):
if c.user._spam:
return

View File

@@ -609,19 +609,23 @@ class FrontController(RedditController, OAuth2ResourceController):
pane.append(CreateSubreddit(site = c.site))
elif location == 'moderators':
pane = ModList(editable=is_unlimited_moderator)
elif is_moderator and location == 'banned':
pane = BannedList(editable = is_moderator)
elif is_moderator and location == 'wikibanned':
pane = WikiBannedList(editable = is_moderator)
elif is_moderator and location == 'wikicontributors':
pane = WikiMayContributeList(editable = is_moderator)
elif is_moderator_with_perms('access') and location == 'banned':
pane = BannedList(editable=is_moderator_with_perms('access'))
elif is_moderator_with_perms('access') and location == 'wikibanned':
pane = WikiBannedList(editable=is_moderator_with_perms('access'))
elif (is_moderator_with_perms('access')
and location == 'wikicontributors'):
pane = WikiMayContributeList(
editable=is_moderator_with_perms('access'))
elif (location == 'contributors' and
# On public reddits, only moderators can see the whitelist.
# On private reddits, all contributors can see each other.
(c.site.type != 'public' or
(c.user_is_loggedin and
(c.site.is_moderator(c.user) or c.user_is_admin)))):
pane = ContributorList(editable = is_moderator)
(c.site.is_moderator_with_perms(c.user, 'access')
or c.user_is_admin)))):
pane = ContributorList(
editable=is_moderator_with_perms('access'))
elif (location == 'stylesheet'
and c.site.can_change_stylesheet(c.user)
and not g.css_killswitch):

View File

@@ -256,16 +256,17 @@ class Reddit(Templated):
css_class="moderator-mail"))
if is_single_subreddit:
buttons.append(NamedButton("moderators",
css_class="reddit-moderators"))
if c.site.is_moderator_with_perms(c.user, 'access'):
buttons.append(NamedButton("moderators",
css_class="reddit-moderators"))
if c.site.type != "public":
buttons.append(NamedButton("contributors",
css_class="reddit-contributors"))
else:
buttons.append(NavButton(menu.contributors,
"contributors",
css_class="reddit-contributors"))
if c.site.type != "public":
buttons.append(NamedButton("contributors",
css_class="reddit-contributors"))
else:
buttons.append(NavButton(menu.contributors,
"contributors",
css_class="reddit-contributors"))
buttons.append(NamedButton("traffic", css_class="reddit-traffic"))
@@ -275,7 +276,8 @@ class Reddit(Templated):
NamedButton("spam", css_class="reddit-spam")]
if is_single_subreddit:
buttons.append(NamedButton("banned", css_class="reddit-ban"))
if c.site.is_moderator_with_perms(c.user, 'access'):
buttons.append(NamedButton("banned", css_class="reddit-ban"))
if c.site.is_moderator_with_perms(c.user, 'flair'):
buttons.append(NamedButton("flair", css_class="reddit-flair"))