keigo-h 3 лет назад
Родитель
Сommit
223e3fb03a

+ 48 - 0
packages/app/src/interfaces/activity.ts

@@ -48,13 +48,29 @@ const ACTION_ADMIN_SECURITY_SETTINGS_UPDATE = 'ADMIN_SECURITY_SETTINGS_UPDATE';
 const ACTION_ADMIN_PERMIT_SHARE_LINK = 'ADMIN_PERMIT_SHARE_LINK';
 const ACTION_ADMIN_REJECT_SHARE_LINK = 'ADMIN_REJECT_SHARE_LINK';
 const ACTION_ADMIN_DELETE_ALL_SHARE_LINK = 'ADMIN_DELETE_ALL_SHARE_LINK';
+const ACTION_ADMIN_AUTH_ID_PASS_ENABLED = 'ADMIN_AUTH_ID_PASS_ENABLED';
+const ACTION_ADMIN_AUTH_ID_PASS_DISABLED = 'ADMIN_AUTH_ID_PASS_DISABLED';
 const ACTION_ADMIN_AUTH_ID_PASS_UPDATE = 'ADMIN_AUTH_ID_PASS_UPDATE';
+const ACTION_ADMIN_AUTH_LDAP_ENABLED = 'ADMIN_AUTH_LDAP_ENABLED';
+const ACTION_ADMIN_AUTH_LDAP_DISABLED = 'ADMIN_AUTH_LDAP_DISABLED';
 const ACTION_ADMIN_AUTH_LDAP_UPDATE = 'ADMIN_AUTH_LDAP_UPDATE';
+const ACTION_ADMIN_AUTH_SAML_ENABLED = 'ADMIN_AUTH_SAML_ENABLED';
+const ACTION_ADMIN_AUTH_SAML_DISABLED = 'ADMIN_AUTH_SAML_DISABLED';
 const ACTION_ADMIN_AUTH_SAML_UPDATE = 'ADMIN_AUTH_SAML_UPDATE';
+const ACTION_ADMIN_AUTH_OIDC_ENABLED = 'ADMIN_AUTH_OIDC_ENABLED';
+const ACTION_ADMIN_AUTH_OIDC_DISABLED = 'ADMIN_AUTH_OIDC_DISABLED';
 const ACTION_ADMIN_AUTH_OIDC_UPDATE = 'ADMIN_AUTH_OIDC_UPDATE';
+const ACTION_ADMIN_AUTH_BASIC_ENABLED = 'ADMIN_AUTH_BASIC_ENABLED';
+const ACTION_ADMIN_AUTH_BASIC_DISABLED = 'ADMIN_AUTH_BASIC_DISABLED';
 const ACTION_ADMIN_AUTH_BASIC_UPDATE = 'ADMIN_AUTH_BASIC_UPDATE';
+const ACTION_ADMIN_AUTH_GOOGLE_ENABLED = 'ADMIN_AUTH_GOOGLE_ENABLED';
+const ACTION_ADMIN_AUTH_GOOGLE_DISABLED = 'ADMIN_AUTH_GOOGLE_DISABLED';
 const ACTION_ADMIN_AUTH_GOOGLE_UPDATE = 'ADMIN_AUTH_GOOGLE_UPDATE';
+const ACTION_ADMIN_AUTH_GITHUB_ENABLED = 'ADMIN_AUTH_GITHUB_ENABLED';
+const ACTION_ADMIN_AUTH_GITHUB_DISABLED = 'ADMIN_AUTH_GITHUB_DISABLED';
 const ACTION_ADMIN_AUTH_GITHUB_UPDATE = 'ADMIN_AUTH_GITHUB_UPDATE';
+const ACTION_ADMIN_AUTH_TWITTER_ENABLED = 'ADMIN_AUTH_TWITTER_ENABLED';
+const ACTION_ADMIN_AUTH_TWITTER_DISABLED = 'ADMIN_AUTH_TWITTER_DISABLED';
 const ACTION_ADMIN_AUTH_TWITTER_UPDATE = 'ADMIN_AUTH_TWITTER_UPDATE';
 const ACTION_ADMIN_LINE_BREAK_UPDATE = 'ADMIN_LINE_BREAK_UPDATE';
 const ACTION_ADMIN_LAYOUT_UPDATE = 'ADMIN_LAYOUT_UPDATE';
