1+ <?php
2+ /**
3+ * Created by PhpStorm.
4+ * User: zhangjun
5+ * Date: 10/09/2018
6+ * Time: 10:46 AM
7+ */
8+
9+
10+ class Api_Passport_PasswordModifyPasswordController extends BaseController
11+ {
12+ private $ classNameForRequest = '\Zaly\Proto\Site\ApiPassportPasswordModifyPasswordRequest ' ;
13+ private $ classNameForResponse = '\Zaly\Proto\Site\ApiPassportPasswordModifyPasswordResponse ' ;
14+
15+ public function rpcRequestClassName ()
16+ {
17+ return $ this ->classNameForRequest ;
18+ }
19+
20+ /**
21+ * @param \Zaly\Proto\Site\ApiPassportPasswordModifyPasswordRequest $request
22+ * @param \Google\Protobuf\Internal\Message $transportData
23+ */
24+ public function rpc (\Google \Protobuf \Internal \Message $ request , \Google \Protobuf \Internal \Message $ transportData )
25+ {
26+ $ tag = __CLASS__ . '- ' . __FUNCTION__ ;
27+ try {
28+ $ newPassword = $ request ->getNewPassword ();
29+ $ password = $ request ->getPassword ();
30+ $ loginName = $ request ->getLoginName ();
31+ $ this ->ctx ->Wpf_Logger ->error ($ tag , "error_msg= " . $ request ->serializeToJsonString ());
32+ $ this ->checkOldPassword ($ loginName , $ password );
33+ $ this ->updatePasswordByLoginName ($ loginName , $ newPassword );
34+ $ this ->setRpcError ($ this ->defaultErrorCode , "" );
35+ }catch (Exception $ ex ) {
36+ $ this ->ctx ->Wpf_Logger ->error ($ tag , "error_msg= " . $ ex ->getMessage ());
37+ }
38+ $ this ->rpcReturn ($ transportData ->getAction (), new $ this ->classNameForResponse ());
39+ }
40+
41+ private function checkOldPassword ($ loginName , $ password )
42+ {
43+ $ userInfo = $ this ->ctx ->PassportPasswordTable ->getUserByLoginName ($ loginName );
44+ if ($ userInfo == false ) {
45+ $ errorCode = $ this ->zalyError ->errorExistUser ;
46+ $ errorInfo = $ this ->zalyError ->getErrorInfo ($ errorCode );
47+ $ this ->setRpcError ($ errorCode , $ errorInfo );
48+ throw new Exception ("user is not exists " );
49+ }
50+
51+ if (!password_verify ($ password , $ userInfo ['password ' ])) {
52+ $ errorCode = $ this ->zalyError ->errorMatchLogin ;
53+ $ errorInfo = $ this ->zalyError ->getErrorInfo ($ errorCode );
54+ $ this ->setRpcError ($ errorCode , $ errorInfo );
55+ throw new Exception ("loginName password is not match " );
56+ }
57+ }
58+
59+ private function updatePasswordByLoginName ($ loginName , $ password )
60+ {
61+ $ tag = __CLASS__ . '- ' . __FUNCTION__ ;
62+
63+ try {
64+ $ where = [
65+ "loginName " => $ loginName
66+ ];
67+ $ data = [
68+ "password " => password_hash ($ password , PASSWORD_BCRYPT )
69+ ];
70+ $ this ->ctx ->PassportPasswordTable ->updateUserData ($ where , $ data );
71+ }catch (Exception $ ex ) {
72+ $ this ->ctx ->Wpf_Logger ->error ($ tag , "error_msg= " . $ ex ->getMessage ());
73+ $ errorCode = $ this ->zalyError ->errorUpdatePwd ;
74+ $ errorInfo = $ this ->zalyError ->getErrorInfo ($ errorCode );
75+ $ this ->setRpcError ($ errorCode , $ errorInfo );
76+ throw new Exception ("update password failed " );
77+ }
78+ }
79+ }
0 commit comments