Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6520cc1

Browse files
committed
add Roles endpoints
1 parent f13ab9d commit 6520cc1

File tree

6 files changed

+407
-8
lines changed

6 files changed

+407
-8
lines changed

auth0/v3/management/auth0.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from .jobs import Jobs
1212
from .logs import Logs
1313
from .resource_servers import ResourceServers
14+
from .roles import Roles
1415
from .rules import Rules
1516
from .rules_configs import RulesConfigs
1617
from .stats import Stats
@@ -44,6 +45,7 @@ def __init__(self, domain, token):
4445
self.jobs = Jobs(domain, token)
4546
self.logs = Logs(domain, token)
4647
self.resource_servers = ResourceServers(domain, token)
48+
self.roles = Roles(domain, token)
4749
self.rules = Rules(domain, token)
4850
self.rules_configs = RulesConfigs(domain, token)
4951
self.stats = Stats(domain, token)

auth0/v3/management/roles.py

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
from .rest import RestClient
2+
3+
4+
class Roles(object):
5+
6+
"""Auth0 roles endpoints
7+
8+
Args:
9+
domain (str): Your Auth0 domain, e.g: 'username.auth0.com'
10+
11+
token (str): Management API v2 Token
12+
13+
telemetry (bool, optional): Enable or disable Telemetry
14+
(defaults to True)
15+
"""
16+
17+
def __init__(self, domain, token, telemetry=True):
18+
self.domain = domain
19+
self.client = RestClient(jwt=token, telemetry=telemetry)
20+
21+
def _url(self, id=None):
22+
url = 'https://{}/api/v2/roles'.format(self.domain)
23+
if id is not None:
24+
return '{}/{}'.format(url, id)
25+
return url
26+
27+
def list(self, page=0, per_page=25, include_totals=True, name_filter=None):
28+
"""List or search roles.
29+
30+
Args:
31+
page (int, optional): The result's page number (zero based).
32+
33+
per_page (int, optional): The amount of entries per page.
34+
35+
include_totals (bool, optional): True if the query summary is
36+
to be included in the result, False otherwise.
37+
38+
name_filter (str, optional): A case-insensitive filter to apply
39+
to search for roles by name
40+
41+
See: https://auth0.com/docs/api/management/v2#!/Roles/get_roles
42+
"""
43+
params = {
44+
'per_page': per_page,
45+
'page': page,
46+
'include_totals': str(include_totals).lower(),
47+
'name_filter': name_filter
48+
}
49+
return self.client.get(self._url(), params=params)
50+
51+
def create(self, body):
52+
"""Creates a new role.
53+
54+
Args:
55+
body (dict): Please see: https://auth0.com/docs/api/v2#!/Roles/post_roles
56+
"""
57+
return self.client.post(self._url(), data=body)
58+
59+
def get(self, id):
60+
"""Get a role.
61+
62+
Args:
63+
id (str): The id of the role to retrieve.
64+
65+
See: https://auth0.com/docs/api/management/v2#!/Roles/get_roles_by_id
66+
"""
67+
68+
return self.client.get(self._url(id))
69+
70+
def delete(self, id):
71+
"""Delete a role.
72+
73+
Args:
74+
id (str): The id of the role to delete.
75+
76+
See: https://auth0.com/docs/api/management/v2#!/Roles/delete_roles_by_id
77+
"""
78+
return self.client.delete(self._url(id))
79+
80+
def update(self, id, body):
81+
"""Update a role with the attributes passed in 'body'
82+
83+
Args:
84+
id (str): The id of the role to update.
85+
86+
body (dict): Please see: https://auth0.com/docs/api/management/v2#!/Roles/patch_roles_by_id
87+
"""
88+
return self.client.patch(self._url(id), data=body)
89+
90+
def list_users(self, id, page=0, per_page=25, include_totals=True):
91+
"""Lists the users that have been associated with a given role.
92+
93+
Args:
94+
id (str): The role's id.
95+
96+
page (int, optional): The result's page number (zero based).
97+
98+
per_page (int, optional): The amount of entries per page.
99+
100+
include_totals (bool, optional): True if the query summary is
101+
to be included in the result, False otherwise.
102+
103+
See https://auth0.com/docs/api/management/v2#!/Roles/get_role_user
104+
"""
105+
106+
params = {
107+
'per_page': per_page,
108+
'page': page,
109+
'include_totals': str(include_totals).lower()
110+
}
111+
url = self._url('{}/users'.format(id))
112+
return self.client.get(url, params=params)
113+
114+
def add_users(self, id, users):
115+
"""Assign users to a role.
116+
117+
Args:
118+
id (str): The role's id.
119+
120+
users (list of str): A list of users ids to add to this role
121+
122+
See https://auth0.com/docs/api/management/v2#!/Roles/post_role_users
123+
"""
124+
url = self._url('{}/users'.format(id))
125+
body = {'users': users}
126+
return self.client.post(url, data=body)
127+
128+
def list_permissions(self, id, page=0, per_page=25, include_totals=True):
129+
"""Gets the permissions for a role.
130+
131+
Args:
132+
id (str): The role's id.
133+
134+
page (int, optional): The result's page number (zero based).
135+
136+
per_page (int, optional): The amount of entries per page.
137+
138+
include_totals (bool, optional): True if the query summary is
139+
to be included in the result, False otherwise.
140+
141+
See https://auth0.com/docs/api/management/v2#!/Roles/get_role_permission
142+
"""
143+
params = {
144+
'per_page': per_page,
145+
'page': page,
146+
'include_totals': str(include_totals).lower()
147+
}
148+
url = self._url('{}/permissions'.format(id))
149+
return self.client.get(url, params=params)
150+
151+
def remove_permissions(self, id, permissions):
152+
"""Removes permissions from a role.
153+
154+
Args:
155+
id (str): The role's id.
156+
157+
permissions (list of str): A list of permissions ids to unassociate from the role.
158+
159+
See https://auth0.com/docs/api/management/v2#!/Roles/delete_role_permission_assignment
160+
"""
161+
url = self._url('{}/permissions'.format(id))
162+
body = {'permissions': permissions}
163+
return self.client.delete(url, data=body)
164+
165+
166+
def add_permissions(self, id, permissions):
167+
"""Adds permissions from a role.
168+
169+
Args:
170+
id (str): The role's id.
171+
172+
permissions (list of str): A list of permissions ids to associate to the role.
173+
174+
See https://auth0.com/docs/api/management/v2#!/Roles/post_role_permission_assignment
175+
"""
176+
url = self._url('{}/permissions'.format(id))
177+
body = {'permissions': permissions}
178+
return self.client.post(url, data=body)

