|
|
@@ -213,11 +213,15 @@ module.exports = (crowi) => {
|
|
|
* type: object
|
|
|
* description: deleted notification
|
|
|
*/
|
|
|
- router.delete('/user-notification/:id', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
|
|
|
+ router.delete('/user-notification/:id', loginRequiredStrictly, adminRequired, csrf, addActivity, async(req, res) => {
|
|
|
const { id } = req.params;
|
|
|
|
|
|
try {
|
|
|
const deletedNotificaton = await UpdatePost.findOneAndRemove({ _id: id });
|
|
|
+
|
|
|
+ const parameters = { action: SupportedAction.ACTION_ADMIN_USER_NOTIFICATION_SETTINGS_DELETE };
|
|
|
+ activityEvent.emit('update', res.locals.activity._id, parameters);
|
|
|
+
|
|
|
return res.apiv3(deletedNotificaton);
|
|
|
}
|
|
|
catch (err) {
|
|
|
@@ -253,37 +257,43 @@ module.exports = (crowi) => {
|
|
|
* type: object
|
|
|
* description: notification param created
|
|
|
*/
|
|
|
- router.post('/global-notification', loginRequiredStrictly, adminRequired, csrf, validator.globalNotification, apiV3FormValidator, async(req, res) => {
|
|
|
+ router.post(
|
|
|
+ '/global-notification', loginRequiredStrictly, adminRequired, csrf, addActivity, validator.globalNotification, apiV3FormValidator, async(req, res) => {
|
|
|
|
|
|
- const {
|
|
|
- notifyToType, toEmail, slackChannels, triggerPath, triggerEvents,
|
|
|
- } = req.body;
|
|
|
+ const {
|
|
|
+ notifyToType, toEmail, slackChannels, triggerPath, triggerEvents,
|
|
|
+ } = req.body;
|
|
|
|
|
|
- let notification;
|
|
|
+ let notification;
|
|
|
|
|
|
- if (notifyToType === GlobalNotificationSetting.TYPE.MAIL) {
|
|
|
- notification = new GlobalNotificationMailSetting(crowi);
|
|
|
- notification.toEmail = toEmail;
|
|
|
- }
|
|
|
- if (notifyToType === GlobalNotificationSetting.TYPE.SLACK) {
|
|
|
- notification = new GlobalNotificationSlackSetting(crowi);
|
|
|
- notification.slackChannels = slackChannels;
|
|
|
- }
|
|
|
+ if (notifyToType === GlobalNotificationSetting.TYPE.MAIL) {
|
|
|
+ notification = new GlobalNotificationMailSetting(crowi);
|
|
|
+ notification.toEmail = toEmail;
|
|
|
+ }
|
|
|
+ if (notifyToType === GlobalNotificationSetting.TYPE.SLACK) {
|
|
|
+ notification = new GlobalNotificationSlackSetting(crowi);
|
|
|
+ notification.slackChannels = slackChannels;
|
|
|
+ }
|
|
|
|
|
|
- notification.triggerPath = triggerPath;
|
|
|
- notification.triggerEvents = triggerEvents || [];
|
|
|
+ notification.triggerPath = triggerPath;
|
|
|
+ notification.triggerEvents = triggerEvents || [];
|
|
|
|
|
|
- try {
|
|
|
- const createdNotification = await notification.save();
|
|
|
- return res.apiv3({ createdNotification }, 201);
|
|
|
- }
|
|
|
- catch (err) {
|
|
|
- const msg = 'Error occurred in updating global notification';
|
|
|
- logger.error('Error', err);
|
|
|
- return res.apiv3Err(new ErrorV3(msg, 'post-globalNotification-failed'));
|
|
|
- }
|
|
|
+ try {
|
|
|
+ const createdNotification = await notification.save();
|
|
|
|
|
|
- });
|
|
|
+ const parameters = { action: SupportedAction.ACTION_ADMIN_GLOBAL_NOTIFICATION_SETTINGS_ADD };
|
|
|
+ activityEvent.emit('update', res.locals.activity._id, parameters);
|
|
|
+
|
|
|
+ return res.apiv3({ createdNotification }, 201);
|
|
|
+ }
|
|
|
+ catch (err) {
|
|
|
+ const msg = 'Error occurred in updating global notification';
|
|
|
+ logger.error('Error', err);
|
|
|
+ return res.apiv3Err(new ErrorV3(msg, 'post-globalNotification-failed'));
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ );
|
|
|
|
|
|
/**
|
|
|
* @swagger
|
|
|
@@ -316,54 +326,60 @@ module.exports = (crowi) => {
|
|
|
* type: object
|
|
|
* description: notification param updated
|
|
|
*/
|
|
|
- router.put('/global-notification/:id', loginRequiredStrictly, adminRequired, csrf, validator.globalNotification, apiV3FormValidator, async(req, res) => {
|
|
|
- const { id } = req.params;
|
|
|
- const {
|
|
|
- notifyToType, toEmail, slackChannels, triggerPath, triggerEvents,
|
|
|
- } = req.body;
|
|
|
-
|
|
|
- const models = {
|
|
|
- [GlobalNotificationSetting.TYPE.MAIL]: GlobalNotificationMailSetting,
|
|
|
- [GlobalNotificationSetting.TYPE.SLACK]: GlobalNotificationSlackSetting,
|
|
|
- };
|
|
|
+ router.put(
|
|
|
+ '/global-notification/:id', loginRequiredStrictly, adminRequired, csrf, addActivity, validator.globalNotification, apiV3FormValidator, async(req, res) => {
|
|
|
+ const { id } = req.params;
|
|
|
+ const {
|
|
|
+ notifyToType, toEmail, slackChannels, triggerPath, triggerEvents,
|
|
|
+ } = req.body;
|
|
|
+
|
|
|
+ const models = {
|
|
|
+ [GlobalNotificationSetting.TYPE.MAIL]: GlobalNotificationMailSetting,
|
|
|
+ [GlobalNotificationSetting.TYPE.SLACK]: GlobalNotificationSlackSetting,
|
|
|
+ };
|
|
|
|
|
|
- try {
|
|
|
- let setting = await GlobalNotificationSetting.findOne({ _id: id });
|
|
|
- setting = setting.toObject();
|
|
|
-
|
|
|
- // when switching from one type to another,
|
|
|
- // remove toEmail from slack setting and slackChannels from mail setting
|
|
|
- if (setting.__t !== notifyToType) {
|
|
|
- setting = models[setting.__t].hydrate(setting);
|
|
|
- setting.toEmail = undefined;
|
|
|
- setting.slackChannels = undefined;
|
|
|
- await setting.save();
|
|
|
+ try {
|
|
|
+ let setting = await GlobalNotificationSetting.findOne({ _id: id });
|
|
|
setting = setting.toObject();
|
|
|
- }
|
|
|
|
|
|
- if (notifyToType === GlobalNotificationSetting.TYPE.MAIL) {
|
|
|
- setting = GlobalNotificationMailSetting.hydrate(setting);
|
|
|
- setting.toEmail = toEmail;
|
|
|
+ // when switching from one type to another,
|
|
|
+ // remove toEmail from slack setting and slackChannels from mail setting
|
|
|
+ if (setting.__t !== notifyToType) {
|
|
|
+ setting = models[setting.__t].hydrate(setting);
|
|
|
+ setting.toEmail = undefined;
|
|
|
+ setting.slackChannels = undefined;
|
|
|
+ await setting.save();
|
|
|
+ setting = setting.toObject();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (notifyToType === GlobalNotificationSetting.TYPE.MAIL) {
|
|
|
+ setting = GlobalNotificationMailSetting.hydrate(setting);
|
|
|
+ setting.toEmail = toEmail;
|
|
|
+ }
|
|
|
+ if (notifyToType === GlobalNotificationSetting.TYPE.SLACK) {
|
|
|
+ setting = GlobalNotificationSlackSetting.hydrate(setting);
|
|
|
+ setting.slackChannels = slackChannels;
|
|
|
+ }
|
|
|
+
|
|
|
+ setting.__t = notifyToType;
|
|
|
+ setting.triggerPath = triggerPath;
|
|
|
+ setting.triggerEvents = triggerEvents || [];
|
|
|
+
|
|
|
+ const createdNotification = await setting.save();
|
|
|
+
|
|
|
+ const parameters = { action: SupportedAction.ACTION_ADMIN_GLOBAL_NOTIFICATION_SETTINGS_UPDATE };
|
|
|
+ activityEvent.emit('update', res.locals.activity._id, parameters);
|
|
|
+
|
|
|
+ return res.apiv3({ createdNotification });
|
|
|
}
|
|
|
- if (notifyToType === GlobalNotificationSetting.TYPE.SLACK) {
|
|
|
- setting = GlobalNotificationSlackSetting.hydrate(setting);
|
|
|
- setting.slackChannels = slackChannels;
|
|
|
+ catch (err) {
|
|
|
+ const msg = 'Error occurred in updating global notification';
|
|
|
+ logger.error('Error', err);
|
|
|
+ return res.apiv3Err(new ErrorV3(msg, 'post-globalNotification-failed'));
|
|
|
}
|
|
|
|
|
|
- setting.__t = notifyToType;
|
|
|
- setting.triggerPath = triggerPath;
|
|
|
- setting.triggerEvents = triggerEvents || [];
|
|
|
-
|
|
|
- const createdNotification = await setting.save();
|
|
|
- return res.apiv3({ createdNotification });
|
|
|
- }
|
|
|
- catch (err) {
|
|
|
- const msg = 'Error occurred in updating global notification';
|
|
|
- logger.error('Error', err);
|
|
|
- return res.apiv3Err(new ErrorV3(msg, 'post-globalNotification-failed'));
|
|
|
- }
|
|
|
-
|
|
|
- });
|
|
|
+ },
|
|
|
+ );
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -387,29 +403,36 @@ module.exports = (crowi) => {
|
|
|
* schema:
|
|
|
* $ref: '#/components/schemas/NotifyForPageGrant'
|
|
|
*/
|
|
|
- router.put('/notify-for-page-grant', loginRequiredStrictly, adminRequired, csrf, validator.notifyForPageGrant, apiV3FormValidator, async(req, res) => {
|
|
|
+ router.put(
|
|
|
+ '/notify-for-page-grant', loginRequiredStrictly, adminRequired, csrf, addActivity, validator.notifyForPageGrant, apiV3FormValidator, async(req, res) => {
|
|
|
|
|
|
- let requestParams = {
|
|
|
- 'notification:owner-page:isEnabled': req.body.isNotificationForOwnerPageEnabled,
|
|
|
- 'notification:group-page:isEnabled': req.body.isNotificationForGroupPageEnabled,
|
|
|
- };
|
|
|
+ let requestParams = {
|
|
|
+ 'notification:owner-page:isEnabled': req.body.isNotificationForOwnerPageEnabled,
|
|
|
+ 'notification:group-page:isEnabled': req.body.isNotificationForGroupPageEnabled,
|
|
|
+ };
|
|
|
|
|
|
- requestParams = removeNullPropertyFromObject(requestParams);
|
|
|
+ requestParams = removeNullPropertyFromObject(requestParams);
|
|
|
|
|
|
- try {
|
|
|
- await crowi.configManager.updateConfigsInTheSameNamespace('notification', requestParams);
|
|
|
- const responseParams = {
|
|
|
- isNotificationForOwnerPageEnabled: await crowi.configManager.getConfig('notification', 'notification:owner-page:isEnabled'),
|
|
|
- isNotificationForGroupPageEnabled: await crowi.configManager.getConfig('notification', 'notification:group-page:isEnabled'),
|
|
|
- };
|
|
|
- return res.apiv3({ responseParams });
|
|
|
- }
|
|
|
- catch (err) {
|
|
|
- const msg = 'Error occurred in updating notify for page grant';
|
|
|
- logger.error('Error', err);
|
|
|
- return res.apiv3Err(new ErrorV3(msg, 'update-notify-for-page-grant-failed'));
|
|
|
- }
|
|
|
- });
|
|
|
+ try {
|
|
|
+ await crowi.configManager.updateConfigsInTheSameNamespace('notification', requestParams);
|
|
|
+ const responseParams = {
|
|
|
+ isNotificationForOwnerPageEnabled: await crowi.configManager.getConfig('notification', 'notification:owner-page:isEnabled'),
|
|
|
+ isNotificationForGroupPageEnabled: await crowi.configManager.getConfig('notification', 'notification:group-page:isEnabled'),
|
|
|
+ };
|
|
|
+
|
|
|
+ const parameters = { action: SupportedAction.ACTION_ADMIN_NOTIFICATION_GRANT_SETTINGS_UPDATE };
|
|
|
+ activityEvent.emit('update', res.locals.activity._id, parameters);
|
|
|
+
|
|
|
+ return res.apiv3({ responseParams });
|
|
|
+ }
|
|
|
+ catch (err) {
|
|
|
+ const msg = 'Error occurred in updating notify for page grant';
|
|
|
+ logger.error('Error', err);
|
|
|
+ return res.apiv3Err(new ErrorV3(msg, 'update-notify-for-page-grant-failed'));
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ );
|
|
|
/**
|
|
|
* @swagger
|
|
|
*
|
|
|
@@ -444,18 +467,23 @@ module.exports = (crowi) => {
|
|
|
* type: object
|
|
|
* description: notification id for updated
|
|
|
*/
|
|
|
- router.put('/global-notification/:id/enabled', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
|
|
|
+ router.put('/global-notification/:id/enabled', loginRequiredStrictly, adminRequired, csrf, addActivity, async(req, res) => {
|
|
|
const { id } = req.params;
|
|
|
const { isEnabled } = req.body;
|
|
|
+ const parameters = {};
|
|
|
|
|
|
try {
|
|
|
if (isEnabled) {
|
|
|
await GlobalNotificationSetting.enable(id);
|
|
|
+ parameters.action = SupportedAction.ACTION_ADMIN_GLOBAL_NOTIFICATION_SETTINGS_ENABLED;
|
|
|
}
|
|
|
else {
|
|
|
await GlobalNotificationSetting.disable(id);
|
|
|
+ parameters.action = SupportedAction.ACTION_ADMIN_GLOBAL_NOTIFICATION_SETTINGS_DISABLED;
|
|
|
}
|
|
|
|
|
|
+ activityEvent.emit('update', res.locals.activity._id, parameters);
|
|
|
+
|
|
|
return res.apiv3({ id });
|
|
|
|
|
|
}
|
|
|
@@ -492,11 +520,15 @@ module.exports = (crowi) => {
|
|
|
* type: object
|
|
|
* description: deleted notification
|
|
|
*/
|
|
|
- router.delete('/global-notification/:id', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
|
|
|
+ router.delete('/global-notification/:id', loginRequiredStrictly, adminRequired, csrf, addActivity, async(req, res) => {
|
|
|
const { id } = req.params;
|
|
|
|
|
|
try {
|
|
|
const deletedNotificaton = await GlobalNotificationSetting.findOneAndRemove({ _id: id });
|
|
|
+
|
|
|
+ const parameters = { action: SupportedAction.ACTION_ADMIN_GLOBAL_NOTIFICATION_SETTINGS_DELETE };
|
|
|
+ activityEvent.emit('update', res.locals.activity._id, parameters);
|
|
|
+
|
|
|
return res.apiv3(deletedNotificaton);
|
|
|
}
|
|
|
catch (err) {
|