Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yohobuy-node
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
1
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
htoooth
9 years ago
Commit
999ce99811fba81f53cc8f8625974995a22dd748
1 parent
d3e78605
add ok
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
182 additions
and
76 deletions
apps/passport/controllers/back.js
apps/passport/controllers/captcha.js
apps/passport/models/back-service.js
apps/passport/models/passport-helper.js
apps/passport/models/session-service.js
apps/passport/router.js
apps/passport/views/action/back/reset-success.hbs
library/helpers.js
public/js/passport/back-index.page.js
public/js/passport/back-reset-pwd.page.js
apps/passport/controllers/back.js
View file @
999ce99
...
...
@@ -10,6 +10,7 @@ const helpers = require(`${library}/helpers`);
const
service
=
require
(
'../models/back-service'
);
const
sessionService
=
require
(
'../models/session-service'
);
const
passportHelper
=
require
(
'../models/passport-helper'
);
// 本地地址 localhost
helpers
.
urlFormat
=
helpers
.
fakeUrlFormat
;
...
...
@@ -30,17 +31,19 @@ module.exports.indexPage = (req, res, next) => {
/**
* 校验用户输入信息,是否是已经注册的用户
*/
module
.
exports
.
validate
User
InputAPI
=
(
req
,
res
,
next
)
=>
{
module
.
exports
.
validateInputAPI
=
(
req
,
res
,
next
)
=>
{
let
userInput
=
req
.
body
.
phoneNum
||
''
;
let
areaCode
=
req
.
body
.
area
||
'86'
;
let
areaCode
=
(
req
.
body
.
area
||
'86'
).
replace
(
'+'
,
''
)
;
service
.
validateEmailOrMobileAsync
(
userInput
,
areaCode
)
.
then
(
result
=>
{
req
.
inputInfo
=
result
;
console
.
log
(
result
);
next
();
})
.
catch
(
err
=>
{
console
.
log
(
err
);
res
.
json
({
code
:
400
,
message
:
err
...
...
@@ -48,6 +51,26 @@ module.exports.validateUserInputAPI = (req, res, next) => {
});
};
/**
* 校验用户输入信息,是否是已经注册的用户
*/
module
.
exports
.
validateInputPage
=
(
req
,
res
,
next
)
=>
{
let
userInput
=
req
.
body
.
phoneNum
||
''
;
let
areaCode
=
(
req
.
body
.
area
||
'86'
).
replace
(
'+'
,
''
);
console
.
log
(
userInput
,
areaCode
);
service
.
validateEmailOrMobileAsync
(
userInput
,
areaCode
)
.
then
(
result
=>
{
req
.
inputInfo
=
result
;
next
();
})
.
catch
(()
=>
{
res
.
redirect
(
'/passport/back/index.html'
);
});
};
module
.
exports
.
getUserInfoAPI
=
(
req
,
res
,
next
)
=>
{
let
inputInfo
=
req
.
inputInfo
;
...
...
@@ -57,55 +80,100 @@ module.exports.getUserInfoAPI = (req, res, next) => {
}).
catch
(
next
);
};
module
.
exports
.
sendCode
API
=
(
req
,
res
,
next
)
=>
{
module
.
exports
.
sendCode
Page
=
(
req
,
res
,
next
)
=>
{
let
inputInfo
=
req
.
inputInfo
;
service
.
sendCodeToUserAsync
(
inputInfo
.
type
,
inputInfo
.
mobile
,
inputInfo
.
area
).
then
(
result
=>
{
switch
(
inputInfo
.
type
)
{
case
'email'
:
{
res
.
redirect
(
'/passport/back/sendEmail.html'
);
break
;
}
case
'mobile'
:
{
res
.
redirect
(
'/passport/back/verification.html'
);
break
;
}
default
:
{
res
.
redirect
(
'/passport/back/index.html'
);
}
service
.
sendCodeToUserAsync
(
inputInfo
.
type
,
inputInfo
.
phone
,
inputInfo
.
area
).
then
(
result
=>
{
if
(
_
.
isEmpty
(
result
))
{
res
.
redirect
(
'/passport/back/index.html'
);
}
else
{
next
();
}
}).
catch
(
next
);
};
module
.
exports
.
sendBackMobileAPI
=
(
req
,
res
,
next
)
=>
{
let
mobile
=
req
.
param
(
'mobile'
,
''
);
}).
catch
(()
=>
{
res
.
redirect
(
'/passport/back/index.html'
);
});
};
let
area
=
req
.
param
(
'area'
,
'86'
);
module
.
exports
.
saveInSession
=
(
req
,
res
)
=>
{
switch
(
req
.
inputInfo
.
type
)
{
case
'email'
:
{
req
.
session
.
email
=
req
.
inputInfo
.
phone
;
res
.
redirect
(
'/passport/back/sendEmail.html'
);
break
;
}
case
'mobile'
:
{
req
.
session
.
mobile
=
req
.
inputInfo
.
phone
;
req
.
session
.
area
=
req
.
inputInfo
.
area
;
res
.
redirect
(
'/passport/back/verification.html'
);
break
;
}
default
:
{
res
.
redirect
(
'/passport/back/index.html'
);
}
}
};
module
.
exports
.
sendBackMobileAPI
=
(
req
,
res
,
next
)
=>
{
service
.
sendCodeToMobileAsync
(
area
,
mobile
)
.
then
(
result
=>
{
res
.
json
(
result
);
}).
catch
(
next
);
};
module
.
exports
.
validateMobileAPI
=
(
req
,
res
,
next
)
=>
{
let
mobile
=
req
.
body
.
mobile
||
''
;
let
area
=
req
.
body
.
area
||
'86'
;
const
ERR
=
{
code
:
400
,
message
:
'验证失败'
};
if
(
!
helpers
.
verifyAreaMobile
(
helpers
.
makeAreaMobile
(
area
,
mobile
)))
{
res
.
json
(
ERR
);
}
else
{
next
();
}
};
module
.
exports
.
validateEmailInSession
=
(
req
,
res
,
next
)
=>
{
let
email
=
req
.
session
.
email
||
''
;
if
(
!
email
)
{
res
.
redirect
(
'/passport/back/index.html'
);
}
const
mapperEmailISP
=
{
'yoho.cn'
:
'http://smail.yoho.cn'
};
let
isp
=
email
.
split
(
'@'
)[
1
];
req
.
body
.
emailUrl
=
mapperEmailISP
[
isp
]
||
`
http
:
//mail.${isp}`;
next
();
};
module
.
exports
.
sendEmailPage
=
(
req
,
res
,
next
)
=>
{
service
.
getSendEmailPageData
Async
()
passportHelper
.
getLeftBanner
Async
()
.
then
(
result
=>
{
res
.
render
(
'back/send-email'
,
Object
.
assign
({
module
:
'passport'
,
page
:
'back-send-email-ok'
,
title
:
"邮件发送成功"
},
result
));
module
:
'passport'
,
page
:
'back-send-email-ok'
,
title
:
"邮件发送成功"
},
{
email
:
req
.
body
.
emailUrl
},
{
coverHref
:
result
.
url
,
coverImg
:
result
.
img
}));
}).
catch
(
next
);
};
module
.
exports
.
checkCodePage
=
(
req
,
res
,
next
)
=>
{
let
code
=
req
.
param
(
'code'
,
''
);
module
.
exports
.
verifyCodeByEmailPage
=
(
req
,
res
,
next
)
=>
{
let
code
=
req
.
query
.
code
||
''
;
service
.
checkEmailCodeAsync
(
code
)
.
then
(
result
=>
{
...
...
@@ -118,17 +186,22 @@ module.exports.checkCodePage = (req, res, next) => {
};
module
.
exports
.
resetPasswordPage
=
(
req
,
res
,
next
)
=>
{
let
code
=
re
s
.
query
.
code
||
''
;
let
code
=
re
q
.
query
.
code
||
''
;
service
.
getLeftBannerAsync
()
passportHelper
.
getLeftBannerAsync
()
.
then
(
result
=>
{
res
.
render
(
'back/reset-pwd'
,
Object
.
assign
({
module
:
'passport'
,
page
:
'back-reset-pwd'
,
title
:
'重新设置密码'
title
:
'重新设置密码'
},
{
code
:
code
},
result
))
},
{
resetPwd
:
{
coverHref
:
result
.
url
,
coverImg
:
result
.
img
}
}))
}).
catch
(
next
);
};
...
...
@@ -137,19 +210,20 @@ module.exports.resetPasswordPage = (req, res, next) => {
*/
module
.
exports
.
verifyCodeByMobilePage
=
(
req
,
res
,
next
)
=>
{
service
.
getVerifyCodeByMobilePageData
Async
()
passportHelper
.
getLeftBanner
Async
()
.
then
(
result
=>
{
res
.
render
(
'back/verification'
,
Object
.
assign
({
module
:
'passport'
,
page
:
'back-verify-mobile-code'
,
title
:
'手机验证'
},
{
mobile
:
req
.
body
.
mobile
,
area
:
req
.
body
.
area
,
verifyCode
:
req
.
body
.
verifyCode
},
{
verification
:
{
coverHref
:
result
.
url
,
coverImg
:
result
.
img
,
mobile
:
result
.
mobile
,
area
:
result
.
area
,
verifyCode
:
result
.
verifyCode
coverImg
:
result
.
img
}
}));
}).
catch
(
next
);
...
...
@@ -160,10 +234,10 @@ module.exports.verifyCodeByMobileAPI = (req, res, next) => {
};
module
.
exports
.
checkSuccessStatusPage
=
(
req
,
res
,
next
)
=>
{
let
successType
=
sessionService
.
get
(
'successType'
,
''
)
;
let
successType
=
req
.
session
.
successType
||
''
;
if
(
successType
)
{
sessionService
.
set
(
'successType'
,
''
)
;
delete
req
.
session
.
successType
;
next
();
}
else
{
res
.
redirect
(
'/passport/back/index.html'
);
...
...
@@ -171,17 +245,22 @@ module.exports.checkSuccessStatusPage = (req, res, next) => {
};
module
.
exports
.
resetPwdSuccessPage
=
(
req
,
res
,
next
)
=>
{
service
.
getLeftBannerAsync
()
passportHelper
.
getLeftBannerAsync
()
.
then
(
result
=>
{
res
.
render
(
'back/
email-
reset-success'
,
Object
.
assign
({
res
.
render
(
'back/reset-success'
,
Object
.
assign
({
module
:
'passport'
,
page
:
'back-
reset-success
'
,
page
:
'back-
index
'
,
title
:
'重置密码成功'
},
result
))
},
{
resetSuccess
:
{
coverHref
:
result
.
url
,
coverImg
:
result
.
img
}
}))
}).
catch
(
next
);
};
module
.
exports
.
verifyCod
y
ByMobileAPI
=
(
req
,
res
,
next
)
=>
{
module
.
exports
.
verifyCod
e
ByMobileAPI
=
(
req
,
res
,
next
)
=>
{
let
mobile
=
req
.
param
(
'mobile'
,
''
);
...
...
@@ -210,18 +289,31 @@ module.exports.tokenCheckPage = (req, res, next) => {
};
module
.
exports
.
validationPwdPage
=
(
req
,
res
,
next
)
=>
{
let
pwd
=
req
.
param
(
'pwd'
,
''
)
;
let
pwd
=
req
.
body
.
pwd
||
''
;
if
(
helpers
.
verifyPassword
(
pwd
))
{
res
.
redirect
(
'/passport/back/index.html'
);
}
else
{
if
(
helpers
.
isPassword
(
pwd
))
{
next
();
}
else
{
res
.
redirect
(
'/passport/back/index.html'
);
}
};
module
.
exports
.
updatePwdPage
=
(
req
,
res
,
next
)
=>
{
let
code
=
req
.
param
(
'code'
,
''
);
let
code
=
req
.
body
.
code
||
''
;
let
auth
=
req
.
authInfo
;
};
module
.
exports
.
validateMobileInSession
=
(
req
,
res
,
next
)
=>
{
req
.
body
.
mobile
=
req
.
session
.
mobile
||
""
;
req
.
body
.
verifyCode
=
req
.
session
.
verifyCode
||
""
;
req
.
body
.
area
=
req
.
session
.
area
||
""
;
if
(
req
.
body
.
mobile
&&
req
.
body
.
verifyCode
)
{
next
()
}
else
{
res
.
redirect
(
'/passport/back/index.html'
);
}
};
...
...
apps/passport/controllers/captcha.js
View file @
999ce99
...
...
@@ -10,7 +10,7 @@ const sessionService = require('../models/session-service');
const
captcha
=
require
(
'../models/captcha-service'
)(
sessionService
);
const
helpers
=
require
(
library
+
'/helpers'
);
exports
.
check
API
=
(
req
,
res
,
next
)
=>
{
exports
.
validate
API
=
(
req
,
res
,
next
)
=>
{
let
captchaToken
=
req
.
body
.
verifyCode
||
''
;
captcha
.
findByContentAsync
(
captchaToken
)
...
...
@@ -26,7 +26,7 @@ exports.checkAPI = (req, res, next) => {
});
};
exports
.
check
Page
=
(
req
,
res
,
next
)
=>
{
exports
.
validate
Page
=
(
req
,
res
,
next
)
=>
{
let
captchaToken
=
req
.
body
.
verifyCode
||
''
;
captcha
.
findByContentAsync
(
captchaToken
)
...
...
apps/passport/models/back-service.js
View file @
999ce99
...
...
@@ -12,7 +12,6 @@ const _ = require('lodash');
const
moment
=
require
(
'moment'
);
const
userService
=
require
(
'./user-service'
);
const
sessionService
=
require
(
'./session-service'
);
const
passportHelper
=
require
(
'./passport-helper'
);
const
BACK_LEFT_BANNER_CODE
=
'3bbaf502c447a2ddad60879042e286d8'
;
//找回密码左边的banner
...
...
@@ -22,7 +21,6 @@ module.exports.validateEmailOrMobileAsync = (userInput, areaCode) => {
let
result
=
{
type
:
'email'
,
area
:
''
,
phone
:
''
};
if
(
helpers
.
verifyEmail
(
userInput
))
{
result
.
type
=
'email'
;
result
.
area
=
''
;
result
.
phone
=
userInput
;
...
...
@@ -108,12 +106,6 @@ module.exports.sendCodeToUserAsync = (type, mobile, areaCode) => {
* 发送找回手机号短信
*/
module
.
exports
.
sendCodeToMobileAsync
=
(
areaCode
,
mobile
)
=>
{
const
ERR
=
{
code
:
400
,
message
:
'验证失败'
};
if
(
!
helpers
.
verifyAreaMobile
(
helpers
.
makeAreaMobile
(
areaCode
,
mobile
)))
{
return
ERR
;
}
return
api
.
sendCodeToMobileAsync
(
mobile
,
areaCode
);
};
...
...
@@ -143,7 +135,14 @@ module.exports.indexPageDataAsync = () => {
};
module
.
exports
.
getVerifyCodeByMobilePageDataAsync
=
()
=>
{
return
co
(
function
*
()
{
return
{
verification
:
{
coverHref
:
''
,
coverImg
:
''
}
}
})();
};
module
.
exports
.
getSendEmailPageDataAsync
=
()
=>
{
...
...
apps/passport/models/passport-helper.js
View file @
999ce99
...
...
@@ -5,7 +5,6 @@
'use strict'
;
const
Cache
=
require
(
library
+
'/cache'
);
const
helpers
=
require
(
library
+
'/helpers'
);
const
Promise
=
require
(
'bluebird'
);
const
co
=
Promise
.
coroutine
;
...
...
apps/passport/models/session-service.js
View file @
999ce99
...
...
@@ -15,3 +15,5 @@ module.exports.findCaptchaByTokenAsync = (token) => {
}
})();
};
...
...
apps/passport/router.js
View file @
999ce99
...
...
@@ -25,34 +25,37 @@ router.get('/login/wechat/callback', login.wechat.callback);
router
.
get
(
'/back/index.html'
,
Back
.
indexPage
);
// 实时验证输入是否正确
router
.
post
(
'/back/authcode'
,
Captcha
.
checkAPI
,
Back
.
validateUser
InputAPI
,
Back
.
getUserInfoAPI
);
router
.
post
(
'/back/authcode'
,
Captcha
.
validateAPI
,
Back
.
validate
InputAPI
,
Back
.
getUserInfoAPI
);
// 提交按钮确定
router
.
post
(
'/back/mobile'
,
Captcha
.
checkPage
,
Back
.
validateUserInputAPI
,
Back
.
sendCodeAPI
);
// 提交按钮邮件API
router
.
post
(
'/back/email'
,
Captcha
.
validatePage
,
Back
.
validateInputPage
,
Back
.
sendCodePage
,
Back
.
saveInSession
);
// 提交按钮手机API
router
.
post
(
'/back/mobile'
,
Captcha
.
validatePage
,
Back
.
validateInputPage
,
Back
.
sendCodePage
,
Back
.
saveInSession
);
/**
* 邮件找回密码
*/
// 发送邮件成功页面
router
.
get
(
'/back/sendEmail.html'
,
Back
.
sendEmailPage
);
router
.
get
(
'/back/sendEmail.html'
,
Back
.
validateEmailInSession
,
Back
.
sendEmailPage
);
/**
* 短信找回密码
*/
// 验证手机短信页面
router
.
get
(
'/back/verification.html'
,
Back
.
verifyCodeByMobilePage
);
router
.
get
(
'/back/verification.html'
,
Back
.
v
alidateMobileInSession
,
Captcha
.
validatePage
,
Back
.
v
erifyCodeByMobilePage
);
// 重新发送短信接口
router
.
post
(
'/back/sendBackMobile'
,
Captcha
.
check
API
,
Back
.
sendBackMobileAPI
);
router
.
post
(
'/back/sendBackMobile'
,
Captcha
.
validateAPI
,
Back
.
validateMobile
API
,
Back
.
sendBackMobileAPI
);
// 验证手机验证码接口
router
.
post
(
'/back/backMobile'
,
Captcha
.
checkAPI
,
Back
.
verifyCody
ByMobileAPI
);
router
.
post
(
'/back/backMobile'
,
Captcha
.
validateAPI
,
Back
.
verifyCode
ByMobileAPI
);
/**
* 重置密码
*/
// 重置密码页面
router
.
get
(
'/back/backcode'
,
Back
.
tokenCheckPage
,
Back
.
checkCode
Page
,
Back
.
resetPasswordPage
);
router
.
get
(
'/back/backcode'
,
Back
.
tokenCheckPage
,
Back
.
verifyCodeByEmail
Page
,
Back
.
resetPasswordPage
);
// 重置密码接口
router
.
post
(
'/back/update'
,
Back
.
tokenCheckPage
,
Back
.
validationPwdPage
,
Back
.
updatePwdPage
);
...
...
apps/passport/views/action/back/reset-success.hbs
View file @
999ce99
...
...
@@ -9,7 +9,6 @@
</div>
{{/
resetSuccess
}}
</div>
{{>
layout
/
footer
}}
<script
type=
"text/javascript"
>
(
function
()
{
var
count
=
5
,
...
...
library/helpers.js
View file @
999ce99
...
...
@@ -319,3 +319,14 @@ exports.makeAreaMobile = (area, mobile) => {
return
`
$
{
area
}
-
$
{
mobile
}
`
;
};
exports
.
isPassword
=
(
pwd
)
=>
{
if
(
!
pwd
){
return
false
;
}
// TODO
let
pwdRegexp
=
/^
([
a-zA-Z0-9
\-\+
_!@
\#
$%
\^
&
\*\(\)\:\;\.
=
\[\]\\\'
,
\?]){6,20}
$/
;
return
pwdRegexp
.
test
(
_
.
trim
(
pwd
));
};
...
...
public/js/passport/back-index.page.js
View file @
999ce99
...
...
@@ -3,4 +3,3 @@
*/
require
(
'./back/back'
);
require
(
'./'
)
...
...
public/js/passport/back-reset-pwd.page.js
View file @
999ce99
/**
* Created by TaoHuang on 2016/6/21.
*/
require
(
'./back/reset'
);
...
...
Please
register
or
login
to post a comment