MCPcopy Create free account
hub / github.com/Keeper-Security/Commander / UserReportCommand

Class UserReportCommand

keepercommander/commands/enterprise.py:3764–3908  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3762
3763
3764class UserReportCommand(EnterpriseCommand):
3765 def __init__(self):
3766 super(UserReportCommand, self).__init__()
3767 self.nodes = {}
3768 self.roles = {}
3769 self.teams = {}
3770 self.users = {}
3771 self.user_roles = {}
3772 self.user_teams = {}
3773
3774 def get_parser(self):
3775 return user_report_parser
3776
3777 def execute(self, params, **kwargs):
3778 self.nodes.clear()
3779 if 'nodes' in params.enterprise:
3780 for node in params.enterprise['nodes']:
3781 self.nodes[node['node_id']] = {
3782 'parent_id': node.get('parent_id') or 0,
3783 'name': node['data'].get('displayname') or ''
3784 }
3785
3786 self.roles.clear()
3787 if 'roles' in params.enterprise:
3788 for role in params.enterprise['roles']:
3789 if 'data' in role:
3790 self.roles[role['role_id']] = role['data'].get('displayname') or ''
3791
3792 self.teams.clear()
3793 if 'teams' in params.enterprise:
3794 for team in params.enterprise['teams']:
3795 self.teams[team['team_uid']] = team['name']
3796
3797 self.users.clear()
3798 kw_euid = 'enterprise_user_id'
3799 ei_cmd = EnterpriseInfoCommand()
3800 cmd_output = ei_cmd.execute(params, users=True, columns='roles,teams', format='json', quiet=True)
3801 enterprise_users = json.loads(cmd_output)
3802
3803 def get_user_info(user):
3804 u = {
3805 'enterprise_user_id': user.get('enterprise_user_id'),
3806 'node_id': user.get('node_id'),
3807 'username': user.get('username'),
3808 'name': user.get('data', {}).get('displayname') or '',
3809 'status': user.get('status'),
3810 'lock': user.get('lock')
3811 }
3812 if 'account_share_expiration' in user:
3813 u['account_share_expiration'] = user['account_share_expiration']
3814 return u
3815
3816 self.user_teams = {u.get('user_id'): u.get('teams') for u in enterprise_users}
3817 self.user_roles = {u.get('user_id'): u.get('roles') for u in enterprise_users}
3818 euids = list(self.user_roles.keys())
3819 users_cache_filtered = {u.get(kw_euid): u for u in params.enterprise.get('users', []) if u.get(kw_euid) in euids}
3820 self.users = {k: get_user_info(u) for k, u in users_cache_filtered.items()}
3821

Callers 2

create_user_reportFunction · 0.90
register_commandsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected