Php Joomla ACL集成

Php Joomla ACL集成,php,joomla,single-sign-on,acl,Php,Joomla,Single Sign On,Acl,是否有人知道任何与Joomla ACL集成的方法,特别是在自定义组件的控制器和模块中以编程方式创建用户和登录用户 我搜索过谷歌,但不是问错了问题,没有人记录过怎么做,就是不可能(我不相信!) 你为什么会问我正在为一个组件开发一个单一登录应用程序,当用户登录时,该组件必须将用户登录到多个API。不幸的是,我的客户也希望它与ACL一起工作,这样他们就可以根据用户是否登录在网站前端显示控制内容 因此,我需要做的是创建我自己的登录视图,使用时,使用用户的API将用户登录到各种系统,并将其登录到Jooml

是否有人知道任何与Joomla ACL集成的方法,特别是在自定义组件的控制器和模块中以编程方式创建用户和登录用户

我搜索过谷歌,但不是问错了问题,没有人记录过怎么做,就是不可能(我不相信!)

你为什么会问我正在为一个组件开发一个单一登录应用程序,当用户登录时,该组件必须将用户登录到多个API。不幸的是,我的客户也希望它与ACL一起工作,这样他们就可以根据用户是否登录在网站前端显示控制内容


因此,我需要做的是创建我自己的登录视图,使用时,使用用户的API将用户登录到各种系统,并将其登录到Joomla ACL(或创建一个帐户并登录到Joomla ACL)。

您只需克隆其登录部分的已安装mod_登录,并使用以下某种形式的代码创建用户帐户:

您可以使用以下命令创建用户:

require_once('registration.php');
jimport('joomla.user.helper');
jimport('joomla.application.component.modeladmin');
$data = array(
    'username'  => 'jdoe',
    'name'      => 'Joan Doe',
    'email1'    => jdoe@jdoe.com,
    'password1' => 'abc123', // First password field
    'password2' => 'abc123', // Confirm password field
    'block'     => 0,
    'params'    => array(
        'admin_style'=>'',
        'admin_language'=>'',
        'language'=>'',
        'editor'=>'',
        'helpsite'=>'',
        'timezone'=>''
    )
);
$model = new UsersModelRegistration();
if(!$user = $model->register($data)) {
    echo $model->getError();
}
$app = JFactory::getApplication('site');
$credentials = array(
    'username' => 'someusername',
    'password' => 'somepassword'
);
if(!$app->login($credentials)){
    echo 'Logged in';
}else{
    echo 'Not logged in';
}
$app->logout();    // Log out with this
$app->close();     // Close the app
您可以通过以下方式登录:

require_once('registration.php');
jimport('joomla.user.helper');
jimport('joomla.application.component.modeladmin');
$data = array(
    'username'  => 'jdoe',
    'name'      => 'Joan Doe',
    'email1'    => jdoe@jdoe.com,
    'password1' => 'abc123', // First password field
    'password2' => 'abc123', // Confirm password field
    'block'     => 0,
    'params'    => array(
        'admin_style'=>'',
        'admin_language'=>'',
        'language'=>'',
        'editor'=>'',
        'helpsite'=>'',
        'timezone'=>''
    )
);
$model = new UsersModelRegistration();
if(!$user = $model->register($data)) {
    echo $model->getError();
}
$app = JFactory::getApplication('site');
$credentials = array(
    'username' => 'someusername',
    'password' => 'somepassword'
);
if(!$app->login($credentials)){
    echo 'Logged in';
}else{
    echo 'Not logged in';
}
$app->logout();    // Log out with this
$app->close();     // Close the app
要在登录过程中添加自定义代码,您可以编写一个简单的用户身份验证插件。(请参阅)并将代码放入
onAuthenticate()
函数中

要在身份验证后添加自定义代码,请编写一个用户插件(请参阅),并使用其中触发的事件之一


我不清楚所存储的ACL值,因此得到了澄清。这是关于类别权限的,但它的答案可能会有所帮助。

这很好,而且已经取得了进展,所以非常感谢您。但是,当我注册一个帐户时,“block”被设置为1-我似乎无法将其设置为0,或者查找id将其设置为0-或者查找激活码以调用激活方法。任何进一步的帮助都将不胜感激。忽略上面的评论,我通过查看课程代码得出了答案-你帮了我大忙,非常感谢!