Skip to content

Commit 73b9362

Browse files
authored
Merge pull request #66 from zesty-io/feat/2479-custom-roles
Add new endpoints for the custom role updates
2 parents 7fc2789 + b32a1fa commit 73b9362

File tree

3 files changed

+84
-6
lines changed

3 files changed

+84
-6
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zesty-io/fetch-wrapper",
3-
"version": "0.0.48",
3+
"version": "0.0.49",
44
"description": "",
55
"main": "dist/index.js",
66
"scripts": {

src/FetchWrapper.ts

Lines changed: 70 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
IsiteServicesEndpoints,
1717
IUpdateTeam,
1818
OPTIONS,
19+
GranularRole,
1920
} from "types"
2021

2122
import FormData from "form-data"
@@ -127,6 +128,7 @@ export default class FetchWrapper {
127128
// Roles
128129
roleGET: "/roles/ROLE_ZUID",
129130
roleDELETE: "/roles/ROLE_ZUID",
131+
rolePUT: "/roles/ROLE_ZUID",
130132
rolesPOST: "/roles",
131133
roles: "/roles",
132134
instancesRoles: "/instances/INSTANCE_ZUID/roles",
@@ -136,6 +138,7 @@ export default class FetchWrapper {
136138
userRolesPOST: "/users/USER_ZUID/roles/ROLE_ZUID",
137139
userRolesDELETE: "/users/USER_ZUID/roles/ROLE_ZUID",
138140
userRolesPUT: "/users/USER_ZUID/roles/ROLE_ZUID",
141+
bulkReassignUserRolesPUT: "/users/roles/ROLE_ZUID",
139142
// Roles Granular
140143
rolesGranularGET: "/roles/ROLE_ZUID/granulars/RESOURCE_ZUID",
141144
rolesGranularDELETE: "/roles/ROLE_ZUID/granulars/RESOURCE_ZUID",
@@ -1142,15 +1145,34 @@ export default class FetchWrapper {
11421145
})
11431146
return await this.makeRequest(url, "DELETE", payload)
11441147
}
1145-
async createRole(name: string, entityZUID: string, systemRoleZUID: string) {
1148+
async createRole(
1149+
name: string,
1150+
entityZUID: string,
1151+
systemRoleZUID: string,
1152+
description = "",
1153+
) {
11461154
let payload = JSON.stringify({
11471155
name,
11481156
entityZUID,
11491157
systemRoleZUID,
1158+
description,
11501159
})
11511160
let url = this.accountsAPIURL + this.accountsAPIEndpoints.rolesPOST
11521161
return await this.makeRequest(url, "POST", payload)
11531162
}
1163+
async updateRole(
1164+
roleZUID: string,
1165+
data: { name: string; description: string; systemRoleZUID: string },
1166+
) {
1167+
const payload = JSON.stringify(data)
1168+
const url =
1169+
this.accountsAPIURL +
1170+
this.replaceInURL(this.accountsAPIEndpoints.rolePUT, {
1171+
ROLE_ZUID: roleZUID,
1172+
})
1173+
1174+
return await this.makeRequest(url, "PUT", payload)
1175+
}
11541176
async getRoles() {
11551177
let url = this.accountsAPIURL + this.accountsAPIEndpoints.roles
11561178
return await this.makeRequest(url)
@@ -1173,6 +1195,22 @@ export default class FetchWrapper {
11731195
})
11741196
return await this.makeRequest(url, "POST", payload)
11751197
}
1198+
async bulkReassignUsersRole({
1199+
oldRoleZUID,
1200+
newRoleZUID,
1201+
}: {
1202+
oldRoleZUID: string
1203+
newRoleZUID: string
1204+
}) {
1205+
const payload = JSON.stringify({ roleZUID: newRoleZUID })
1206+
const url =
1207+
this.accountsAPIURL +
1208+
this.replaceInURL(this.accountsAPIEndpoints.bulkReassignUserRolesPUT, {
1209+
ROLE_ZUID: oldRoleZUID,
1210+
})
1211+
1212+
return await this.makeRequest(url, "PUT", payload)
1213+
}
11761214
async deleteUserRole(userZUID: string, roleZUID: string) {
11771215
let payload = JSON.stringify({})
11781216
let url =
@@ -1247,8 +1285,33 @@ export default class FetchWrapper {
12471285
})
12481286
return await this.makeRequest(url, "PUT", payload)
12491287
}
1250-
async createGranularRole(roleZUID: string, resourceZUID: string, create = true) {
1251-
let payload = JSON.stringify({ resourceZUID, create })
1288+
async batchUpdateGranularRoles(roleZUID: string, granularRoles: GranularRole[]) {
1289+
let payload = JSON.stringify(granularRoles)
1290+
let url =
1291+
this.accountsAPIURL +
1292+
this.replaceInURL(this.accountsAPIEndpoints.rolesGranularPUT, {
1293+
ROLE_ZUID: roleZUID,
1294+
})
1295+
1296+
return await this.makeRequest(url, "PUT", payload)
1297+
}
1298+
async createGranularRole(
1299+
roleZUID: string,
1300+
resourceZUID: string,
1301+
create = true,
1302+
read = false,
1303+
update = false,
1304+
remove = false,
1305+
publish = false,
1306+
) {
1307+
let payload = JSON.stringify({
1308+
resourceZUID,
1309+
create,
1310+
read,
1311+
update,
1312+
delete: remove,
1313+
publish,
1314+
})
12521315
let url =
12531316
this.accountsAPIURL +
12541317
this.replaceInURL(this.accountsAPIEndpoints.rolesGranularPOST, {
@@ -1431,9 +1494,11 @@ export default class FetchWrapper {
14311494
}
14321495

14331496
// Search Items Function
1434-
async searchItems() {
1497+
async searchItems(params: Record<string, string> = {}) {
1498+
const searchParams = new URLSearchParams(params)?.toString()
14351499
let url = this.instancesAPIURL + this.instanceAPIEndpoints.searchItemsGET
1436-
return await this.makeRequest(url)
1500+
1501+
return await this.makeRequest(`${url}?${searchParams}`)
14371502
}
14381503

14391504
// Locales functionality

src/types/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export interface IaccountsAPIEndpoints {
120120
// Roles
121121
roleGET: string
122122
roleDELETE: string
123+
rolePUT: string
123124
rolesPOST: string
124125
roles: string
125126
instancesRoles: string
@@ -129,6 +130,7 @@ export interface IaccountsAPIEndpoints {
129130
userRolesPOST: string
130131
userRolesDELETE: string
131132
userRolesPUT: string
133+
bulkReassignUserRolesPUT: string
132134
// Roles Granular
133135
rolesGranularGET: string
134136
rolesGranularDELETE: string
@@ -211,3 +213,14 @@ export interface ICreateWebhook {
211213
authorization?: string
212214
text: string
213215
}
216+
217+
export type GranularRole = {
218+
create: boolean
219+
delete: boolean
220+
grant: boolean
221+
name: string
222+
publish: boolean
223+
read: boolean
224+
resourceZUID: string
225+
update: boolean
226+
}

0 commit comments

Comments
 (0)