linagora-rse
Version:
241 lines (231 loc) • 7 kB
JavaScript
'use strict';
const authorize = require('../middleware/authorization');
const users = require('../controllers/users');
const usersMW = require('../middleware/users');
const { loadFromDomainIdParameter } = require('../middleware/domain');
const { validateMIMEType } = require('../middleware/file');
const { ACCEPTED_MIME_TYPES } = require('../../core/image').CONSTANTS;
const helperMW = require('../middleware/helper');
const link = require('../middleware/profile-link');
module.exports = function(router) {
/**
* @swagger
* /users/{uuid}:
* get:
* tags:
* - Users
* description: |
* Get the profile of the user with given uuid.
*
* If the user targeted is not the one who requested the profile, private keys are not included in the response.
*
* Private keys are : accounts.
* parameters:
* - $ref: "#/parameters/uss_uuid"
* responses:
* 200:
* $ref: "#/responses/uss_profile"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/users/:uuid', authorize.requiresAPILogin, users.profile);
/**
* @swagger
* /users/{uuid}:
* put:
* tags:
* - Users
* - Profile
* description: |
* Update profile of a specific user with given uuid.
* parameters:
* - $ref: "#/parameters/uss_uuid"
* - $ref: "#/parameters/dm_id_in_query"
* - name: profile
* in: body
* schema:
* $ref: "#/definitions/Profile"
* description: The new profile value attributes
* required: true
* responses:
* 200:
* $ref: "#/responses/us_update_profile"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.put('/users/:uuid',
authorize.requiresAPILogin,
loadFromDomainIdParameter,
authorize.requiresDomainManager,
usersMW.loadTargetUser,
authorize.requiresTargetUserIsDomainMember,
users.updateTargetUserProfile
);
/**
* @swagger
* /users:
* get:
* tags:
* - Users
* description: |
* Get the users profile from query.
* parameters:
* - $ref: "#/parameters/cm_limit"
* - $ref: "#/parameters/cm_offset"
* - $ref: "#/parameters/cm_search"
* - $ref: "#/parameters/uss_email"
* responses:
* 200:
* $ref: "#/responses/uss_profile"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/users',
authorize.requiresAPILogin,
usersMW.requireProfilesQueryParams,
usersMW.checkProfilesQueryPermission,
users.getProfilesByQuery);
/**
* @swagger
* /users/{uuid}/profile:
* get:
* tags:
* - Users
* description: |
* Get the profile of the user with given uuid, and keep trace of the user requested.
*
* If the user targeted is not the one who requested the profile, private keys are not included in the response.
*
* Private keys are : accounts.
* parameters:
* - $ref: "#/parameters/uss_uuid"
* responses:
* 200:
* $ref: "#/responses/uss_profile"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 404:
* $ref: "#/responses/cm_404"
* 500:
* $ref: "#/responses/cm_500"
*/
router.get('/users/:uuid/profile', authorize.requiresAPILogin, link.trackProfileView, users.profile);
/**
* @swagger
* /users/{uuid}/profile/avatar:
* get:
* tags:
* - Users
* description: Get the avatar of the user for the given id, or or a default avatar if no avatar defined for this user.
* parameters:
* - $ref: "#/parameters/uss_uuid"
* - $ref: "#/parameters/av_if_modified_since"
* responses:
* 200:
* $ref: "#/responses/uss_avatar"
* 304:
* $ref: "#/responses/cm_304"
* 404:
* $ref: "#/responses/cm_404"
*/
router.get('/users/:uuid/profile/avatar', usersMW.loadTargetUser, users.getTargetUserAvatar);
/**
* @swagger
* /users/{uuid}/profile/avatar:
* put:
* tags:
* - Avatar
* - User
* description: |
* Update avatar for a specific user. The updated avatar is set as the default avatar for that user.
*
* The image should be square, and at least be 128x128 px.
* parameters:
* - $ref: "#/parameters/av_mimetype"
* - $ref: "#/parameters/av_size"
* - $ref: "#/parameters/ct_raw_data"
* responses:
* 200:
* $ref: "#/responses/ct_avatar"
* 400:
* $ref: "#/responses/cm_400"
* 401:
* $ref: "#/responses/cm_401"
* 403:
* $ref: "#/responses/cm_403"
* 412:
* $ref: "#/responses/cm_412"
* 415:
* $ref: "#/responses/cm_415"
* 500:
* $ref: "#/responses/cm_500"
*/
router.put(
'/users/:uuid/profile/avatar',
authorize.requiresAPILogin,
loadFromDomainIdParameter,
authorize.requiresDomainManager,
usersMW.loadTargetUser,
authorize.requiresTargetUserIsDomainMember,
helperMW.requireInQuery(['mimetype', 'size']),
validateMIMEType(ACCEPTED_MIME_TYPES),
helperMW.requirePositiveIntegersInQuery('size'),
users.updateTargetUserAvatar
);
/**
* @swagger
* /users/{uuid}/states:
* put:
* tags:
* - Users
* - States
* description: Update states of the user for the given id
* parameters:
* - $ref: "#/parameters/uss_states"
* - $ref: "#/parameters/uss_uuid"
* - $ref: "#/parameters/dm_id_in_query"
* 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('/users/:uuid/states',
authorize.requiresAPILogin,
loadFromDomainIdParameter,
authorize.requiresDomainManager,
usersMW.loadTargetUser,
authorize.requiresTargetUserIsDomainMember,
helperMW.requireBodyAsArray,
usersMW.validateUserStates,
users.updateStates
);
};