You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2014/09/22 12:27:53 UTC
[12/31] git commit: [#7657] ticket:651 Add ability for admin to
enable/disable account
[#7657] ticket:651 Add ability for admin to enable/disable account
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/92277f70
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/92277f70
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/92277f70
Branch: refs/heads/je/42cc_7657b
Commit: 92277f7013422a6c2ce75f78da6462fb43ddc672
Parents: fa85b3b
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Sep 16 10:41:51 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Mon Sep 22 11:14:55 2014 +0300
----------------------------------------------------------------------
Allura/allura/controllers/site_admin.py | 14 +++++++++++
Allura/allura/lib/plugin.py | 20 +++++++++++++++-
.../templates/site_admin_user_details.html | 25 ++++++++++++++++++++
3 files changed, 58 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/92277f70/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 4d0ca2d..063dd99 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -508,6 +508,20 @@ class AdminUserDetailsController(object):
flash('Can not add comment "%s" for user %s' % (comment, user))
redirect(request.referer)
+ @expose()
+ @require_post()
+ def set_status(self, username=None, status=None):
+ user = M.User.by_username(username)
+ if not user:
+ raise HTTPNotFound()
+ if status == 'enable' and user.disabled:
+ AuthenticationProvider.get(request).enable_user(user)
+ flash('User enabled')
+ elif status == 'disable' and not user.disabled:
+ AuthenticationProvider.get(request).disable_user(user)
+ flash('User disabled')
+ redirect(request.referer)
+
class StatsSiteAdminExtension(SiteAdminExtension):
controllers = {'stats': StatsController}
http://git-wip-us.apache.org/repos/asf/allura/blob/92277f70/Allura/allura/lib/plugin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index 78aae92..1186cf6 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -179,6 +179,10 @@ class AuthenticationProvider(object):
'''Disable user account'''
raise NotImplementedError, 'disable_user'
+ def enable_user(self, user):
+ '''Enable user account'''
+ raise NotImplementedError, 'enable_user'
+
def by_username(self, username):
'''
Find a user by username.
@@ -324,7 +328,18 @@ class LocalAuthenticationProvider(AuthenticationProvider):
def disable_user(self, user):
user.disabled = True
session(user).flush(user)
- h.auditlog_user('Account disabled', user=user)
+ suffix = u''
+ if user != c.user:
+ suffix = u' by %s' % c.user.username
+ h.auditlog_user(u'Account disabled' + suffix, user=user)
+
+ def enable_user(self, user):
+ user.disabled = False
+ session(user).flush(user)
+ suffix = u''
+ if user != c.user:
+ suffix = u' by %s' % c.user.username
+ h.auditlog_user(u'Account enabled' + suffix, user=user)
def validate_password(self, user, password):
return self._validate_password(user, password)
@@ -566,6 +581,9 @@ class LdapAuthenticationProvider(AuthenticationProvider):
def disable_user(self, user):
return LocalAuthenticationProvider(None).disable_user(user)
+ def enable_user(self, user):
+ return LocalAuthenticationProvider(None).enable_user(user)
+
def get_last_password_updated(self, user):
return LocalAuthenticationProvider(None).get_last_password_updated(user)
http://git-wip-us.apache.org/repos/asf/allura/blob/92277f70/Allura/allura/templates/site_admin_user_details.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/site_admin_user_details.html b/Allura/allura/templates/site_admin_user_details.html
index bfd17e7..e6eab2a 100644
--- a/Allura/allura/templates/site_admin_user_details.html
+++ b/Allura/allura/templates/site_admin_user_details.html
@@ -28,11 +28,24 @@
<div class="grid-23">
<fieldset>
<legend>General</legend>
+ <div class="grid-19">
<ul>
<li>Username: {{ user.username }} (<a href="{{ user.url() }}">Go to profile page</a>)</li>
<li>Full name: {{ user.get_pref('display_name') }}</li>
<li>Registered: {{ user.registration_date() }} ({{ h.ago(user.registration_date()) }})</li>
</ul>
+ </div>
+
+ <div class="grid-3">
+ <form action='/nf/admin/user/set_status' method="POST">
+ <div class='grid-3'>
+ <label><input type="radio" name="status" value="enable"{% if not user.disabled %} checked="checked"{% endif %}>Enabled</label><br>
+ <label><input type="radio" name="status" value="disable"{% if user.disabled %} checked="checked"{% endif %}>Disabled</label>
+ </div>
+ <input type='hidden' name='username' value='{{ user.username }}'>
+ {{lib.csrf_token()}}
+ </form>
+ </div>
</fieldset>
</div>
{% endblock general_info %}
@@ -108,3 +121,15 @@
}
</style>
{% endblock %}
+
+{% block extra_js %}
+{{ super() }}
+<script>
+$(document).ready(function() {
+ // enabled/disabled change
+ $('input[name="status"]').change(function(e) {
+ $(this).parents('form').submit();
+ });
+});
+</script>
+{% endblock %}