• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

miaoxing / user / 12075953391

03 Nov 2024 04:27PM UTC coverage: 12.349%. Remained the same
12075953391

push

github

semantic-release-bot
chore(release): publish

See CHANGELOG.md for more details.

20 of 75 branches covered (26.67%)

102 of 826 relevant lines covered (12.35%)

1.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Controller/PasswordController.php
1
<?php
2

3
namespace Miaoxing\User\Controller;
4

5
use Miaoxing\Plugin\Service\User;
6
use Miaoxing\Services\Middleware\LoadAppConfig;
7

8
class PasswordController extends \Miaoxing\Plugin\BaseController
9
{
10
    protected $actionAuths = [
11
        'reset' => false,
12
        'resetReturn' => false,
13
        'resetUpdate' => false,
14
        'createReset' => false,
15
        'sendVerifyCode' => false,
16
    ];
17

18
    /**
19
     * {@inheritdoc}
20
     */
21
    public function init()
22
    {
23
        parent::init();
×
24

25
        // @phpstan-ignore-next-line
26
        $this->middleware(LoadAppConfig::class, [
×
27
            'only' => ['sendVerifyCode'],
×
28
        ]);
×
29
    }
30

31
    public function indexAction($req)
32
    {
33
        $this->page->setTitle('修改密码');
×
34

35
        return get_defined_vars();
×
36
    }
37

38
    public function resetAction($req)
39
    {
40
        $this->page->setTitle('忘记密码');
×
41

42
        return get_defined_vars();
×
43
    }
44

45
    public function updateAction($req)
46
    {
47
        $ret = User::updatePassword($req);
×
48

49
        return $ret;
×
50
    }
51

52
    /**
53
     * 验证手机跟用户名并修改密码
54
     * @param $req
55
     * @return \Wei\Res
56
     */
57
    public function createResetByMobileAction($req)
58
    {
59
        // Step1 校验
60
        $validator = wei()->validate([
×
61
            'data' => $req,
×
62
            'rules' => [
×
63
                'username' => [
×
64
                    'length' => [3, 30],
×
65
                    'required' => true,
×
66
                    'alnum' => true,
×
67
                    'callback' => static function ($input) {
×
68
                        return !wei()->isDigit($input[0]);
×
69
                    },
×
70
                ],
×
71
                'mobile' => [
×
72
                    'required' => true,
×
73
                ],
×
74
                'verifyCode' => [
×
75
                    'required' => true,
×
76
                ],
×
77
                'password' => [
×
78
                    'minLength' => 6,
×
79
                ],
×
80
                'passwordConfirm' => [
×
81
                    'equalTo' => $req['password'],
×
82
                ],
×
83
            ],
×
84
            'names' => [
×
85
                'username' => '用户名',
×
86
                'mobile' => '手机号',
×
87
                'verifyCode' => '验证码',
×
88
                'password' => '密码',
×
89
                'passwordConfirm' => '重复密码',
×
90
            ],
×
91
            'messages' => [
×
92
                'username' => [
×
93
                    'required' => '请输入用户名',
×
94
                    'length' => '请输入3-30字符以内的用户名',
×
95
                ],
×
96
                'mobile' => [
×
97
                    'required' => '请输入手机号码',
×
98
                ],
×
99
                'verifyCode' => [
×
100
                    'required' => '请输入验证码',
×
101
                ],
×
102
                'passwordConfirm' => [
×
103
                    'equalTo' => '两次输入的密码不相等',
×
104
                ],
×
105
            ],
×
106
        ]);
×
107
        if (!$validator->isValid()) {
×
108
            return $this->err($validator->getFirstMessage());
×
109
        }
110

111
        // Step2 检查用户名跟手机号是否一致
112
        $user = wei()->user()->findOrInit(['username' => $req['username']]);
×
113
        if ($user->isNew()) {
×
114
            return $this->err('用户名不存在');
×
115
        }
116

117
        if ($user['mobile'] != $req['mobile']) {
×
118
            return $this->err('手机号码跟用户名不属于同一个用户');
×
119
        }
120

121
        // Step3 检查验证码是否正确
122
        $ret = wei()->verifyCode->check($req['mobile'], $req['verifyCode']);
×
123
        if (1 !== $ret['code']) {
×
124
            return $this->ret($ret + ['verifyCodeErr' => true]);
×
125
        }
126

127
        // Step4 修改密码
128
        $user->setPlainPassword($req['password']);
×
129
        $user->save();
×
130

131
        return $this->suc();
×
132
    }
133

134
    /**
135
     * 获取验证码
136
     * @param mixed $req
137
     */
138
    public function sendVerifyCodeAction($req)
139
    {
140
        if (!$req['mobile']) {
×
141
            return $this->err('请输入手机号码');
×
142
        }
143

144
        $user = wei()->user()->mobileVerified()->find(['mobile' => $req['mobile']]);
×
145
        if (!$user) {
×
146
            return $this->err('不存在该手机号码,请重新输入');
×
147
        }
148
        $ret = wei()->verifyCode->send($req['mobile']);
×
149

150
        return $this->ret($ret);
×
151
    }
152

153
    /**
154
     * 验证邮箱跟用户名并发送验证到邮箱
155
     * @param $req
156
     * @return \Wei\Res
157
     */
158
    public function createResetByEmailAction($req)
159
    {
160
        $ret = wei()->userPassword->createResetByEmail($req);
×
161

162
        return $this->ret($ret);
×
163
    }
164

165
    /**
166
     * 重置密码页面
167
     * @param $req
168
     * @return array
169
     */
170
    public function resetReturnAction($req)
171
    {
172
        $ret = wei()->userVerify->verify($req, false);
×
173
        if ($ret['code'] < 0) {
×
174
            return $this->err($ret['message']);
×
175
        }
176

177
        if (!wei()->ua->isWeChat()) {
×
178
            return wei()->res->redirect(wei()->url->full('registration/reset', $req->getQueries()));
×
179
        }
180

181
        $this->page->setTitle('重置密码');
×
182
        $userId = $req['userId'];
×
183
        $nonce = $req['nonce'];
×
184
        $timestamp = $req['timestamp'];
×
185
        $sign = $req['sign'];
×
186

187
        return get_defined_vars();
×
188
    }
189

190
    /**
191
     * 重置密码更新数据库
192
     * @param $req
193
     * @return \Wei\Res
194
     */
195
    public function resetUpdateAction($req)
196
    {
197
        $ret = wei()->userPassword->resetPassword($req);
×
198

199
        return $this->ret($ret);
×
200
    }
201
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc