summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/EmailLogin/classes/EmailPasswordAuthenticationProvider.php
blob: 2c4d133dd57e6817c2049a747c93948d4217667e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php

namespace EmailLogin;

use MediaWiki\Auth\AuthenticationRequest;
use MediaWiki\Auth\AuthenticationResponse;
use MediaWiki\Auth\LocalPasswordPrimaryAuthenticationProvider;
use MediaWiki\Auth\PasswordAuthenticationRequest;

class EmailPasswordAuthenticationProvider extends LocalPasswordPrimaryAuthenticationProvider
{
    public function beginPrimaryAuthentication(array $reqs)
    {
        $req = AuthenticationRequest::getRequestByClass($reqs, PasswordAuthenticationRequest::class);

        $dbr = wfGetDB(DB_REPLICA);
        $row = $dbr->selectRow(
            'user',
            ['user_email', 'user_name'],
            ['user_email' => $req->username],
            __METHOD__
        );
        if (!$row) {
            return AuthenticationResponse::newAbstain();
        }
        $req->username = $row->user_name;

        return parent::beginPrimaryAuthentication([$req]);
    }
}