-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrole.py
More file actions
68 lines (57 loc) · 3 KB
/
role.py
File metadata and controls
68 lines (57 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from typing import List
from enums import RoleType, AccessType, ResourceType
from custom_resource import Resource
# Define the Role class for handling role-specific operations
class Role:
@staticmethod
def get_env_policy(r: RoleType) -> str:
# Get the environmental policy for the specified role
if r == RoleType.TELLER:
return "As a teller, this user can only access the system between 9 a.m. and 5 p.m.\nAs a teller, this user can only access client accounts with their permission."
elif r == RoleType.TECH_SUPPORT:
return "Technical support can only access client accounts with their permission"
else:
return ""
@staticmethod
def create_capability_list(r: RoleType) -> List[Resource]:
# Create and return a list of resources based on the specified role
resources = [Resource(ResourceType.CLIENT_INFO, AccessType.VIEW)]
if r == RoleType.PREMIUM_CLIENT:
resources.extend([
Resource(ResourceType.INVESTMENTS_PORTFOLIO, AccessType.MODIFY),
Resource(ResourceType.CD_FP, AccessType.VIEW),
Resource(ResourceType.CD_IA, AccessType.VIEW),
])
elif r == RoleType.REGULAR_CLIENT:
resources.extend([
Resource(ResourceType.ACCOUNT_BALANCE, AccessType.VIEW),
Resource(ResourceType.CD_FA, AccessType.VIEW),
Resource(ResourceType.INVESTMENTS_PORTFOLIO, AccessType.VIEW),
])
elif r == RoleType.FINANCIAL_PLANNER:
resources.append(Resource(ResourceType.MONEY_MARKET_I, AccessType.VIEW))
elif r == RoleType.FINANCIAL_ADVISOR:
resources.extend([
Resource(ResourceType.ACCOUNT_BALANCE, AccessType.VIEW),
Resource(ResourceType.INVESTMENTS_PORTFOLIO, AccessType.MODIFY),
Resource(ResourceType.PRVT_CONSUMER_INSTRUMENTS, AccessType.VIEW),
])
elif r == RoleType.INVESTMENT_ANALYST:
resources.extend([
Resource(ResourceType.ACCOUNT_BALANCE, AccessType.VIEW),
Resource(ResourceType.INVESTMENTS_PORTFOLIO, AccessType.MODIFY),
Resource(ResourceType.MONEY_MARKET_I, AccessType.VIEW),
Resource(ResourceType.DERIVATIVES_TRADING, AccessType.VIEW),
Resource(ResourceType.INTEREST_INSTRUMENTS, AccessType.VIEW),
Resource(ResourceType.PRVT_CONSUMER_INSTRUMENTS, AccessType.VIEW),
])
elif r == RoleType.COMPLIANCE_OFFICER:
resources.extend([
Resource(ResourceType.ACCOUNT_BALANCE, AccessType.VIEW),
Resource(ResourceType.INVESTMENTS_PORTFOLIO, AccessType.VALIDATE),
])
elif r == RoleType.TELLER:
resources.append(Resource(ResourceType.SYSTEM, AccessType.CONDITIONAL))
elif r == RoleType.TECH_SUPPORT:
resources.append(Resource(ResourceType.CLIENT_INFO, AccessType.CONDITIONAL))
return resources