1
0
Fork 0
mirror of synced 2024-09-04 03:31:45 +12:00
budibase/packages/frontend-core/src/api/user.js
2022-02-28 18:39:05 +00:00

98 lines
2.2 KiB
JavaScript

export const buildUserEndpoints = API => ({
/**
* Gets a list of users in the current tenant.
*/
getUsers: async () => {
return await API.get({
url: "/api/global/users",
})
},
/**
* Creates a user for an app.
* @param user the user to create
*/
createAppUser: async user => {
return await API.post({
url: "/api/users/metadata",
body: user,
})
},
/**
* Updates the current user metadata.
* @param metadata the metadata to save
*/
updateOwnMetadata: async metadata => {
return await API.post({
url: "/api/users/metadata/self",
body: metadata,
})
},
/**
* Creates an admin user.
* @param adminUser the admin user to create
*/
createAdminUser: async adminUser => {
return await API.post({
url: "/api/global/users/init",
body: adminUser,
})
},
/**
* Creates or updates a user in the current tenant.
* @param user the new user to create
*/
saveUser: async user => {
return await API.post({
url: "/api/global/users",
body: user,
})
},
/**
* Deletes a user from the curernt tenant.
* @param userId the ID of the user to delete
*/
deleteUser: async userId => {
return await API.delete({
url: `/api/global/users/${userId}`,
})
},
/**
* Invites a user to the current tenant.
* @param email the email address to send the invitation to
* @param builder whether the user should be a global builder
* @param admin whether the user should be a global admin
*/
inviteUser: async ({ email, builder, admin }) => {
return await API.post({
url: "/api/global/users/invite",
body: {
email,
userInfo: {
admin: admin ? { global: true } : undefined,
builder: builder ? { global: true } : undefined,
},
},
})
},
/**
* Accepts an invite to join the platform and creates a user.
* @param inviteCode the invite code sent in the email
* @param password the password for the newly created user
*/
acceptInvite: async ({ inviteCode, password }) => {
return await API.post({
url: "/api/global/users/invite/accept",
body: {
inviteCode,
password,
},
})
},
})