diff --git a/docs/upgrades/upgrade_4.8.0-4.9.0.sql b/docs/upgrades/upgrade_4.8.0-4.9.0.sql index fb1218b3b..0994f802d 100644 --- a/docs/upgrades/upgrade_4.8.0-4.9.0.sql +++ b/docs/upgrades/upgrade_4.8.0-4.9.0.sql @@ -30,4 +30,4 @@ insert into international (internationalId,languageId,namespace,message,lastUpda insert into settings (name,value) values ('smbPDC','your PDC'); insert into settings (name,value) values ('smbBDC','your BDC'); insert into settings (name,value) values ('smbDomain','your NT Domain'); - +insert into settings (name,value) values ('selfDeactivation',1); diff --git a/lib/WebGUI/Operation/Account.pm b/lib/WebGUI/Operation/Account.pm index 3a6c024e8..4052b4d59 100644 --- a/lib/WebGUI/Operation/Account.pm +++ b/lib/WebGUI/Operation/Account.pm @@ -52,8 +52,9 @@ sub _accountOptions { WebGUI::International::get(343).''; $output .= '
  • '.WebGUI::International::get(354).''; $output .= '
  • '.WebGUI::International::get(64).''; + $output .= '
  • '. - WebGUI::International::get(65).''; + WebGUI::International::get(65).'' if ($session{setting}{selfDeactivation}); $output .= ''; return $output; } @@ -241,13 +242,15 @@ sub www_deactivateAccount { $output = www_displayLogin(); } elsif ($session{user}{userId} < 26) { $output = WebGUI::Privilege::vitalComponent(); - } else { + } elsif ($session{setting}{selfDeactivation}) { $output = '

    '.WebGUI::International::get(42).'

    '; $output .= WebGUI::International::get(60).'

    '; $output .= '

    '. WebGUI::International::get(44).''; $output .= '    '.WebGUI::International::get(45).'
    '; - } + } else { + $output = WebGUI::Privilege::adminOnly(); + } return $output; } @@ -256,7 +259,7 @@ sub www_deactivateAccountConfirm { my ($u); if ($session{user}{userId} < 26) { return WebGUI::Privilege::vitalComponent(); - } elsif ($session{user}{userId} != 1) { + } elsif (($session{user}{userId} != 1) and $session{setting}{selfDeactivation}) { $u = WebGUI::User->new($session{user}{userId}); $u->delete; WebGUI::Session::end($session{var}{sessionId}); diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index 4ff9a4f10..dc2605748 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -55,6 +55,7 @@ sub www_editUserSettings { $f->interval("sessionTimeout",WebGUI::International::get(142),WebGUI::DateTime::secondsToInterval($session{setting}{sessionTimeout})); $f->select("authMethod",\%authMethod,WebGUI::International::get(119),[$session{setting}{authMethod}]); $f->yesNo("usernameBinding",WebGUI::International::get(306),$session{setting}{usernameBinding}); + $f->yesNo("selfDeactivation","Allow users to deactivate their account",$session{setting}{selfDeactivation}); foreach (@{$session{authentication}{available}}) { $cmd = "WebGUI::Authentication::".$_."::formEditUserSettings";