def user_remove(request, user_id): """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)) org = ccnet_threaded_rpc.get_orgs_by_user(user.email) if org: if org[0].creator == user.email: messages.error( request, _(u'Failed to delete: the user is an organization creator') ) return HttpResponseRedirect(next) org_id = org[0].org_id org_user_repos = seafile_api.get_org_owned_repo_list( org_id, user.email) for repo in org_user_repos: seafile_api.remove_repo(repo.id) user.delete() clear_token(user.email) messages.success(request, _(u'Successfully deleted %s') % user.username) except User.DoesNotExist: messages.error(request, _(u'Failed to delete: the user does not exist')) return HttpResponseRedirect(next)
def delete(self): """ When delete user, we should also delete group relationships. """ if self.source == "DB": source = "DB" else: source = "LDAP" owned_repos = [] orgs = ccnet_threaded_rpc.get_orgs_by_user(self.username) if orgs: for org in orgs: owned_repos += seafile_api.get_org_owned_repo_list(org.org_id, self.username) else: owned_repos += seafile_api.get_owned_repo_list(self.username) for r in owned_repos: seafile_api.remove_repo(r.id) clear_token(self.username) # remove current user from joined groups ccnet_api.remove_group_user(self.username) ccnet_api.remove_emailuser(source, self.username) Profile.objects.delete_profile_by_user(self.username)
def save(self): emailuser = ccnet_threaded_rpc.get_emailuser(self.username) if emailuser: if not hasattr(self, 'password'): self.set_unusable_password() if emailuser.source == "DB": source = "DB" else: source = "LDAP" if not self.is_active: # clear web api and repo sync token # when inactive an user try: clear_token(self.username) except Exception as e: logger.error(e) result_code = ccnet_threaded_rpc.update_emailuser( source, emailuser.id, self.password, int(self.is_staff), int(self.is_active)) else: result_code = ccnet_threaded_rpc.add_emailuser( self.username, self.password, int(self.is_staff), int(self.is_active)) # -1 stands for failed; 0 stands for success return result_code
def delete(self): """ When delete user, we should also delete group relationships. """ if self.source == "DB": source = "DB" else: source = "LDAP" username = self.username orgs = [] if is_pro_version(): orgs = ccnet_api.get_orgs_by_user(username) # remove owned repos owned_repos = [] if orgs: for org in orgs: owned_repos += seafile_api.get_org_owned_repo_list( org.org_id, username) else: owned_repos += seafile_api.get_owned_repo_list(username) for r in owned_repos: seafile_api.remove_repo(r.id) # remove shared in repos shared_in_repos = [] if orgs: for org in orgs: org_id = org.org_id shared_in_repos = seafile_api.get_org_share_in_repo_list( org_id, username, -1, -1) for r in shared_in_repos: seafile_api.org_remove_share(org_id, r.repo_id, r.user, username) else: shared_in_repos = seafile_api.get_share_in_repo_list( username, -1, -1) for r in shared_in_repos: seafile_api.remove_share(r.repo_id, r.user, username) ExtraSharePermission.objects.filter(share_to=username).delete() # clear web api and repo sync token # when delete user try: clear_token(self.username) except Exception as e: logger.error(e) # remove current user from joined groups ccnet_api.remove_group_user(username) ccnet_api.remove_emailuser(source, username) Profile.objects.delete_profile_by_user(username) if settings.ENABLE_TERMS_AND_CONDITIONS: from termsandconditions.models import UserTermsAndConditions UserTermsAndConditions.objects.filter(username=username).delete()
def delete(self): """ When delete user, we should also delete group relationships. """ if self.source == "DB": source = "DB" else: source = "LDAP" owned_repos = [] orgs = ccnet_threaded_rpc.get_orgs_by_user(self.username) if orgs: for org in orgs: owned_repos += seafile_api.get_org_owned_repo_list( org.org_id, self.username) else: owned_repos += seafile_api.get_owned_repo_list(self.username) for r in owned_repos: seafile_api.remove_repo(r.id) clear_token(self.username) # remove current user from joined groups ccnet_api.remove_group_user(self.username) ccnet_api.remove_emailuser(source, self.username) Profile.objects.delete_profile_by_user(self.username)
def set_password(self, raw_password): if raw_password is None: self.set_unusable_password() else: self.password = '******' % raw_password # clear web api and repo sync token # when user password change try: clear_token(self.username) except Exception as e: logger.error(e)
def delete(self): """ When delete user, we should also delete group relationships. """ if self.source == "DB": source = "DB" else: source = "LDAP" username = self.username orgs = ccnet_threaded_rpc.get_orgs_by_user(username) # remove owned repos owned_repos = [] if orgs: for org in orgs: owned_repos += seafile_api.get_org_owned_repo_list( org.org_id, username) else: owned_repos += seafile_api.get_owned_repo_list(username) for r in owned_repos: seafile_api.remove_repo(r.id) # remove shared in repos shared_in_repos = [] if orgs: for org in orgs: org_id = org.org_id shared_in_repos = seafile_api.get_org_share_in_repo_list( org_id, username, -1, -1) for r in shared_in_repos: seafile_api.org_remove_share(org_id, r.repo_id, r.user, username) else: shared_in_repos = seafile_api.get_share_in_repo_list( username, -1, -1) for r in shared_in_repos: seafile_api.remove_share(r.repo_id, r.user, username) clear_token(username) # remove current user from joined groups ccnet_api.remove_group_user(username) ccnet_api.remove_emailuser(source, username) Profile.objects.delete_profile_by_user(username)
def delete_user_account(request): username = request.user.username if username == '*****@*****.**': messages.error(request, _(u'Demo account can not be deleted.')) next = request.META.get('HTTP_REFERER', settings.SITE_ROOT) return HttpResponseRedirect(next) user = User.objects.get(email=username) user.delete() clear_token(username) if is_org_context(request): org_id = request.user.org.org_id seaserv.ccnet_threaded_rpc.remove_org_user(org_id, username) return HttpResponseRedirect(settings.LOGIN_URL)
def user_toggle_status(request, email): content_type = 'application/json; charset=utf-8' if not is_valid_username(email): return HttpResponse(json.dumps({'success': False}), status=400, content_type=content_type) try: user_status = int(request.POST.get('s', 0)) except ValueError: user_status = 0 try: user = User.objects.get(email) user.is_active = bool(user_status) result_code = user.save() if result_code == -1: return HttpResponse(json.dumps({'success': False}), status=403, content_type=content_type) if user.is_active is True: try: email_user_on_activation(user) email_sent = True except Exception as e: logger.error(e) email_sent = False return HttpResponse(json.dumps({ 'success': True, 'email_sent': email_sent, }), content_type=content_type) else: clear_token(user.email) return HttpResponse(json.dumps({'success': True}), content_type=content_type) except User.DoesNotExist: return HttpResponse(json.dumps({'success': False}), status=500, content_type=content_type)
def user_toggle_status(request, email): content_type = 'application/json; charset=utf-8' if not is_valid_username(email): return HttpResponse(json.dumps({'success': False}), status=400, content_type=content_type) try: user_status = int(request.POST.get('s', 0)) except ValueError: user_status = 0 try: user = User.objects.get(email) user.is_active = bool(user_status) result_code = user.save() if result_code == -1: return HttpResponse(json.dumps({'success': False}), status=403, content_type=content_type) if user.is_active is True: try: email_user_on_activation(user) email_sent = True except Exception as e: logger.error(e) email_sent = False return HttpResponse(json.dumps({'success': True, 'email_sent': email_sent, }), content_type=content_type) else: clear_token(user.email) return HttpResponse(json.dumps({'success': True}), content_type=content_type) except User.DoesNotExist: return HttpResponse(json.dumps({'success': False}), status=500, content_type=content_type)
def save(self, commit=True): self.user.set_password(self.cleaned_data['new_password1']) if commit: self.user.save() clear_token(self.user.username) return self.user
def put(self, request, org_id, email): """ update active of a org user Permission checking: 1. only admin can perform this action. """ # argument check org_id = int(org_id) if org_id == 0: error_msg = 'org_id invalid.' return api_error(status.HTTP_400_BAD_REQUEST, error_msg) try: org = ccnet_api.get_org_by_id(org_id) except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if not org: error_msg = 'Organization %d not found.' % org_id return api_error(status.HTTP_404_NOT_FOUND, error_msg) try: user = User.objects.get(email=email) except User.DoesNotExist: error_msg = 'User %s not found.' % email return api_error(status.HTTP_404_NOT_FOUND, error_msg) active = request.data.get('active', None) if not active: error_msg = 'active invalid.' return api_error(status.HTTP_400_BAD_REQUEST, error_msg) if active.lower() not in ('true', 'false'): error_msg = "active invalid, should be 'true' or 'false'." return api_error(status.HTTP_400_BAD_REQUEST, error_msg) active_user = True if active.lower() == 'true' else False try: if active_user: user.is_active = True else: user.is_active = False # update user status result_code = user.save() except Exception as e: logger.error(e) error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) if result_code == -1: error_msg = 'Fail to add user %s.' % email return api_error(status.HTTP_403_FORBIDDEN, error_msg) # clear web api and repo sync token # when inactive an user try: if not active_user: clear_token(email) except Exception as e: logger.error(e) user_info = get_org_user_info(org_id, user) return Response(user_info)