Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yohobuywap-node
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
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
947af4a2b548c51acf5e8b72ea73f7a9a5d2169d
1 parent
1e67c9c8
add api and service
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
413 additions
and
7 deletions
apps/passport/controllers/back.js
apps/passport/models/back-api.js
apps/passport/models/back-service.js
library/helpers.js
apps/passport/controllers/back.js
View file @
947af4a
...
...
@@ -5,27 +5,184 @@
'use strict'
;
const
_
=
require
(
'lodash'
);
const
library
=
'../../../library'
;
const
helpers
=
require
(
`
$
{
library
}
/helpers`
)
;
const
service
=
require
(
'../models/back-service'
);
/**
* 通过邮箱找回密码
* @param req
* @param res
*/
module
.
exports
.
b
yEmail
=
(
req
,
res
)
=>
{
module
.
exports
.
indexB
yEmail
=
(
req
,
res
)
=>
{
let
data
=
{
backUrl
:
helpers
.
urlFormat
(
'
/
signin.html'
),
backUrl
:
helpers
.
urlFormat
(
'signin.html'
),
headerText
:
'找回密码'
,
isPassportPage
:
true
,
backEmail
:
true
};
res
.
render
(
'back/by-email'
,
{
result
:
data
,
res
.
render
(
'back/by-email'
,
Object
.
assign
({
module
:
'passport'
,
page
:
'back'
,
title
:
data
.
backUrl
title
:
'找回密码-通过邮箱'
},
data
)
);
};
/**
* 发送验证码到邮箱
*/
module
.
exports
.
sendEmail
=
(
req
,
res
,
next
)
=>
{
let
email
=
req
.
body
.
email
||
''
;
if
(
!
helpers
.
verifyEmail
(
email
))
{
res
.
json
({
code
:
400
,
message
:
'邮箱格式不正确,请重新输入'
,
data
:
''
});
return
;
}
service
.
sendCodeToEmailAsync
(
email
).
then
(
result
=>
{
if
(
result
.
code
===
200
)
{
result
.
data
=
helpers
.
urlFormat
(
'passport/back/success'
,
{
email
:
email
});
}
res
.
json
(
result
);
}).
catch
(
next
);
};
/**
* 重新发送邮箱验证码
*/
module
.
exports
.
resendEmail
=
(
req
,
res
)
=>
{
let
email
=
req
.
params
.
email
||
''
;
service
.
sendCodeToEmailAsync
(
email
).
then
(
result
=>
{
if
(
_
.
isEmpty
(
result
))
{
return
Promise
.
rejected
(
'重发邮件失败'
);
}
res
.
json
(
result
);
}).
catch
(
err
=>
{
res
.
json
({
code
:
400
,
message
:
err
});
});
};
/**
* 邮箱找回密码-成功
*/
module
.
exports
.
success
=
(
req
,
res
)
=>
{
let
email
=
req
.
params
.
email
||
''
;
if
(
!
helpers
.
verifyEmail
(
email
))
{
res
.
redirect
(
400
);
}
let
domain
=
email
.
split
(
'@'
)[
1
];
let
emailUrl
=
`
http
:
//${domain === 'gmail.com' ? 'mail.google.com' : 'mail.'}${domain}`;
res
.
render
(
'email-success'
,
{
backUrl
:
helpers
.
urlFormat
(
'emailback.html'
),
headerText
:
'找回密码'
,
isPassportPage
:
true
,
backEmailSuccess
:
true
,
goEmail
:
emailUrl
,
resendUrl
:
helpers
.
urlFormat
(
'passport/back/resendemail'
,
{
email
:
email
}),
title
:
'找回密码-通过邮箱'
});
};
/**
* 根据邮箱修改密码
*/
module
.
exports
.
success
=
(
req
,
res
)
=>
{
let
pwd
=
req
.
body
.
password
||
''
;
let
code
=
req
.
body
.
code
||
''
;
let
data
=
{
code
:
200
,
data
:
helpers
.
urlFormat
(
'signin.html'
)
};
service
.
modifyPasswordByEmailAsync
(
pwd
,
code
).
then
(
result
=>
{
if
(
result
.
includes
(
'history.back'
))
{
data
.
code
=
400
;
data
.
message
=
'修改失败'
;
}
res
.
json
(
data
);
}).
catch
(()
=>
{
res
.
json
(
data
);
});
};
/**
* 找回密码-通过手机号
*/
module
.
exports
.
indexByMobile
=
(
req
,
res
)
=>
{
service
.
getAreaDataAsync
().
then
(
result
=>
{
res
.
render
(
'mobile'
,
{
backUrl
:
helpers
.
urlFormat
(
'signin.html'
),
headerText
:
'找回密码'
,
isPassportPage
:
true
,
backMobile
:
true
,
countrys
:
result
,
areaCode
:
'+86'
,
title
:
'找回密码-通过手机号'
});
});
};
/**
* 发送手机验证码
*/
module
.
exports
.
sendVerifyCodeBySMS
=
(
req
,
res
)
=>
{
let
result
=
{
code
:
400
,
message
:
'密码只能使用数字、字母和半角标点符号,请重新输入'
,
data
:
''
};
let
phoneNum
=
req
.
body
.
phoneNum
||
''
;
let
areaCode
=
req
.
body
.
areaCode
||
'86'
;
if
(
!
helpers
.
verifyMobile
(
phoneNum
))
{
res
.
json
(
result
);
}
service
.
sendCodeToMobileAsync
(
phoneNum
,
areaCode
).
then
(
data
=>
{
if
(
_
.
isEmpty
(
data
))
{
return
Promise
.
rejected
(
'发送验证码出错'
);
}
if
(
data
.
code
===
200
)
{
result
.
data
=
helpers
.
urlFormat
(
'passport/back/mobilecode'
,
{
phoneNum
:
phoneNum
,
areaCode
:
areaCode
});
res
.
json
(
result
);
}
else
{
return
Promise
.
rejected
(
'发送验证码出错'
);
}
}).
catch
(
err
=>
{
result
.
message
=
err
;
res
.
json
(
result
);
});
};
...
...
apps/passport/models/back-api.js
0 → 100644
View file @
947af4a
/**
* Created by TaoHuang on 2016/6/14.
*/
'use strict'
;
var
API
=
require
(
'../../../library/api'
).
API
;
const
library
=
'../../../library'
;
const
sign
=
require
(
`
$
{
library
}
/sign`
)
;
var
api
=
new
API
();
const
YOHOBUY_URL
=
'http://www.yohobuy.com/'
;
/**
* 获取地区数据
*/
module
.
exports
.
getAreaDataAsync
=
()
=>
{
return
api
.
get
(
''
,
sign
.
apiSign
({
method
:
'app.passport.getArea'
}));
};
/**
* 通过邮箱找回密码
*
* @param string mail 邮箱地址
*/
module
.
exports
.
sendCodeToEmailAsync
=
(
email
)
=>
{
return
api
.
get
(
''
,
sign
.
apiSign
({
method
:
'app.register.backpwdByEmail'
,
email
:
email
}));
};
/**
* 根据邮箱验证码修改密码(调用www.yohobuy.com接口)
*
* @param string pwd 新密码
* @param string code 邮箱验证码
*/
module
.
exports
.
modifyPasswordByEmailAsync
=
(
pwd
,
code
)
=>
{
const
options
=
{
url
:
`
$
{
YOHOBUY_URL
}
passport
/
back
/
update
`
,
form
:
{
pwd
:
pwd
,
're-input'
:
pwd
,
code
:
code
},
timeout
:
3000
};
return
api
.
_requestFromAPI
(
options
);
};
/**
* 通过手机找回密码
*
* @param string mobile 手机号
* @param integer area 地区码ID
*/
module
.
exports
.
sendCodeToMobileAsync
=
(
mobile
,
area
)
=>
{
area
=
area
||
86
;
return
api
.
get
(
''
,
sign
.
apiSign
({
mobile
:
mobile
,
area
:
area
,
method
:
'app.register.sendBackpwdCodeToMobile'
}));
};
/**
* 校验密码修改手机验证码
*
* @param string mobile 手机号
* @param string code 验证码
* @param integer area 地区码ID
*/
module
.
exports
.
validateMobileCodeAsync
=
(
mobile
,
code
,
area
)
=>
{
area
=
area
||
86
;
return
api
.
get
(
''
,
sign
.
apiSign
({
mobile
:
mobile
,
code
:
code
,
area
:
area
,
method
:
'app.register.validBackpwdCode'
}));
};
/**
* 根据手机验证码修改密码
*
* @param string mobile 手机号
* @param string token 验证手机验证码返回的token
* @param integer area 地区码ID
*/
module
.
exports
.
modifyPasswordByMobileAsync
=
(
mobile
,
token
,
newpwd
,
area
)
=>
{
area
=
area
||
86
;
return
api
.
get
(
''
,
sign
.
apiSign
({
mobile
:
mobile
,
token
:
token
,
newpwd
:
newpwd
,
area
:
area
,
method
:
'app.register.changepwdByMobileCode'
}));
};
/**
* 验证找回邮件code
*/
module
.
exports
.
checkEmailCodeAsync
=
(
code
)
=>
{
return
api
.
get
(
''
,
sign
.
apiSign
({
code
:
code
,
method
:
'web.passport.checkCodeValid'
}));
};
/**
* 根据邮箱code修改密码
*/
module
.
exports
.
modifyPasswordByEmailCodeAsync
=
(
code
,
password
)
=>
{
return
api
.
get
(
''
,
sign
.
apiSign
({
code
:
code
,
newPwd
:
password
,
method
:
'app.register.resetPwdByCode'
}));
};
...
...
apps/passport/models/back-service.js
0 → 100644
View file @
947af4a
/**
* Created by TaoHuang on 2016/6/14.
*/
'use strict'
;
const
api
=
require
(
'./back-api'
);
module
.
exports
=
api
;
...
...
library/helpers.js
View file @
947af4a
...
...
@@ -163,3 +163,116 @@ exports.dateDiffFormat = (format, diff, type) => {
return
format
;
}
};
/**
* 验证邮箱是否合法
*
* @param string email
* @return boolean
*/
exports
.
verifyEmail
=
(
email
)
=>
{
if
(
!
email
)
{
return
false
;
}
const
emailRegExp
=
/^
[
a-zA-Z0-9_-
]
+@
[
a-zA-Z0-9_-
]
+
(\.[
a-zA-Z0-9_-
]
+
)
+$/
;
return
emailRegExp
.
test
(
email
);
};
/**
* 各国手机号规则
*/
function
areaMobileVerify
(
phone
,
area
)
{
area
=
area
||
'86'
;
phone
=
phone
.
trim
();
let
verify
=
{
86
:
{
name
:
'中国'
,
match
:
/^1
[
3|4|5|8|7
][
0-9
]{9}
$/
.
test
(
phone
)
},
852
:
{
name
:
'中国香港'
,
match
:
/^
[
9|6|5
][
0-9
]{7}
$/
.
test
(
phone
)
},
853
:
{
name
:
'中国澳门'
,
match
:
/^
[
0-9
]{8}
$/
.
test
(
phone
)
},
886
:{
name
:
'中国台湾'
,
match
:
/^
[
0-9
]{10}
$/
.
test
(
phone
)
},
65
:
{
name
:
'新加坡'
,
match
:
/^
[
9|8
][
0-9
]{7}
$/
.
test
(
phone
)
},
60
:
{
name
:
'马来西亚'
,
match
:
/^1
[
1|2|3|4|6|7|9
][
0-9
]{8}
$/
.
test
(
phone
)
},
1
:
{
name
:
'加拿大&美国'
,
match
:
/^
[
0-9
]{10}
$/
.
test
(
phone
)
},
82
:
{
name
:
'韩国'
,
match
:
/^01
[
0-9
]{9}
$/
.
test
(
phone
)
},
44
:
{
name
:
'英国'
,
match
:
/^7
[
7|8|9
][
0-9
]{8}
$/
.
test
(
phone
)
},
81
:
{
name
:
'日本'
,
match
:
/^0
[
9|8|7
][
0-9
]{9}
$/
.
test
(
phone
)
},
61
:
{
name
:
'澳大利亚'
,
match
:
/^
[
0-9
]{11}
$/
.
test
(
phone
)
}
};
if
(
verify
[
area
])
{
return
verify
[
area
].
match
;
}
else
{
return
false
;
}
}
/**
* 验证国际手机号是否合法
*/
exports
.
verifyAreaMobile
=
(
areaMobile
)
=>
{
if
(
!
areaMobile
)
{
return
false
;
}
let
mobile
=
{
area
:
'86'
,
phone
:
''
};
let
splitMobile
=
areaMobile
.
split
(
'-'
);
if
(
splitMobile
.
length
===
2
)
{
mobile
.
area
=
splitMobile
[
0
];
mobile
.
phone
=
splitMobile
[
1
];
}
else
{
mobile
.
phone
=
splitMobile
[
0
];
}
return
areaMobileVerify
(
mobile
.
phone
,
mobile
.
area
);
};
/**
* 验证手机是否合法
*/
exports
.
verifyMobile
=
(
phone
)
=>
{
if
(
!
phone
)
{
return
false
;
}
return
/^1
[
3|4|5|8|7
][
0-9
]{9}
$/
.
test
(
phone
);
};
...
...
Please
register
or
login
to post a comment