Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)