linagora-rse
Version:
352 lines (340 loc) • 11.6 kB
JavaScript
'use strict';
const authorize = require('../middleware/authorization');
const requestMW = require('../middleware/request');
const collaborations = require('../controllers/collaborations');
const collaborationMW = require('../middleware/collaboration');
const helperMW = require('../middleware/helper');
module.exports = function(router) {
/**
* @swagger
* /collaborations/membersearch :
* get:
* tags:
* - Collaboration
* description: Get all the collaborations where the given tuple is a member.
* parameters:
* - $ref: "#/parameters/cl_search_type"
* - $ref: "#/parameters/cl_search_id"
* responses:
* 200:
* $ref: "#/responses/cl_search"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/collaborations/membersearch',
authorize.requiresAPILogin,
helperMW.requireInQuery(['objectType', 'id']),
collaborations.searchWhereMember);
/**
* @swagger
* /collaborations/writable :
* get:
* tags:
* - Collaboration
* description: Get all the collaborations in which the connected user has write permission.
* responses:
* 200:
* $ref: "#/responses/cl_writable"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/collaborations/writable',
authorize.requiresAPILogin,
collaborations.getWritable);
/**
* @swagger
* /collaborations/{object_type}/{community_id}/invitablepeople :
* post:
* tags:
* - Collaboration
* description: Get the list of peoples (for now only users of the ESN) who can be invited in the {type}.
* parameters:
* - $ref: "#/parameters/cl_invitable_object_type"
* - $ref: "#/parameters/cl_community_id"
* - $ref: "#/parameters/cl_invitable_limit"
* - $ref: "#/parameters/cl_search"
* responses:
* 200:
* $ref: "#/responses/cl_people"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.post('/collaborations/:objectType/:id/invitablepeople',
authorize.requiresAPILogin,
collaborationMW.load,
collaborations.getInvitablePeople);
/**
* @swagger
* /collaborations/{object_type}/{id}/members :
* get:
* tags:
* - Collaboration
* description: List all members of the {objectType} collaboration of id {id}.
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_limit"
* - $ref: "#/parameters/cl_offset"
* - $ref: "#/parameters/cl_object_type_filter"
* responses:
* 200:
* $ref: "#/responses/cl_members"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/collaborations/:objectType/:id/members',
authorize.requiresAPILogin,
collaborationMW.load,
collaborationMW.flagCollaborationManager,
collaborationMW.canRead,
collaborations.getMembers);
/**
* @swagger
* /collaborations/{object_type}/{id}/members/{user_id} :
* get:
* tags:
* - Collaboration
* description: Returns ok if the user defined by user_id is a member of the {objectType} collaboration of id {id}.
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_user_id"
* responses:
* 200:
* $ref: "#/responses/cl_is_member"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/collaborations/:objectType/:id/members/:user_id',
authorize.requiresAPILogin,
collaborationMW.load,
collaborationMW.canRead,
requestMW.castParamToObjectId('user_id'),
collaborations.getMember);
/**
* @swagger
* /collaborations/{object_type}/{id}/members/{user_id} :
* put:
* tags:
* - Collaboration
* description: join the user defined by user_id to the {objectType} collaboration of id {id}.
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_user_id"
* - $ref: "#/parameters/cl_withoutInvite"
* responses:
* 204:
* $ref: "#/responses/cm_204"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.put('/collaborations/:objectType/:id/members/:user_id',
authorize.requiresAPILogin,
collaborationMW.load,
requestMW.castParamToObjectId('user_id'),
collaborationMW.flagCollaborationManager,
collaborations.join);
/**
* @swagger
* /collaborations/{object_type}/{id}/members/{user_id} :
* delete:
* tags:
* - Collaboration
* description: |
* Remove the user defined by user_id from the {objectType} collaboration of id {id}.
*
* Can't be the creator. Must be the user that sent the request.
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_user_id"
* responses:
* 204:
* $ref: "#/responses/cm_204"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.delete('/collaborations/:objectType/:id/members/:user_id',
authorize.requiresAPILogin,
collaborationMW.load,
requestMW.castParamToObjectId('user_id'),
collaborationMW.flagCollaborationManager,
collaborationMW.ifNotCollaborationManagerCheckUserIdParameterIsCurrentUser,
collaborationMW.canLeave,
collaborations.leave);
/**
* @swagger
* /collaborations/{object_type}/{id}/membership :
* get:
* tags:
* - Collaboration
* description: |
* Get the membership requests for the given {objectType}.
* Only private and restricted {objectType} support membership requests.
* Only {objectType} manager/creator can issue this type of request.
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_limit"
* - $ref: "#/parameters/cl_offset"
* responses:
* 200:
* $ref: "#/responses/cl_requests"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/collaborations/:objectType/:id/membership',
authorize.requiresAPILogin,
collaborationMW.load,
collaborationMW.flagCollaborationManager,
collaborations.getMembershipRequests);
/**
* @swagger
* /collaborations/{object_type}/{id}/membership/{user_id} :
* put:
* tags:
* - Collaboration
* description: |
* Adds an item in the {objectType} membership requests list i.e. the user request to be part of the {objectType}.
*
* Only private and restricted {objectType} support membership requests.
*
* A user cannot make a membership request for a {objectType} he is already member of.
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_user_id"
* responses:
* 200:
* $ref: "#/responses/cl_membership_put"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.put('/collaborations/:objectType/:id/membership/:user_id',
authorize.requiresAPILogin,
collaborationMW.load,
requestMW.castParamToObjectId('user_id'),
collaborationMW.checkUserParamIsNotMember,
collaborationMW.flagCollaborationManager,
collaborationMW.ifNotCollaborationManagerCheckUserIdParameterIsCurrentUser,
collaborations.addMembershipRequest);
/**
* @swagger
* /collaborations/{object_type}/{id}/membership/{user_id} :
* delete:
* tags:
* - Collaboration
* description: |
* Removes an item in the {objectType} membership requests list i.e. the user request to be part of the {objectType}.
*
* Only private and restricted {objectType} support membership requests.
*
* According to the workflow property and if the user is a manager of the community:
* -----------------------------------------------------------
*
* (workflow = INVITATION and isCommunityManager = yes)
* manager cancel the invitation of the user
*
* -----------------------------------------------------------
*
* (workflow = INVITATION and isCommunityManager = no)
* attendee declines the invitation
*
* -----------------------------------------------------------
*
* (workflow = REQUEST and isCommunityManager = yes)
* manager refuses the user's request to enter the community
*
* -----------------------------------------------------------
*
* (workflow = REQUEST and isCommunityManager = no)
* user cancels her request to enter the commity
*
* -----------------------------------------------------------
* parameters:
* - $ref: "#/parameters/cl_members_object_type"
* - $ref: "#/parameters/cl_object_id"
* - $ref: "#/parameters/cl_user_id"
* responses:
* 204:
* $ref: "#/responses/cm_204"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.delete('/collaborations/:objectType/:id/membership/:user_id',
authorize.requiresAPILogin,
collaborationMW.load,
collaborationMW.flagCollaborationManager,
collaborations.removeMembershipRequest);
};