def addRole(self, name): ''' Add a new role to the auth system. Args: name (str): The role name. Returns: Role: The newly created role. Raises: s_exc.DupRoleName: If the role already exists. ''' with self.lenv.begin(write=True) as xact: if self.roles.get(name) is not None: raise s_exc.DupRoleName(name=name) if self.users.get(name) is not None: raise s_exc.DupRoleName(name=name) # Role() does rdef validation role = Role(self, name, {}) self.roles[name] = role renc = name.encode('utf8') role.info['vers'] = authver byts = s_msgpack.en(role.info) xact.put(renc, byts, db=self._db_roles) return role
async def addRole(self, name): if self.rolesbyname.get(name) is not None: raise s_exc.DupRoleName(name=name) iden = s_common.guid() await self._push('role:add', iden, name) return self.role(iden)
async def _addRole(self, iden, name): if self.rolesbyname.get(name) is not None: raise s_exc.DupRoleName(name=name) node = await self.node.open(('roles', iden)) await node.set(name) return await self._addRoleNode(node)
async def setRoleName(self, iden, name): if self.rolesbyname.get(name) is not None: raise s_exc.DupRoleName(name=name) role = await self.reqRole(iden) self.rolesbyname.pop(role.name, None) self.rolesbyname[name] = role role.name = name await role.node.set(name)
async def addRole(self, name): if self.rolesbyname.get(name) is not None: raise s_exc.DupRoleName(name=name) iden = s_common.guid() path = self.node.full + ('roles', iden) # directly set the nodes value and let events prop await self.node.hive.set(path, name) node = await self.node.hive.open(path) return await self._addRoleNode(node)
async def setRoleName(self, iden, name): if not isinstance(name, str): raise s_exc.BadArg(mesg='setRoleName() name must be a string') role = self.rolesbyname.get(name) if role is not None: if role.iden == iden: return raise s_exc.DupRoleName(name=name) role = await self.reqRole(iden) self.rolesbyname.pop(role.name, None) self.rolesbyname[name] = role role.name = name await role.node.set(name)