async def create_role(self, ctx: Context, role: str = None): if not ctx.guild: raise OutOfServer() if not ctx.author.guild_permissions.manage_roles: raise PermissionDenied() if not role: raise InvalidArgs("I need a role name!") await ctx.guild.create_role(name=role) await ctx.send(f"Created role {role}")
def _check_view_perms(self, perms_info, request, view_args, view_kwargs): """Check if the permissions information in C{perms_info} apply""" if request.method in perms_info["methods"]: user = perms_info["user_func"](request, *view_args, **view_kwargs) targets = perms_info["target_func"](request, *view_args, **view_kwargs) missing, target = ExpedientPermission.objects.get_missing( user, perms_info["perm_names"], targets) if missing: raise PermissionDenied(missing.name, target, user)
def _check_view_perms(self, perms_info, request, view_args, view_kwargs): """Check if the permissions information in C{perms_info} apply""" if request.method in perms_info["methods"]: permittee = perms_info["permittee_func"](request, *view_args, **view_kwargs) targets = perms_info["target_func"](request, *view_args, **view_kwargs) missing, target = ExpedientPermission.objects.get_missing( permittee, perms_info["perm_names"], targets) if missing: exc = PermissionDenied(missing.name, target, permittee) logger.info("Permission Denied %s" % exc) raise exc
async def ban(self, ctx: Context, member_name: str = None): if not ctx.guild: raise OutOfServer() if not ctx.author.guild_permissions.ban_members: raise PermissionDenied() if not member_name: raise InvalidArgs("I need a name!") member = find_member(member_name, ctx.guild.members, raise_exception=True) await member.ban() await ctx.send(f"{member.mention} has been banned.")
async def invite(self, ctx: Context): if not ctx.guild: raise OutOfServer() guild: Guild = ctx.guild author: Member = ctx.author if not author.guild_permissions.create_instant_invite: raise PermissionDenied() server_invites: List[Invite] = await guild.invites() for invite in server_invites: if invite.inviter == self.bot.user and invite.max_age == 0: await ctx.send(invite.url) return channel: TextChannel = ctx.channel invite: Invite = await channel.create_invite() await ctx.send(invite.url)
def require_obj_permissions_wrapper(obj, *args, **kw): """ Wrapper for the called method that checks the permissions before calling the method. """ # check for the permission try: if self.pop_user_kw: user = kw.pop(self.user_kw) else: user = kw[self.user_kw] except KeyError: raise PermissionSignatureError(self.user_kw) missing, temp = ExpedientPermission.objects.get_missing_for_target( user, self.perm_names, obj) if missing: raise PermissionDenied(missing.name, obj, user) # All is good. Call the function return f(obj, *args, **kw)
async def all(self, ctx: Context): if not ctx.guild: raise OutOfServer() if not ctx.author.guild_permissions.mention_everyone: raise PermissionDenied() await ctx.send(ctx.guild.default_role)
def internal(self, graph, actor_id, node_id, tx): raise PermissionDenied()
def creator(self, graph, actor_id, node_id, tx): creator_id = graph.request_subgraph_at_node(-1, {'created_by': None}, node_id, tx=tx)['created_by'] if not actor_id == creator_id: raise PermissionDenied("{}: User {} is not the creator.".format(self.name, actor_id))
def wrapper(*args, **kwargs): if args[0] not in user_list: raise PermissionDenied('Permission denied.') return func(*args, **kwargs)