diff --git a/account/serializers.py b/account/serializers.py index 9a43457e..179d28d5 100644 --- a/account/serializers.py +++ b/account/serializers.py @@ -25,7 +25,6 @@ class UserRegisterSerializer(serializers.Serializer): class UserChangePasswordSerializer(serializers.Serializer): - username = serializers.CharField(max_length=30) old_password = serializers.CharField() new_password = serializers.CharField(max_length=30, min_length=6) diff --git a/account/tests.py b/account/tests.py index f8cc9d06..bbdf1e92 100644 --- a/account/tests.py +++ b/account/tests.py @@ -123,22 +123,13 @@ class UserChangePasswordAPITest(APITestCase): user = User.objects.create(username="test") user.set_password("aaabbb") user.save() + self.client.login(username="test",password="aaabbb") def test_error_old_password(self): - data = {"username": "test", "old_password": "aaaccc", "new_password": "aaaddd"} + data = {"old_password": "aaaccc", "new_password": "aaaddd"} response = self.client.post(self.url, data=data) self.assertEqual(response.data, {"code": 1, "data": u"密码不正确,请重新修改!"}) - def test_invalid_data_format(self): - data = {"old_password": "aaa", "new_password": "aaaddd"} - response = self.client.post(self.url, data=data) - self.assertEqual(response.data["code"], 1) - - def test_username_does_not_exist(self): - data = {"username": "test1", "old_password": "aaabbb", "new_password": "aaaddd"} - response = self.client.post(self.url, data=data) - self.assertEqual(response.data["code"], 1) - def test_success_change_password(self): data = {"username": "test", "old_password": "aaabbb", "new_password": "aaaccc"} response = self.client.post(self.url, data=data) diff --git a/account/views.py b/account/views.py index 89197ae6..1da8967d 100644 --- a/account/views.py +++ b/account/views.py @@ -35,7 +35,7 @@ class UserLoginAPIView(APIView): else: return serializer_invalid_response(serializer) - +@login_required def logout(request): auth.logout(request) return http.HttpResponseRedirect("/") @@ -69,6 +69,7 @@ class UserRegisterAPIView(APIView): class UserChangePasswordAPIView(APIView): + @login_required def post(self, request): """ 用户修改密码json api接口 @@ -78,7 +79,8 @@ class UserChangePasswordAPIView(APIView): serializer = UserChangePasswordSerializer(data=request.data) if serializer.is_valid(): data = serializer.data - user = auth.authenticate(username=data["username"], password=data["old_password"]) + username = request.user.username + user = auth.authenticate(username=username, password=data["old_password"]) if user: user.set_password(data["new_password"]) user.save() diff --git a/static/src/js/app/admin/admin.js b/static/src/js/app/admin/admin.js index 9246f7f3..e3e85457 100644 --- a/static/src/js/app/admin/admin.js +++ b/static/src/js/app/admin/admin.js @@ -72,6 +72,7 @@ define("admin", ["jquery", "avalon"], function ($, avalon) { var vm = avalon.define({ $id: "admin", template_url: "template/" + hash + ".html", + username: "", groupId: -1, problemId: -1, adminNavList: [], @@ -93,6 +94,7 @@ define("admin", ["jquery", "avalon"], function ($, avalon) { dataType: "json", success: function(data){ if(!data.code){ + vm.username = data.data.username; if (data.data.admin_type == 2){ vm.adminNavList = superAdminNav; } diff --git a/static/src/js/app/admin/contest/addContest.js b/static/src/js/app/admin/contest/addContest.js index d4beadb3..a87e4e29 100644 --- a/static/src/js/app/admin/contest/addContest.js +++ b/static/src/js/app/admin/contest/addContest.js @@ -43,7 +43,6 @@ require(["jquery", "avalon", "editor", "uploader", "bsAlert", "csrfToken", "date contentType: "application/json", data: JSON.stringify(ajaxData), method: "post", - contentType: "application/json", success: function (data) { if (!data.code) { bsAlert("添加成功!将转到比赛列表页以便为比赛添加问题(注意比赛当前状态为:隐藏)"); diff --git a/static/src/js/app/oj/account/change_password.js b/static/src/js/app/oj/account/change_password.js index ba88f5ff..608114f7 100644 --- a/static/src/js/app/oj/account/change_password.js +++ b/static/src/js/app/oj/account/change_password.js @@ -2,13 +2,12 @@ require(["jquery", "bsAlert", "csrfToken", "validator"], function ($, bsAlert, c $('form').validator().on('submit', function (e) { e.preventDefault(); - var username = $("#username").val(); var newPassword = $("#new_password ").val(); var password = $("#password").val(); $.ajax({ beforeSend: csrfTokenHeader, url: "/api/change_password/", - data: {username: username, new_password: newPassword, old_password: password}, + data: {new_password: newPassword, old_password: password}, dataType: "json", method: "post", success: function (data) { diff --git a/template/src/admin/admin.html b/template/src/admin/admin.html index 1179182c..67b91637 100644 --- a/template/src/admin/admin.html +++ b/template/src/admin/admin.html @@ -15,7 +15,7 @@ - +