0
0
Fork 0
mirror of https://github.com/verdigado/organization_folders.git synced 2024-11-24 21:50:26 +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 axios from "@nextcloud/axios"
import { generateUrl } from "@nextcloud/router" 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 {{ * @typedef {{
* id: number * id: number
@ -18,24 +43,33 @@ import { generateUrl } from "@nextcloud/router"
* @typedef {(FolderResource)} Resource * @typedef {(FolderResource)} Resource
* *
* @typedef {{ * @typedef {{
* type: number, * type: PrincipalType,
* id: string, * id: string,
* }} Principal * }} Principal
* *
* @typedef {{ * @typedef {{
* id: number * id: number
* resourceId: number * resourceId: number
* permissionLevel: number * permissionLevel: ResourceMemberPermissionLevel
* principal: Principal, * principal: Principal,
* createdTimestamp: number, * createdTimestamp: number,
* lastUpdatedTimestamp: number, * lastUpdatedTimestamp: number,
* }} ResourceMember * }} ResourceMember
* *
* @typedef {{
* id: number,
* friendlyName: string,
* membersGroup: string,
* }} Organization
*
*/ */
axios.defaults.baseURL = generateUrl("/apps/organization_folders") axios.defaults.baseURL = generateUrl("/apps/organization_folders")
export default { export default {
PrincipalTypes,
ResourceMemberPermissionLevels,
/** /**
* *
* @param {number|string} resourceId Resource id * @param {number|string} resourceId Resource id
@ -43,7 +77,7 @@ export default {
* @return {Promise<Resource>} * @return {Promise<Resource>}
*/ */
getResource(resourceId, include = "model") { 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 * }} updateResourceDto UpdateResourceDto
* @return {Promise<Resource>} * @return {Promise<Resource>}
*/ */
updateResource(resourceId, updateGroupDto) { updateResource(resourceId, updateGroupDto, include = "model") {
return axios.put(`/resources/${resourceId}`, { ...updateGroupDto }).then((res) => res.data) return axios.put(`/resources/${resourceId}`, { ...updateGroupDto, include }).then((res) => res.data);
}, },
/** /**
*
* @param {number|string} resourceId Resource id * @param {number|string} resourceId Resource id
* @return {Promise<Array<ResourceMember>>} * @return {Promise<Array<ResourceMember>>}
*/ */
getResourceMembers(resourceId) { 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);
}
} }