1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-04 16:31:13 +00:00

rm repo change password

This commit is contained in:
lian
2016-08-30 11:47:31 +08:00
committed by lian
parent a862fad836
commit 6d577d83e3
5 changed files with 60 additions and 45 deletions

View File

@@ -1,4 +1,6 @@
# Copyright (c) 2012-2016 Seafile Ltd.
import logging
from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
@@ -13,6 +15,10 @@ from seahub.api2.authentication import TokenAuthentication
from seahub.api2.throttling import UserRateThrottle
from seahub.api2.utils import api_error
from seahub.utils import is_org_context
logger = logging.getLogger(__name__)
class RepoSetPassword(APIView):
authentication_classes = (TokenAuthentication, SessionAuthentication )
@@ -47,3 +53,52 @@ class RepoSetPassword(APIView):
else:
error_msg = _(u'Decrypt library error')
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
def put(self, request, repo_id):
""" Change repo password.
Permission checking:
1. repo owner
"""
# argument check
old_password = request.POST.get('old_password', None)
if not old_password:
error_msg = 'old_password invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
new_password = request.POST.get('new_password', None)
if not new_password:
error_msg = 'new_password invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
# resource check
repo = seafile_api.get_repo(repo_id)
if not repo:
error_msg = 'Library %s not found.' % repo_id
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
# permission check
if is_org_context(request):
repo_owner = seafile_api.get_org_repo_owner(repo.id)
else:
repo_owner = seafile_api.get_repo_owner(repo.id)
username = request.user.username
if username != repo_owner:
error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
# change password
try:
seafile_api.change_repo_passwd(repo_id, old_password, new_password, username)
except SearpcError as e:
if e.msg == 'Incorrect password':
error_msg = _(u'Wrong old password')
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
else:
logger.error(e)
error_msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
return Response({'success': True})

View File

@@ -153,7 +153,6 @@ urlpatterns = patterns(
url(r'^ajax/upload-file-done/$', upload_file_done, name='upload_file_done'),
url(r'^ajax/get_popup_notices/$', get_popup_notices, name='get_popup_notices'),
url(r'^ajax/space_and_traffic/$', space_and_traffic, name='space_and_traffic'),
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/setting/change-passwd/$', ajax_repo_change_passwd, name='ajax_repo_change_passwd'),
url(r'^ajax/(?P<repo_id>[-0-9a-f]{36})/repo-dir/recycle/more/$', ajax_repo_dir_recycle_more, name='ajax_repo_dir_recycle_more'),

View File

@@ -1237,43 +1237,6 @@ def _create_repo_common(request, repo_name, repo_desc, encryption,
return repo_id
@login_required_ajax
def ajax_repo_change_passwd(request, repo_id):
"""Handle ajax post request to change library password.
"""
if request.method != 'POST':
raise Http404
content_type = 'application/json; charset=utf-8'
username = request.user.username
repo = seafile_api.get_repo(repo_id)
if not repo:
raise Http404
# check permission
if is_org_context(request):
repo_owner = seafile_api.get_org_repo_owner(repo.id)
else:
repo_owner = seafile_api.get_repo_owner(repo.id)
is_owner = True if username == repo_owner else False
if not is_owner:
return HttpResponse(json.dumps({
'error': 'Permission denied'}),
status=403, content_type=content_type)
old_passwd = request.POST.get('old_passwd', '')
new_passwd = request.POST.get('new_passwd', '')
try:
seafile_api.change_repo_passwd(repo_id, old_passwd, new_passwd, username)
except SearpcError, e:
return HttpResponse(json.dumps({
'error': e.msg,
}), status=400, content_type=content_type)
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
@login_required_ajax
def ajax_group_members_import(request, group_id):
"""Import users to group.

View File

@@ -72,16 +72,15 @@ define([
$.ajax({
url: Common.getUrl({
'name': 'repo_change_password',
'name': 'api_v2.1_repo_set_password',
'repo_id': this.repo_id
}),
type: 'POST',
type: 'PUT',
dataType: 'json',
beforeSend: Common.prepareCSRFToken,
data: {
'old_passwd': old_passwd,
'new_passwd': new_passwd,
'new_passwd_again': new_passwd_again
'old_password': old_passwd,
'new_password': new_passwd
},
success: function() {
$.modal.close();
@@ -90,7 +89,7 @@ define([
error: function(xhr) {
var err_msg;
if (xhr.responseText) {
err_msg = $.parseJSON(xhr.responseText).error;
err_msg = $.parseJSON(xhr.responseText).error_msg;
} else {
err_msg = gettext("Failed. Please check the network.");
}

View File

@@ -116,7 +116,6 @@ define([
case 'repo_shared_upload_link': return siteRoot + 'api2/repos/' + options.repo_id + '/upload-shared-links/' + options.token + '/';
case 'repo_user_folder_perm': return siteRoot + 'api2/repos/' + options.repo_id + '/user-folder-perm/';
case 'repo_group_folder_perm': return siteRoot + 'api2/repos/' + options.repo_id + '/group-folder-perm/';
case 'repo_change_password': return siteRoot + 'ajax/repo/' + options.repo_id + '/setting/change-passwd/';
// Share admin
case 'share_admin_repos': return siteRoot + 'api/v2.1/shared-repos/';