diff --git a/core/middleware.js b/core/middleware.js index 2ac9a232..98c7b4f3 100644 --- a/core/middleware.js +++ b/core/middleware.js @@ -85,7 +85,7 @@ middleware.checkToken = function(req, res, next) { authType = 2; authToken = _.trim(_.trimStart(_.get(req, 'query.access_token', null))); } - if (authType == 1) { + if (authToken && authType == 1) { checkAuthToken(authToken) .then((users) => { req.users = users; @@ -99,7 +99,7 @@ middleware.checkToken = function(req, res, next) { next(e); } }); - } else if (authType == 2) { + } else if (authToken && authType == 2) { checkAccessToken(authToken) .then((users) => { req.users = users; diff --git a/package.json b/package.json index 578ec0b5..ea63f74c 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,7 @@ "config", "core", "docs", + "docker", "models", "public", "routes", diff --git a/routes/auth.js b/routes/auth.js index 2db402e9..7bdd96c2 100644 --- a/routes/auth.js +++ b/routes/auth.js @@ -6,6 +6,10 @@ var validator = require('validator'); var log4js = require('log4js'); var log = log4js.getLogger("cps:auth"); +router.get('/password', (req, res) => { + res.render('auth/password', { title: 'CodePushServer' }); +}); + router.get('/login', (req, res) => { var codePushWebUrl = _.get(config, 'common.codePushWebUrl'); if (codePushWebUrl && validator.isURL(codePushWebUrl)) { diff --git a/views/auth/password.pug b/views/auth/password.pug new file mode 100644 index 00000000..47fa302c --- /dev/null +++ b/views/auth/password.pug @@ -0,0 +1,57 @@ +extends ../layout + +block content + .container(style="margin-top:30px;") + form#form.col-md-5.col-md-offset-3(method="post") + .form-group + label.sr-only(for="inputEmail") 邮箱地址/用户名 + input#inputEmail.form-control(type="text" name="account" placeholder="邮箱地址/用户名" required autofocus) + .form-group + .col-md-10(style="margin-left:-15px;") + label.sr-only(for="inputToken") token + input#inputToken.form-control(type="text" name="token" placeholder="token" required) + .col-md-2 + a.form-control.btn.btn-link(style="margin-bottom:15px;" target="_blank" href="/auth/login") 获取token + .form-group + label.sr-only(for="inputPassword") 原密码 + input#inputPassword.form-control(type="password" name="oldPassword" placeholder="原密码" required) + .form-group + label.sr-only(for="inputNewPassword") 新密码 + input#inputNewPassword.form-control(type="password" name="newPassword" placeholder="新密码" required) + .form-group + a#submitBtn.btn.btn-lg.btn-primary.btn-block 修改密码 + +block js + script(). + var submit = false; + $('#submitBtn').on('click', function () { + if (submit) { + return ; + } + var token = $('#inputToken').val(); + var oldPassword = $('#inputPassword').val(); + var newPassword = $('#inputNewPassword').val(); + submit = true; + $.ajax({ + type: 'patch', + data: JSON.stringify({oldPassword:oldPassword,newPassword:newPassword}), + contentType: 'application/json;charset=utf-8', + headers: { + Authorization : 'Bearer '+token + }, + url: '/users/password', + dataType: 'json', + success: function (data) { + if (data.status == "OK") { + alert("修改成功"); + location.href = '/auth/login'; + } else if (data.status == 401) { + alert('token invalid'); + } else { + alert(data.message); + } + submit = false; + } + }); + }); + diff --git a/views/index.pug b/views/index.pug index c97cb43a..800da9bd 100644 --- a/views/index.pug +++ b/views/index.pug @@ -7,4 +7,5 @@ block content h1(style="text-align: center;")= title p(style="text-align: center;") Welcome to #{title} .site-notice - a.btn.btn-primary(href="/auth/login" type="button") 登录 \ No newline at end of file + a.btn.btn-primary(href="/auth/login" type="button") 登录 + a.btn.btn-primary.col-md-offset-1(href="/auth/password" type="button") 修改密码 \ No newline at end of file diff --git a/views/layout.pug b/views/layout.pug index a0ba1682..85d88861 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -2,6 +2,8 @@ doctype html html head title= title + meta(name="keywords" content="code-push-server,code-push,react-native,cordova") + meta(name="description" content="CodePush service is hotupdate services which adapter react-native-code-push and cordova-plugin-code-push") link(rel='stylesheet', href='/js/bootstrap-3.3.7/css/bootstrap.min.css') block css body