php - 如何在没有密码的情况下在 MediaWiki 1.19 中授权用户?

标签 php authorization mediawiki session-cookies

在我的插件中,我只有用户名或电子邮件,我必须授权该用户。我发现了下一个问题,但它对我不起作用:

    class ApiPlugin extends ApiBase {
        public function execute() {
            $params = $this->extractRequestParams();

            switch ( $params['do'] ) {
                case 'login':
                    // Registering. Works fine.
                    $user = User::newFromName( 'admin' );
                    $user->setEmail( admin@email.com );
                    $user->setRealName( 'admin' );
                    $uid = $user->idForName();

                    if ( $uid === 0 ) {
                        $user->addToDatabase();
                        $user->setPassword( generate_password() );
                        $user->saveSettings();
                    }
                    $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
                    $ssu->doUpdate();

                    if ($user->isLoggedIn()) $user->doLogout();

                    //Logging in.
                    $id = User::idFromName('admin');
                    $user->setID($id);
                    $user->loadFromId();

                    $user->setToken();
                    $user->saveSettings();

                    wfSetupSession();
                    $user->setCookies();
                    break;
            }

        }
    }

此外,另一个问题是直接从数据库获取密码哈希,但这是野蛮行为......
提前致谢!

最佳答案

几天后,我尝试将代码和……利润分开!

class ApiPlugin extends ApiBase {
    public function execute() {
        $params = $this->extractRequestParams();

        switch ( $params['do'] ) {
            case 'register':
                // Registering. Works fine.
                $user = User::newFromName( 'admin' );
                $user->setEmail( admin@email.com );
                $user->setRealName( 'admin' );
                $uid = $user->idForName();

                if ( $uid === 0 ) {
                    $user->addToDatabase();
                    $user->setPassword( generate_password() );
                    $user->saveSettings();
                }
                $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
                $ssu->doUpdate();
            case 'authorise':
                if ($user->isLoggedIn()) $user->doLogout();
                wfSetupSession();
                //Logging in.
                $id = User::idFromName('admin');
                $user->setID($id);
                $user->loadFromId();

                $user->setToken();
                $user->saveSettings();

                $user->setCookies();
                break;
        }

    }
}

关于php - 如何在没有密码的情况下在 MediaWiki 1.19 中授权用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207692/

相关文章:

php - 写入一个具有一个函数的文件

php - 如何使 php 后端与 HTML 前端通信?

php - 如何通过 PHP 制作 MYSQL 数据的多维数组

authorization - 我如何获得 XACML 政策的许可?

php - 通过用户组为 MediaWiki 用户添加自定义权限

php - 在 Laravel 中进行了多次日期验证

php - 如何在 rest api 中验证/检查基本身份验证 header

api - 如何验证每个用户可以使用 OAuth 和 OpenID Connect 访问哪些资源?

php - 如何加载MediaWiki的WikiEditor?

permissions - Mediawiki - 只有特定的用户组可以阅读/访问