Browse Source

Add admin setting to prevent users to self deleting their account

guillaume 5 years ago
parent
commit
98e3b0ce77

+ 8 - 0
client/components/settings/settingBody.jade

@@ -113,6 +113,14 @@ template(name='accountSettings')
         span {{_ 'yes'}}
         input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="false" checked="{{#unless allowUserNameChange}}checked{{/unless}}")
         span {{_ 'no'}}
+    li
+    li.accounts-form
+      .title {{_ 'accounts-allowUserDelete'}}
+      .form-group.flex
+        input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="true" checked="{{#if allowUserDelete}}checked{{/if}}")
+        span {{_ 'yes'}}
+        input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="false" checked="{{#unless allowUserDelete}}checked{{/unless}}")
+        span {{_ 'no'}}
     li
       button.js-accounts-save.primary {{_ 'save'}}
 

+ 8 - 0
client/components/settings/settingBody.js

@@ -233,12 +233,17 @@ BlazeComponent.extendComponent({
       $('input[name=allowEmailChange]:checked').val() === 'true';
     const allowUserNameChange =
       $('input[name=allowUserNameChange]:checked').val() === 'true';
+    const allowUserDelete =
+      $('input[name=allowUserDelete]:checked').val() === 'true';
     AccountSettings.update('accounts-allowEmailChange', {
       $set: { booleanValue: allowEmailChange },
     });
     AccountSettings.update('accounts-allowUserNameChange', {
       $set: { booleanValue: allowUserNameChange },
     });
+    AccountSettings.update('accounts-allowUserDelete', {
+      $set: { booleanValue: allowUserDelete },
+    });
   },
 
   allowEmailChange() {
@@ -247,6 +252,9 @@ BlazeComponent.extendComponent({
   allowUserNameChange() {
     return AccountSettings.findOne('accounts-allowUserNameChange').booleanValue;
   },
+  allowUserDelete() {
+    return AccountSettings.findOne('accounts-allowUserDelete').booleanValue;
+  },
 
   events() {
     return [

+ 3 - 2
client/components/users/userHeader.jade

@@ -55,8 +55,9 @@ template(name="editProfilePopup")
         input.js-profile-email(type="email" value="{{emails.[0].address}}" readonly)
     div.buttonsContainer
       input.primary.wide(type="submit" value="{{_ 'save'}}")
-      div
-      input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
+      if allowUserDelete
+        div
+        input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
 
 template(name="changePasswordPopup")
   +atForm(state='changePwd')

+ 3 - 0
client/components/users/userHeader.js

@@ -35,6 +35,9 @@ Template.editProfilePopup.helpers({
   allowUserNameChange() {
     return AccountSettings.findOne('accounts-allowUserNameChange').booleanValue;
   },
+  allowUserDelete() {
+    return AccountSettings.findOne('accounts-allowUserDelete').booleanValue;
+  },
 });
 
 Template.editProfilePopup.events({

+ 9 - 0
models/accountSettings.js

@@ -68,6 +68,15 @@ if (Meteor.isServer) {
         },
       },
     );
+    AccountSettings.upsert(
+      { _id: 'accounts-allowUserDelete' },
+      {
+        $setOnInsert: {
+          booleanValue: false,
+          sort: 0,
+        },
+      },
+    );
   });
 }