From 9f2d39619900a3412e08ab4303fb75c5a2cdc85b Mon Sep 17 00:00:00 2001 From: luchenqun Date: Sat, 4 Feb 2017 21:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=AE=BE=E7=BD=AE=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E7=BD=AE=E5=AF=86=E7=A0=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database/db.js | 14 +++++ public/index.html | 1 + public/scripts/app-angular.js | 1 + public/scripts/controllers/home-controller.js | 51 +++++-------------- .../scripts/controllers/search-controller.js | 2 +- .../controllers/settings-controller.js | 50 ++++++++++++++++++ public/scripts/services/bookmark-service.js | 13 +++++ public/views/bookmarks.html | 2 +- public/views/settings.html | 38 +++++++++++++- routes/api.js | 40 ++++++++++++++- 10 files changed, 171 insertions(+), 41 deletions(-) create mode 100644 public/scripts/controllers/settings-controller.js diff --git a/database/db.js b/database/db.js index 90fb73a..46f4a5b 100644 --- a/database/db.js +++ b/database/db.js @@ -179,6 +179,20 @@ db.updateUserLastLogin = function(id) { }); }; +db.resetPassword = function(userId, password) { + console.log('updateUserLastLogin'); + var sql = "UPDATE `users` SET `password` = '" + password + "' WHERE(`id` = '" + userId + "')"; + return new Promise(function(resolve, reject) { + client.query(sql, (err, result) => { + if (err) { + reject(err); + } else { + resolve(result.affectedRows); + } + }); + }); +} + db.register = function(user) { console.log('register'); var sql = "INSERT INTO `users` (`username`, `password`, `email`) VALUES ('" + user.username + "', '" + user.password + "', '" + user.email + "')"; diff --git a/public/index.html b/public/index.html index 3d9f338..568a7de 100644 --- a/public/index.html +++ b/public/index.html @@ -40,6 +40,7 @@ + diff --git a/public/scripts/app-angular.js b/public/scripts/app-angular.js index c2839c4..368d09f 100644 --- a/public/scripts/app-angular.js +++ b/public/scripts/app-angular.js @@ -37,6 +37,7 @@ app.config(function($stateProvider, $urlRouterProvider, $httpProvider) { .state('settings', { url: '/settings', templateUrl: '/views/settings.html', + controller: 'settingsCtr' }) .state('login', { url: '/login', diff --git a/public/scripts/controllers/home-controller.js b/public/scripts/controllers/home-controller.js index 5653a27..0ae9255 100644 --- a/public/scripts/controllers/home-controller.js +++ b/public/scripts/controllers/home-controller.js @@ -1,41 +1,18 @@ app.controller('homeCtr', ['$scope', '$stateParams', '$filter', '$state', '$window', 'bookmarkService', 'pubSubService', function($scope, $stateParams, $filter, $state, $window, bookmarkService, pubSubService) { console.log('Hello homeCtr......'); - var debug = false; - if (debug) { - var params = { - username: 'luchenqun', - password: 'fendoubuxi1', - autoLogin: true, - }; - bookmarkService.login(params) - .then((data) => { - if (data.logined) { - pubSubService.publish('loginCtr.login', { - 'login': data.logined, - }); - $state.go('bookmarks', { - showStyle: 'navigate', - }) - } else { - console.log('login failed......................') - } - }) - .catch((err) => console.log('login err', err)); - } else { - bookmarkService.autoLogin() - .then((data) => { - if (data.logined || debug) { - pubSubService.publish('loginCtr.login', { - 'login': debug || data.logined, - }); - $state.go('bookmarks', { - showStyle: 'navigate', - }) - } else { - console.log('autoLogin failed......................') - } - }) - .catch((err) => console.log('autoLogin err', err)); - } + bookmarkService.autoLogin() + .then((data) => { + if (data.logined) { + pubSubService.publish('loginCtr.login', { + 'login': data.logined, + }); + $state.go('bookmarks', { + showStyle: 'navigate', + }) + } else { + console.log('autoLogin failed......................') + } + }) + .catch((err) => console.log('autoLogin err', err)); }]); diff --git a/public/scripts/controllers/search-controller.js b/public/scripts/controllers/search-controller.js index b563d9e..cf547be 100644 --- a/public/scripts/controllers/search-controller.js +++ b/public/scripts/controllers/search-controller.js @@ -41,7 +41,7 @@ app.controller('searchCtr', ['$scope', '$state', '$stateParams', '$filter', '$wi if ($scope.searchWord) { searchBookmarks(searchParams); } else { - + $state.go('/', {}) } $scope.jumpToUrl = function(url, id) { diff --git a/public/scripts/controllers/settings-controller.js b/public/scripts/controllers/settings-controller.js new file mode 100644 index 0000000..3221315 --- /dev/null +++ b/public/scripts/controllers/settings-controller.js @@ -0,0 +1,50 @@ +app.controller('settingsCtr', ['$scope', '$stateParams', '$filter', '$state', '$window', 'bookmarkService', 'pubSubService', function($scope, $stateParams, $filter, $state, $window, bookmarkService, pubSubService) { + console.log('Hello settingsCtr......'); + $scope.form = [true, false]; + $scope.passwordOrgin = ""; + $scope.passwordNew1 = ""; + $scope.passwordNew2 = ""; + + $scope.changeForm = function(index) { + $scope.form = $scope.form.map(() => false); + $scope.form[index] = true; + } + + $scope.resetPassword = function() { + if (!$scope.passwordOrgin || !$scope.passwordNew1 || !$scope.passwordNew2) { + toastr.error('原密码跟新密码不能为空', "错误"); + return; + } + + if ($scope.passwordNew1 == $scope.passwordNew2) { + var parmes = { + passwordNew: $scope.passwordNew1, + passwordOrgin: $scope.passwordOrgin, + }; + + bookmarkService.resetPassword(parmes) + .then((data) => { + if (data.retCode == 0) { + toastr.success('密码更新成功', "提示"); + pubSubService.publish('Common.menuActive', { + login: false, + index: 0 + }); + $state.go('/', {}); + } else { + toastr.error('密码更新失败。错误信息:' + data.msg, "错误"); + } + }) + .catch((err) => { + toastr.error('密码更新失败。错误信息:' + JSON.stringify(err), "错误"); + }); + } else { + toastr.error('新密码两次输入不一致', "错误"); + } + } + + pubSubService.publish('Common.menuActive', { + login: true, + index: 2 + }); +}]); diff --git a/public/scripts/services/bookmark-service.js b/public/scripts/services/bookmark-service.js index c837227..d2b3ed6 100644 --- a/public/scripts/services/bookmark-service.js +++ b/public/scripts/services/bookmark-service.js @@ -40,6 +40,19 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) { }); return def.promise; }, + resetPassword: function(params) { + var def = $q.defer(); + $http.post('/api/resetPassword/', { + params: params + }) + .success(function(data) { + def.resolve(data); + }) + .error(function(data) { + def.reject('register error'); + }); + return def.promise; + }, clickBookmark: function(params) { var def = $q.defer(); $http.post('/api/clickBookmark/', { diff --git a/public/views/bookmarks.html b/public/views/bookmarks.html index 42ac8c5..7b15d80 100644 --- a/public/views/bookmarks.html +++ b/public/views/bookmarks.html @@ -21,7 +21,7 @@ {{ bookmark.title}} -
+
diff --git a/public/views/settings.html b/public/views/settings.html index 20076ac..2d51fae 100644 --- a/public/views/settings.html +++ b/public/views/settings.html @@ -1 +1,37 @@ -

账号设置页面

+
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ 书签显示设置 +
+
+ 菜单设置 +
+
+
+
diff --git a/routes/api.js b/routes/api.js index 09f7450..d7690b3 100644 --- a/routes/api.js +++ b/routes/api.js @@ -67,6 +67,44 @@ api.post('/register', function(req, res) { }); }); +api.post('/resetPassword', function(req, res) { + console.log("resetPassword"); + if (!req.session.user) { + res.send(401); + return; + } + + var params = req.body.params; + var passwordOrigin = md5(params.passwordOrgin); // 进行密码加密 + var passwordNew = md5(params.passwordNew); // 进行密码加密 + + db.getUser(req.session.user.username) + .then((user) => { + if (user && user.password === passwordOrigin) { + return db.resetPassword(req.session.userId, passwordNew) + } else { + return Promise.resolve(0) + } + }) + .then((affectedRows) => { + res.json({ + retCode: (affectedRows == 1 ? 0 : 1), + msg: req.session.username + " 更新密码失败,可能原密码不正确!", + }) + + if (affectedRows) { + req.session.destroy(); + } + }) + .catch((err) => { + console.log('resetPassword error', err); + res.json({ + retCode: 2, + msg: req.session.username + " 更新密码失败: " + JSON.stringify(err), + }) + }); +}); + api.get('/autoLogin', function(req, res) { var ret = { logined: false, @@ -182,7 +220,7 @@ api.get('/bookmarks', function(req, res) { tag.bookmarks = []; } tag.click += bookmark.click_count; - if (bookmark.id) { + if (bookmark.id && tag.bookmarks.length < 31) { tag.bookmarks.push(bookmark); } });