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/17 15:34:12 UTC
[25/35] 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/b82cd93b
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/b82cd93b
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/b82cd93b
Branch: refs/heads/je/42cc_7657
Commit: b82cd93b3424a20ef1870241ae86950c597a4946
Parents: 57fcd18
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Sep 16 10:41:51 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Wed Sep 17 16:11:37 2014 +0300
----------------------------------------------------------------------
Allura/allura/controllers/site_admin.py | 16 ++++++++++++-
Allura/allura/lib/plugin.py | 20 +++++++++++++++-
.../templates/site_admin_user_details.html | 25 ++++++++++++++++++++
3 files changed, 59 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/b82cd93b/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 105de94..c0d9bc8 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -34,7 +34,7 @@ from allura.app import SitemapEntry
from allura.lib import helpers as h
from allura.lib import validators as v
from allura.lib.decorators import require_post
-from allura.lib.plugin import SiteAdminExtension, ProjectRegistrationProvider
+from allura.lib.plugin import SiteAdminExtension, ProjectRegistrationProvider, AuthenticationProvider
from allura.lib import search
from allura.lib.security import require_access
from allura.lib.widgets import form_fields as ffw
@@ -480,6 +480,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/b82cd93b/Allura/allura/lib/plugin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index 8537f63..1b618e2 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.
@@ -310,7 +314,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)
@@ -548,6 +563,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/b82cd93b/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 c6936f6..8ffe9a5 100644
--- a/Allura/allura/templates/site_admin_user_details.html
+++ b/Allura/allura/templates/site_admin_user_details.html
@@ -27,11 +27,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 %}
@@ -107,3 +120,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 %}