diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index 27eed3642..8b8be5b18 100755 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -644,7 +644,8 @@ class ApiController(RedditController, OAuth2ResourceController): if type in ("moderator", "moderator_invite"): if not c.user_is_admin: - if type == "moderator" and not c.site.can_demod(c.user, target): + if type == "moderator" and ( + c.user == target or not c.site.can_demod(c.user, target)): abort(403, 'forbidden') if (type == "moderator_invite" and not c.site.is_unlimited_moderator(c.user)): diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index 00fab81c9..8adfa02d0 100755 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -3019,7 +3019,7 @@ class ModList(UserList): elif c.user_is_admin: return True elif row_type == self.type: - return c.site.can_demod(c.user, user) + return c.user != user and c.site.can_demod(c.user, user) elif row_type == self.invite_type: return c.site.is_unlimited_moderator(c.user) else: @@ -3028,7 +3028,7 @@ class ModList(UserList): def user_row(self, row_type, user, editable=True): perms = ModeratorPermissions( user, row_type, self.perms_by_type[row_type].get(user._id), - editable=editable and self.moderator_editable(user, row_type)) + editable=editable) return UserTableItem(user, row_type, self.cells, self.container_name, editable, self.remove_action, rel=perms) diff --git a/r2/r2/templates/usertableitem.html b/r2/r2/templates/usertableitem.html index ab1fe6029..4bd9752ab 100644 --- a/r2/r2/templates/usertableitem.html +++ b/r2/r2/templates/usertableitem.html @@ -58,7 +58,9 @@ id = thing.user._fullname, container = thing.container_name))} %else: - ${_("can't remove")} + %if c.user != thing.user: + ${_("can't remove")} + %endif %endif %elif thing.name == "note":