Exemple #1
0
async def delete_roles(domain_id: str, roles):
    roles = list(set(roles))
    for role in roles:
        validator.check_role(role)
    for domain in builtin.DOMAINS:
        if domain['_id'] == domain_id:
            raise error.BuiltinDomainError(domain_id)
    user_coll = db.coll('domain.user')
    await user_coll.update_many(
        {
            'domain_id': domain_id,
            'role': {
                '$in': list(roles)
            }
        }, {'$unset': {
            'role': ''
        }})
    coll = db.coll('domain')
    return await coll.find_one_and_update(filter={'_id': domain_id},
                                          update={
                                              '$unset':
                                              dict(('roles.{0}'.format(role),
                                                    '') for role in roles)
                                          },
                                          return_document=ReturnDocument.AFTER)
Exemple #2
0
async def set_role(domain_id: str, role: str, perm: int):
    validator.check_role(role)
    for domain in builtin.DOMAINS:
        if domain['_id'] == domain_id:
            raise error.BuiltinDomainError(domain_id)
    coll = db.coll('domain')
    return await coll.find_one_and_update(
        filter={'_id': domain_id},
        update={'$set': {
            'roles.{0}'.format(role): perm
        }},
        return_document=ReturnDocument.AFTER)
Exemple #3
0
async def add_user_role(domain_id: str, uid: int, role: str, join_at=None):
  validator.check_role(role)
  if join_at is None:
    join_at = datetime.datetime.utcnow()
  coll = db.coll('domain.user')
  try:
    await coll.update_one({'domain_id': domain_id, 'uid': uid,
                           'role': {'$exists': False}},
                           {'$set': {'role': role, 'join_at': join_at}},
                           upsert=True)
  except errors.DuplicateKeyError:
    raise error.UserAlreadyDomainMemberError(domain_id, uid) from None
  return True
Exemple #4
0
async def add_user_role(domain_id: str, uid: int, role: str, join_at=None):
  validator.check_role(role)
  if join_at is None:
    join_at = datetime.datetime.utcnow()
  coll = db.coll('domain.user')
  try:
    await coll.update_one({'domain_id': domain_id, 'uid': uid,
                           'role': {'$exists': False}},
                           {'$set': {'role': role, 'join_at': join_at}},
                           upsert=True)
  except errors.DuplicateKeyError:
    raise error.UserAlreadyDomainMemberError(domain_id, uid) from None
  return True
Exemple #5
0
async def set_roles(domain_id: str, roles):
    roles = {str(role): int(perm) for role, perm in roles.items()}
    update = {}
    for role in roles:
        validator.check_role(role)
        if role in builtin.BUILTIN_ROLE_DESCRIPTORS:
            if not builtin.BUILTIN_ROLE_DESCRIPTORS[role].modifiable:
                raise error.ModifyBuiltinRoleError(domain_id, role)
        update['roles.{0}'.format(role)] = roles[role]
    for domain in builtin.DOMAINS:
        if domain['_id'] == domain_id:
            raise error.BuiltinDomainError(domain_id)
    coll = db.coll('domain')
    return await coll.find_one_and_update(filter={'_id': domain_id},
                                          update={'$set': update},
                                          return_document=ReturnDocument.AFTER)
Exemple #6
0
async def set_roles(domain_id: str, roles):
  roles = {str(role): int(perm) for role, perm in roles.items()}
  update = {}
  for role in roles:
    validator.check_role(role)
    if role in builtin.BUILTIN_ROLE_DESCRIPTORS:
      if not builtin.BUILTIN_ROLE_DESCRIPTORS[role].modifiable:
        raise error.ModifyBuiltinRoleError(domain_id, role)
    update['roles.{0}'.format(role)] = roles[role]
  for domain in builtin.DOMAINS:
    if domain['_id'] == domain_id:
      raise error.BuiltinDomainError(domain_id)
  coll = db.coll('domain')
  return await coll.find_one_and_update(filter={'_id': domain_id},
                                        update={'$set': update},
                                        return_document=ReturnDocument.AFTER)
Exemple #7
0
async def delete_roles(domain_id: str, roles):
  roles = list(set(roles))
  for role in roles:
    validator.check_role(role)
    if role in builtin.BUILTIN_ROLE_DESCRIPTORS:
      raise error.ModifyBuiltinRoleError(domain_id, role)
  for domain in builtin.DOMAINS:
    if domain['_id'] == domain_id:
      raise error.BuiltinDomainError(domain_id)
  user_coll = db.coll('domain.user')
  await user_coll.update_many({'domain_id': domain_id, 'role': {'$in': list(roles)}},
                              {'$unset': {'role': ''}})
  coll = db.coll('domain')
  return await coll.find_one_and_update(filter={'_id': domain_id},
                                        update={'$unset': dict(('roles.{0}'.format(role), '')
                                                               for role in roles)},
                                        return_document=ReturnDocument.AFTER)
Exemple #8
0
async def set_users_role(domain_id: str, uids, role: str):
    validator.check_role(role)
    await set_users(domain_id, uids, role=role)
Exemple #9
0
async def set_user_role(domain_id: str, uid: int, role: str):
    validator.check_role(role)
    return await set_user(domain_id, uid, role=role)
Exemple #10
0
async def set_user_role(domain_id: str, uid: int, role: str):
    validator.check_role(role)
    # use set_users to utilize "upsert=False"
    return await set_users(domain_id, [uid], role=role)
Exemple #11
0
async def set_users_role(domain_id: str, uids, role: str):
  validator.check_role(role)
  await set_users(domain_id, uids, role=role)
Exemple #12
0
async def set_user_role(domain_id: str, uid: int, role: str):
  validator.check_role(role)
  # use set_users to utilize "upsert=False"
  return await set_users(domain_id, [uid], role=role)