diff --git a/spug_api/apps/account/urls.py b/spug_api/apps/account/urls.py
index d13ef8e..9e59e40 100644
--- a/spug_api/apps/account/urls.py
+++ b/spug_api/apps/account/urls.py
@@ -10,4 +10,5 @@ urlpatterns = [
url(r'^logout/', logout),
url(r'^user/$', UserView.as_view()),
url(r'^role/$', RoleView.as_view()),
+ url(r'^self/$', SelfView.as_view()),
]
diff --git a/spug_api/apps/account/views.py b/spug_api/apps/account/views.py
index 0962cf8..007a71b 100644
--- a/spug_api/apps/account/views.py
+++ b/spug_api/apps/account/views.py
@@ -108,6 +108,29 @@ class RoleView(View):
return json_response(error=error)
+class SelfView(View):
+ def patch(self, request):
+ form, error = JsonParser(
+ Argument('old_password', required=False),
+ Argument('new_password', required=False),
+ Argument('nickname', required=False),
+ ).parse(request.body, True)
+ if error is None:
+ if form.get('old_password') and form.get('new_password'):
+ if len(form.new_password) < 6:
+ return json_response(error='请设置至少6位的新密码')
+ if request.user.verify_password(form.old_password):
+ request.user.password_hash = User.make_password(form.new_password)
+ request.user.token_expired = 0
+ request.user.save()
+ else:
+ return json_response(error='原密码错误,请重新输入')
+ if form.get('nickname'):
+ request.user.nickname = form.nickname
+ request.user.save()
+ return json_response(error=error)
+
+
def login(request):
form, error = JsonParser(
Argument('username', help='请输入用户名'),
diff --git a/spug_web/src/layout/Header.js b/spug_web/src/layout/Header.js
index 312534f..7869348 100644
--- a/spug_web/src/layout/Header.js
+++ b/spug_web/src/layout/Header.js
@@ -4,6 +4,7 @@
* Released under the MIT License.
*/
import React from 'react';
+import { Link } from 'react-router-dom';
import { Layout, Dropdown, Menu, List, Icon, Badge, Avatar } from 'antd';
import styles from './layout.module.css';
import http from '../libs/http';
@@ -57,8 +58,10 @@ export default class extends React.Component {
};
menu = (