Skip to content

Commit ed42da5

Browse files
Reworked user permissions list to include permissions by department and be more accurate with new permissions being added softlayer#2156
1 parent 448c757 commit ed42da5

File tree

5 files changed

+1018
-14
lines changed

5 files changed

+1018
-14
lines changed

SoftLayer/CLI/user/permissions.py

+17-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""List A users permissions."""
1+
"""List a users permissions."""
22
import click
33

44
import SoftLayer
@@ -11,21 +11,31 @@
1111
@click.argument('identifier')
1212
@environment.pass_env
1313
def cli(env, identifier):
14-
"""User Permissions."""
14+
"""User Permissions.
15+
16+
Some permissions here may also be managed by IBM IAM service.
17+
See https://cloud.ibm.com/docs/account?topic=account-migrated_permissions for more details.
18+
"""
1519

1620
mgr = SoftLayer.UserManager(env.client)
1721
user_id = helpers.resolve_id(mgr.resolve_ids, identifier, 'username')
1822
object_mask = "mask[id, permissions, isMasterUserFlag, roles]"
1923

2024
user = mgr.get_user(user_id, object_mask)
21-
all_permissions = mgr.get_all_permissions()
22-
user_permissions = perms_to_dict(user['permissions'])
25+
all_permissions = mgr.get_permission_departments()
2326

27+
user_permissions = perms_to_dict(user['permissions'])
28+
all_table = formatting.KeyValueTable(['Department', 'Permissions'])
2429
if user['isMasterUserFlag']:
2530
click.secho('This account is the Master User and has all permissions enabled', fg='green')
2631

2732
env.fout(roles_table(user))
28-
env.fout(permission_table(user_permissions, all_permissions))
33+
for department in all_permissions:
34+
all_table.add_row([
35+
department.get('name'),
36+
permission_table(user_permissions, department.get('permissions', []))
37+
])
38+
env.fout(all_table)
2939

3040

3141
def perms_to_dict(perms):
@@ -39,18 +49,13 @@ def perms_to_dict(perms):
3949
def permission_table(user_permissions, all_permissions):
4050
"""Creates a table of available permissions"""
4151

42-
table = formatting.Table(['Description', 'KeyName', 'Assigned'])
52+
table = formatting.Table(['KeyName', 'Assigned', 'Description'])
4353
table.align['KeyName'] = 'l'
4454
table.align['Description'] = 'l'
4555
table.align['Assigned'] = 'l'
4656
for perm in all_permissions:
4757
assigned = user_permissions.get(perm['keyName'], False)
48-
hide_permission_list = ['ACCOUNT_SUMMARY_VIEW', 'REQUEST_COMPLIANCE_REPORT',
49-
'COMPANY_EDIT', 'ONE_TIME_PAYMENTS', 'UPDATE_PAYMENT_DETAILS',
50-
'EU_LIMITED_PROCESSING_MANAGE', 'TICKET_ADD', 'TICKET_EDIT',
51-
'TICKET_SEARCH', 'TICKET_VIEW', 'TICKET_VIEW_ALL']
52-
if perm['keyName'] not in hide_permission_list:
53-
table.add_row([perm['name'], perm['keyName'], assigned])
58+
table.add_row([perm['keyName'], assigned, perm['description']])
5459
return table
5560

5661

0 commit comments

Comments
 (0)