auth0/v3/management/users.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,14 @@ def list_roles(self, id, page=0, per_page=25, include_totals=True):
144144
145145
See https://auth0.com/docs/api/management/v2#!/Users/get_user_roles
146146
"""
147+
params = {
148+
'per_page': per_page,
149+
'page': page,
150+
'include_totals': str(include_totals).lower()
151+
}
152+
147153
url = self._url('{}/roles'.format(id))
148-
return self.client.get(url)
154+
return self.client.get(url, params=params)
149155

150156
def remove_roles(self, id, roles):
151157
"""Removes roles from a user.
@@ -190,8 +196,14 @@ def list_permissions(self, id, page=0, per_page=25, include_totals=True):
190196
191197
See https://auth0.com/docs/api/management/v2#!/Users/get_permissions
192198
"""
199+
200+
params = {
201+
'per_page': per_page,
202+
'page': page,
203+
'include_totals': str(include_totals).lower()
204+
}
193205
url = self._url('{}/permissions'.format(id))
194-
return self.client.get(url)
206+
return self.client.get(url, params=params)
195207

196208
def remove_permissions(self, id, permissions):
197209
"""Removes permissions from a user.

auth0/v3/test/management/test_auth0.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from ...management.jobs import Jobs
1414
from ...management.logs import Logs
1515
from ...management.resource_servers import ResourceServers
16+
from ...management.roles import Roles
1617
from ...management.rules import Rules
1718
from ...management.rules_configs import RulesConfigs
1819
from ...management.stats import Stats
@@ -69,6 +70,9 @@ def test_logs(self):
6970
def test_resource_servers(self):
7071
self.assertIsInstance(self.a0.resource_servers, ResourceServers)
7172

73+
def test_roles(self):
74+
self.assertIsInstance(self.a0.roles, Roles)
75+
7276
def test_rules(self):
7377
self.assertIsInstance(self.a0.rules, Rules)
7478

0 commit comments

Comments
 (0)