0
0
Fork 0
mirror of https://github.com/verdigado/organization_folders.git synced 2024-11-21 20:28:11 +01:00

added new api routes to frontend api controller

This commit is contained in:
Jonathan Treffler 2024-11-20 02:28:02 +01:00
parent c1cba31d06
commit baf5d30f8b

View file

@ -1,6 +1,31 @@
import axios from "@nextcloud/axios"
import { generateUrl } from "@nextcloud/router"
/**
* @typedef {number} PrincipalType
**/
/**
* @enum {PrincipalType}
*/
var PrincipalTypes = {
USER: 1,
GROUP: 2,
ROLE: 3,
}
/**
* @typedef {number} ResourceMemberPermissionLevel
**/
/**
* @enum {ResourceMemberPermissionLevel}
*/
var ResourceMemberPermissionLevels = {
MEMBER: 1,
MANAGER: 2,
}
/**
* @typedef {{
* id: number
@ -18,24 +43,33 @@ import { generateUrl } from "@nextcloud/router"
* @typedef {(FolderResource)} Resource
*
* @typedef {{
* type: number,
* type: PrincipalType,
* id: string,
* }} Principal
*
* @typedef {{
* id: number
* resourceId: number
* permissionLevel: number
* permissionLevel: ResourceMemberPermissionLevel
* principal: Principal,
* createdTimestamp: number,
* lastUpdatedTimestamp: number,
* }} ResourceMember
*
* @typedef {{
* id: number,
* friendlyName: string,
* membersGroup: string,
* }} Organization
*
*/
axios.defaults.baseURL = generateUrl("/apps/organization_folders")
export default {
PrincipalTypes,
ResourceMemberPermissionLevels,
/**
*
* @param {number|string} resourceId Resource id
@ -43,7 +77,7 @@ export default {
* @return {Promise<Resource>}
*/
getResource(resourceId, include = "model") {
return axios.get(`/resources/${resourceId}`, { params: { include } }).then((res) => res.data)
return axios.get(`/resources/${resourceId}`, { params: { include } }).then((res) => res.data);
},
/**
@ -58,16 +92,79 @@ export default {
* }} updateResourceDto UpdateResourceDto
* @return {Promise<Resource>}
*/
updateResource(resourceId, updateGroupDto) {
return axios.put(`/resources/${resourceId}`, { ...updateGroupDto }).then((res) => res.data)
updateResource(resourceId, updateGroupDto, include = "model") {
return axios.put(`/resources/${resourceId}`, { ...updateGroupDto, include }).then((res) => res.data);
},
/**
*
* @param {number|string} resourceId Resource id
* @return {Promise<Array<ResourceMember>>}
*/
getResourceMembers(resourceId) {
return axios.get(`/resources/${resourceId}/members`, {}).then((res) => res.data)
return axios.get(`/resources/${resourceId}/members`, {}).then((res) => res.data);
},
/**
* @param {number|string} resourceId Resource id
* @param {{
* permissionLevel: ResourceMemberPermissionLevel
* principalType: PrincipalType
* principalId: string
* }} createResourceMemberDto CreateResourceMemberDto
* @return {Promise<ResourceMember>}
*/
createResourceMember(resourceId, createResourceMemberDto) {
return axios.post(`/resources/${resourceId}/members`, { ...createResourceMemberDto }).then((res) => res.data);
},
/**
* @param {number|string} resourceMemberId Resource member id
* @param {{
* permissionLevel: ResourceMemberPermissionLevel
* }} createResourceMemberDto CreateResourceMemberDto
* @return {Promise<ResourceMember>}
*/
updateResourceMember(resourceId, createResourceMemberDto) {
return axios.post(`/resources/${resourceId}/members`, { ...createResourceMemberDto }).then((res) => res.data);
},
/**
* @return {Promise<Array<string>>}
*/
getOrganizationProviders() {
return axios.get(`/organizationProviders`, {}).then((res) => res.data);
},
/**
* @param {string} organizationProviderId organization provider id
* @param {int} id organization id
* @return {Promise<Organization>}
*/
getOrganization(organizationProviderId, id) {
return axios.get(`/organizationProviders/${organizationProviderId}/organizations/${id}`, { }).then((res) => res.data);
},
/**
* @param {string} organizationProviderId organization provider id
* @param {number|undefined} parentOrganizationId parent organization id (null if top level organizations)
* @return {Promise<Array<Organization>>}
*/
getSubOrganizations(organizationProviderId, parentOrganizationId) {
if(parentOrganizationId) {
return axios.get(`/organizationProviders/${organizationProviderId}/organizations/${parentOrganizationId}/subOrganizations`, { }).then((res) => res.data);
} else {
return axios.get(`/organizationProviders/${organizationProviderId}/subOrganizations`, { }).then((res) => res.data);
}
},
/**
* @param {string} organizationProviderId organization provider id
* @param {number} organizationId organization id
* @return {Promise<Array<Organization>>}
*/
getRoles(organizationProviderId, organizationId) {
return axios.get(`/organizationProviders/${organizationProviderId}/organizations/${organizationId}/roles/`, { }).then((res) => res.data);
}
}