HttpBasicAuth::authenticate()   C
last analyzed

Complexity

Conditions 9
Paths 24

Size

Total Lines 22
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 16
nc 24
nop 3
dl 0
loc 22
rs 6.412
c 0
b 0
f 0
1
<?php
2
namespace graychen\yii2\basic\auth\filters;
3
4
use yii\filters\auth\HttpBasicAuth as BasicAuth;
5
6
/**
7
 * Class HttpBasicAuth
8
 * @package app\filters\auth
9
 */
10
class HttpBasicAuth extends BasicAuth
11
{
12
    /**
13
     * @inheritdoc
14
     */
15
    public function authenticate($user, $request, $response)
16
    {
17
        $username = empty($request->getAuthUser()) ? $request->get('x_app_key') : $request->getAuthUser();
18
        $password = empty($request->getAuthPassword()) ? $request->get('x_app_secret') : $request->getAuthPassword();
19
        if ($this->auth) {
20
            if ($username !== null || $password !== null) {
21
                $identity = call_user_func($this->auth, $username, $password);
22
                if ($identity !== null) {
23
                    $user->switchIdentity($identity);
24
                } else {
25
                    $this->handleFailure($response);
26
                }
27
                return $identity;
28
            }
29
        } elseif ($username !== null) {
30
            $identity = $user->loginByAccessToken($username, get_class($this));
31
            if ($identity === null) {
32
                $this->handleFailure($response);
33
            }
34
            return $identity;
35
        }
36
        return null;
37
    }
38
}
39