budibase/packages/frontend-core/src/api/groups.js

92 lines
2.2 KiB
JavaScript
Raw Normal View History

export const buildGroupsEndpoints = API => {
// underlying functionality of adding/removing users/apps to groups
async function updateGroupResource(groupId, resource, operation, ids) {
if (!Array.isArray(ids)) {
ids = [ids]
}
2022-06-22 14:55:31 +02:00
return await API.post({
url: `/api/global/groups/${groupId}/${resource}`,
body: {
[operation]: ids,
},
2022-06-22 14:55:31 +02:00
})
}
2022-06-15 17:51:30 +02:00
return {
/**
* Creates a user group.
* @param group the new group to create
*/
saveGroup: async group => {
return await API.post({
url: "/api/global/groups",
body: group,
})
},
/**
* Gets all the user groups
*/
getGroups: async () => {
return await API.get({
url: "/api/global/groups",
})
},
2022-06-22 14:55:31 +02:00
/**
* Gets a group by ID
*/
getGroup: async id => {
return await API.get({
url: `/api/global/groups/${id}`,
})
},
/**
* Deletes a user group
* @param id the id of the config to delete
* @param rev the revision of the config to delete
*/
deleteGroup: async ({ id, rev }) => {
return await API.delete({
url: `/api/global/groups/${id}/${rev}`,
})
},
/**
* Adds users to a group
* @param groupId The group to update
* @param userIds The user IDs to be added
*/
addUsersToGroup: async (groupId, userIds) => {
return updateGroupResource(groupId, "users", "add", userIds)
},
/**
* Removes users from a group
* @param groupId The group to update
* @param userIds The user IDs to be removed
*/
removeUsersFromGroup: async (groupId, userIds) => {
return updateGroupResource(groupId, "users", "remove", userIds)
},
/**
* Adds apps to a group
* @param groupId The group to update
* @param appIds The app IDs to be added
*/
addAppsToGroup: async (groupId, appIds) => {
return updateGroupResource(groupId, "apps", "add", appIds)
},
/**
* Removes apps from a group
* @param groupId The group to update
* @param appIds The app IDs to be removed
*/
removeAppsFromGroup: async (groupId, appIds) => {
return updateGroupResource(groupId, "apps", "remove", appIds)
},
}
}