@@ -122,13 +138,29 @@ export const SupportedAction = {
   ACTION_ADMIN_PERMIT_SHARE_LINK,
   ACTION_ADMIN_REJECT_SHARE_LINK,
   ACTION_ADMIN_DELETE_ALL_SHARE_LINK,
+  ACTION_ADMIN_AUTH_ID_PASS_ENABLED,
+  ACTION_ADMIN_AUTH_ID_PASS_DISABLED,
   ACTION_ADMIN_AUTH_ID_PASS_UPDATE,
+  ACTION_ADMIN_AUTH_LDAP_ENABLED,
+  ACTION_ADMIN_AUTH_LDAP_DISABLED,
   ACTION_ADMIN_AUTH_LDAP_UPDATE,
+  ACTION_ADMIN_AUTH_SAML_ENABLED,
+  ACTION_ADMIN_AUTH_SAML_DISABLED,
   ACTION_ADMIN_AUTH_SAML_UPDATE,
+  ACTION_ADMIN_AUTH_OIDC_ENABLED,
+  ACTION_ADMIN_AUTH_OIDC_DISABLED,
   ACTION_ADMIN_AUTH_OIDC_UPDATE,
+  ACTION_ADMIN_AUTH_BASIC_ENABLED,
+  ACTION_ADMIN_AUTH_BASIC_DISABLED,
   ACTION_ADMIN_AUTH_BASIC_UPDATE,
+  ACTION_ADMIN_AUTH_GOOGLE_ENABLED,
+  ACTION_ADMIN_AUTH_GOOGLE_DISABLED,
   ACTION_ADMIN_AUTH_GOOGLE_UPDATE,
+  ACTION_ADMIN_AUTH_GITHUB_ENABLED,
+  ACTION_ADMIN_AUTH_GITHUB_DISABLED,
   ACTION_ADMIN_AUTH_GITHUB_UPDATE,
+  ACTION_ADMIN_AUTH_TWITTER_ENABLED,
+  ACTION_ADMIN_AUTH_TWITTER_DISABLED,
   ACTION_ADMIN_AUTH_TWITTER_UPDATE,
   ACTION_ADMIN_LINE_BREAK_UPDATE,
   ACTION_ADMIN_LAYOUT_UPDATE,
@@ -216,13 +248,29 @@ export const LargeActionGroup = {
   ACTION_ADMIN_PERMIT_SHARE_LINK,
   ACTION_ADMIN_REJECT_SHARE_LINK,
   ACTION_ADMIN_DELETE_ALL_SHARE_LINK,
+  ACTION_ADMIN_AUTH_ID_PASS_ENABLED,
+  ACTION_ADMIN_AUTH_ID_PASS_DISABLED,
   ACTION_ADMIN_AUTH_ID_PASS_UPDATE,
+  ACTION_ADMIN_AUTH_LDAP_ENABLED,
+  ACTION_ADMIN_AUTH_LDAP_DISABLED,
   ACTION_ADMIN_AUTH_LDAP_UPDATE,
+  ACTION_ADMIN_AUTH_SAML_ENABLED,
+  ACTION_ADMIN_AUTH_SAML_DISABLED,
   ACTION_ADMIN_AUTH_SAML_UPDATE,
+  ACTION_ADMIN_AUTH_OIDC_ENABLED,
+  ACTION_ADMIN_AUTH_OIDC_DISABLED,
   ACTION_ADMIN_AUTH_OIDC_UPDATE,
+  ACTION_ADMIN_AUTH_BASIC_ENABLED,
+  ACTION_ADMIN_AUTH_BASIC_DISABLED,
   ACTION_ADMIN_AUTH_BASIC_UPDATE,
+  ACTION_ADMIN_AUTH_GOOGLE_ENABLED,
+  ACTION_ADMIN_AUTH_GOOGLE_DISABLED,
   ACTION_ADMIN_AUTH_GOOGLE_UPDATE,
+  ACTION_ADMIN_AUTH_GITHUB_ENABLED,
+  ACTION_ADMIN_AUTH_GITHUB_DISABLED,
   ACTION_ADMIN_AUTH_GITHUB_UPDATE,
+  ACTION_ADMIN_AUTH_TWITTER_ENABLED,
+  ACTION_ADMIN_AUTH_TWITTER_DISABLED,
   ACTION_ADMIN_AUTH_TWITTER_UPDATE,
   ACTION_ADMIN_LINE_BREAK_UPDATE,
   ACTION_ADMIN_LAYOUT_UPDATE,

+ 63 - 2
packages/app/src/server/routes/apiv3/security-setting.js

@@ -511,11 +511,14 @@ module.exports = (crowi) => {
    *                  type: object
    *                  description: updated param
    */
-  router.put('/authentication/enabled', loginRequiredStrictly, adminRequired, csrf, validator.authenticationSetting, apiV3FormValidator, async(req, res) => {
+  // eslint-disable-next-line max-len
+  router.put('/authentication/enabled', loginRequiredStrictly, adminRequired, csrf, addActivity, validator.authenticationSetting, apiV3FormValidator, async(req, res) => {
     const { isEnabled, authId } = req.body;
 
     let setupStrategies = await crowi.passportService.getSetupStrategies();
 
+    const parameters = {};
+
     // Reflect request param
     setupStrategies = setupStrategies.filter(strategy => strategy !== authId);
 
@@ -531,7 +534,65 @@ module.exports = (crowi) => {
       const responseParams = {
         [`security:passport-${authId}:isEnabled`]: await crowi.configManager.getConfig('crowi', `security:passport-${authId}:isEnabled`),
       };
-
+      switch (authId) {
+        case 'local':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_ID_PASS_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_ID_PASS_DISABLED;
+          break;
+        case 'ldap':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_LDAP_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_LDAP_DISABLED;
+          break;
+        case 'saml':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_SAML_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_SAML_DISABLED;
+          break;
+        case 'oidc':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_OIDC_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_OIDC_DISABLED;
+          break;
+        case 'basic':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_BASIC_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_BASIC_DISABLED;
+          break;
+        case 'google':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_GOOGLE_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_GOOGLE_DISABLED;
+          break;
+        case 'github':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_GITHUB_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_GITHUB_DISABLED;
+          break;
+        case 'twitter':
+          if (isEnabled) {
+            parameters.action = SupportedAction.ACTION_ADMIN_AUTH_TWITTER_ENABLED;
+            break;
+          }
+          parameters.action = SupportedAction.ACTION_ADMIN_AUTH_TWITTER_DISABLED;
+          break;
+      }
+      activityEvent.emit('update', res.locals.activity._id, parameters);
       return res.apiv3({ responseParams });
     }
     catch (err) {