My Vault> pedm approval action --remove @expired
All expired approval requests removed successfully
from keepersdk.plugins.pedm import admin_plugin
plugin = admin_plugin.PedmPlugin(enterprise_loader)
def verify_uid(uids: Any) -> Optional[List[bytes]]:
if isinstance(uids, str):
uids = [uids]
if isinstance(uids, list):
to_uid = []
for uid in uids:
approve_uid = utils.base64_url_decode(uid)
if len(approve_uid) == 16:
to_uid.append(approve_uid)
else:
logger.warning(f'Invalid UID: {uid}')
if len(to_uid) > 0:
return to_uid
return None
list_approve = ['names or uids of approval requests to approve']
list_deny = ['names or uids of approval requests to deny']
list_remove = ['names or uids of approval requests to remove']
to_approve = verify_uid([list('')])
to_deny = verify_uid(kwargs.get('deny'))
to_remove = kwargs.get('remove')
if to_remove:
if isinstance(to_remove, str):
to_remove = [to_remove]
to_remove_set: Set[bytes] = set()
to_resolve = []
for uid in to_remove:
if uid == '@approved':
to_remove_set.update(
(utils.base64_url_decode(x.approval_uid) for x in plugin.storage.approval_status.get_all_entities() if x.approval_status == NotificationCenter_pb2.NAS_APPROVED))
elif uid == '@denied':
to_remove_set.update(
(utils.base64_url_decode(x.approval_uid) for x in plugin.storage.approval_status.get_all_entities() if x.approval_status == NotificationCenter_pb2.NAS_DENIED))
elif uid == '@pending':
to_remove_set.update(
(utils.base64_url_decode(x.approval_uid) for x in plugin.storage.approval_status.get_all_entities() if x.approval_status == NotificationCenter_pb2.NAS_UNSPECIFIED))
else:
to_resolve.append(uid)
if len(to_resolve) > 0:
to_remove = verify_uid(to_resolve)
if isinstance(to_remove, list):
to_remove_set.update(to_remove)
to_remove = list(to_remove_set)
status_rs = plugin.modify_approvals(to_approve=to_approve, to_deny=to_deny, to_remove=to_remove)