1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-20 02:48:51 +00:00

[user-admin] add ldap imported

This commit is contained in:
lian
2015-06-26 14:05:39 +08:00
parent f33d756308
commit 85f142b0a1
10 changed files with 201 additions and 137 deletions

View File

@@ -350,7 +350,7 @@ def sys_user_admin(request):
else:
trial_users = []
for user in users:
if user.props.id == request.user.id:
if user.email == request.user.email:
user.is_self = True
_populate_user_quota_usage(user)
@@ -396,6 +396,53 @@ def sys_user_admin(request):
'pro_server': pro_server,
}, context_instance=RequestContext(request))
@login_required
@sys_staff_required
def sys_user_admin_ldap_imported(request):
"""List all users from LDAP imported.
"""
# Make sure page request is an int. If not, deliver first page.
try:
current_page = int(request.GET.get('page', '1'))
per_page = int(request.GET.get('per_page', '25'))
except ValueError:
current_page = 1
per_page = 25
users_plus_one = get_emailusers('LDAPImport', per_page * (current_page - 1), per_page + 1)
if len(users_plus_one) == per_page + 1:
page_next = True
else:
page_next = False
users = users_plus_one[:per_page]
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
for user in users:
if user.email == request.user.email:
user.is_self = True
_populate_user_quota_usage(user)
# populate user last login time
user.last_login = None
for last_login in last_logins:
if last_login.username == user.email:
user.last_login = last_login.last_login
have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False
return render_to_response(
'sysadmin/sys_user_admin_ldap_imported.html', {
'users': users,
'current_page': current_page,
'prev_page': current_page-1,
'next_page': current_page+1,
'per_page': per_page,
'page_next': page_next,
'CALC_SHARE_USAGE': CALC_SHARE_USAGE,
'have_ldap': have_ldap,
'is_pro': is_pro_version(),
}, context_instance=RequestContext(request))
@login_required
@sys_staff_required
def sys_user_admin_ldap(request):
@@ -417,7 +464,7 @@ def sys_user_admin_ldap(request):
users = users_plus_one[:per_page]
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
for user in users:
if user.props.id == request.user.id:
if user.email == request.user.email:
user.is_self = True
_populate_user_quota_usage(user)
@@ -444,13 +491,15 @@ def sys_user_admin_ldap(request):
@login_required
@sys_staff_required
def sys_user_admin_admins(request):
"""List all admins from database.
"""List all admins from database and ldap imported
"""
users = get_emailusers('DB', -1, -1)
db_users = get_emailusers('DB', -1, -1)
ldpa_imported_users = get_emailusers('LDAPImport', -1, -1)
admin_users = []
not_admin_users = []
for user in users:
for user in db_users + ldpa_imported_users:
if user.is_staff is True:
admin_users.append(user)
else:
@@ -459,16 +508,18 @@ def sys_user_admin_admins(request):
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in admin_users])
for user in admin_users:
if user.props.id == request.user.id:
if user.email == request.user.email:
user.is_self = True
_populate_user_quota_usage(user)
# check user's role
if user.role == GUEST_USER:
user.is_guest = True
else:
user.is_guest = False
# check db user's role
if user.source == "DB":
if user.role == GUEST_USER:
user.is_guest = True
else:
user.is_guest = False
# populate user last login time
user.last_login = None
for last_login in last_logins:
@@ -479,7 +530,7 @@ def sys_user_admin_admins(request):
return render_to_response(
'sysadmin/sys_useradmin_admins.html', {
'admin_users': admin_users,
'users': admin_users,
'not_admin_users': not_admin_users,
'CALC_SHARE_USAGE': CALC_SHARE_USAGE,
'have_ldap': have_ldap,
@@ -670,13 +721,13 @@ def sys_org_set_quota(request, org_id):
@login_required
@sys_staff_required
def user_remove(request, user_id):
def user_remove(request, email):
"""Remove user"""
referer = request.META.get('HTTP_REFERER', None)
next = reverse('sys_useradmin') if referer is None else referer
try:
user = User.objects.get(id=int(user_id))
user = User.objects.get(email=email)
org = ccnet_threaded_rpc.get_orgs_by_user(user.email)
if org:
if org[0].creator == user.email:
@@ -734,10 +785,10 @@ def user_make_admin(request, user_id):
@login_required
@sys_staff_required
def user_remove_admin(request, user_id):
def user_remove_admin(request, email):
"""Unset user admin."""
try:
user = User.objects.get(id=int(user_id))
user = User.objects.get(email=email)
user.is_staff = False
user.save()
messages.success(request, _(u'Successfully revoke the admin permission of %s') % user.username)
@@ -872,10 +923,10 @@ def send_user_reset_email(request, email, password):
@login_required
@sys_staff_required
def user_reset(request, user_id):
def user_reset(request, email):
"""Reset password for user."""
try:
user = User.objects.get(id=int(user_id))
user = User.objects.get(email=email)
if isinstance(INIT_PASSWD, FunctionType):
new_password = INIT_PASSWD()
else:
@@ -1163,7 +1214,7 @@ def sys_org_info_user(request, org_id):
users = org_basic_info["users"]
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
for user in users:
if user.id == request.user.id:
if user.email == request.user.email:
user.is_self = True
try:
user.self_usage =seafserv_threaded_rpc. \
@@ -1419,15 +1470,8 @@ def batch_user_make_admin(request):
failed.append(email)
continue
if user.source == 'DB':
# check if is DB user first
user.is_staff = True
user.save()
else:
# if is LDAP user, add this 'email' as a DB user first
# then set admin
ccnet_threaded_rpc.add_emailuser(email, '!', 1, 1)
user.is_staff = True
user.save()
success.append(email)
for item in success: