PMA\libraries\plugins\auth\AuthenticationHttp::authSetUser PHP Method

authSetUser() public method

Set the user and password after last checkings if required
public authSetUser ( ) : boolean
return boolean always true
    public function authSetUser()
    {
        global $cfg, $server;
        global $PHP_AUTH_USER, $PHP_AUTH_PW;
        // Ensures valid authentication mode, 'only_db', bookmark database and
        // table names and relation table name are used
        if (!hash_equals($cfg['Server']['user'], $PHP_AUTH_USER)) {
            $servers_cnt = count($cfg['Servers']);
            for ($i = 1; $i <= $servers_cnt; $i++) {
                if (isset($cfg['Servers'][$i]) && ($cfg['Servers'][$i]['host'] == $cfg['Server']['host'] && hash_equals($cfg['Servers'][$i]['user'], $PHP_AUTH_USER))) {
                    $server = $i;
                    $cfg['Server'] = $cfg['Servers'][$i];
                    break;
                }
            }
            // end for
        }
        // end if
        $cfg['Server']['user'] = $PHP_AUTH_USER;
        $cfg['Server']['password'] = $PHP_AUTH_PW;
        // Avoid showing the password in phpinfo()'s output
        unset($GLOBALS['PHP_AUTH_PW']);
        unset($_SERVER['PHP_AUTH_PW']);
        $this->setSessionAccessTime();
        return true;
    }

Usage Example

 /**
  * Test for PMA\libraries\plugins\auth\AuthenticationHttp::authSetUser
  *
  * @return void
  */
 public function testAuthSetUser()
 {
     // case 1
     $GLOBALS['PHP_AUTH_USER'] = '******';
     $GLOBALS['PHP_AUTH_PW'] = 'testPass';
     $GLOBALS['server'] = 2;
     $GLOBALS['cfg']['Server']['user'] = '******';
     $this->assertTrue($this->object->authSetUser());
     $this->assertEquals('testUser', $GLOBALS['cfg']['Server']['user']);
     $this->assertEquals('testPass', $GLOBALS['cfg']['Server']['password']);
     $this->assertFalse(isset($GLOBALS['PHP_AUTH_PW']));
     $this->assertFalse(isset($_SERVER['PHP_AUTH_PW']));
     $this->assertEquals(2, $GLOBALS['server']);
     // case 2
     $GLOBALS['PHP_AUTH_USER'] = '******';
     $GLOBALS['PHP_AUTH_PW'] = 'testPass';
     $GLOBALS['cfg']['Servers'][1] = array('host' => 'a', 'user' => 'testUser', 'foo' => 'bar');
     $GLOBALS['cfg']['Server'] = array('host' => 'a', 'user' => 'user2');
     $this->assertTrue($this->object->authSetUser());
     $this->assertEquals(array('user' => 'testUser', 'password' => 'testPass', 'host' => 'a', 'foo' => 'bar'), $GLOBALS['cfg']['Server']);
     $this->assertEquals(1, $GLOBALS['server']);
     // case 3
     $GLOBALS['server'] = 3;
     $GLOBALS['PHP_AUTH_USER'] = '******';
     $GLOBALS['PHP_AUTH_PW'] = 'testPass';
     $GLOBALS['cfg']['Servers'][1] = array('host' => 'a', 'user' => 'testUsers', 'foo' => 'bar');
     $GLOBALS['cfg']['Server'] = array('host' => 'a', 'user' => 'user2');
     $this->assertTrue($this->object->authSetUser());
     $this->assertEquals(array('user' => 'testUser', 'password' => 'testPass', 'host' => 'a'), $GLOBALS['cfg']['Server']);
     $this->assertEquals(3, $GLOBALS['server']);
 }