2012-06-28 126 views
0

我需要創建一個系統插件(無auth插件!),其中登錄到前端automaticaly的用戶也會在後端登錄。 (用戶有權通過管理員登錄到後端)用戶登錄到前端 - 插件自動登錄到後端

我嘗試通過下面看到的非常基本的代碼來做到,結果是肯定的,但如果我轉到後端,用戶仍然需要登錄。

在會話表中設置了後端會話行,但「guest」字段設置爲1而不是0,並且用戶標識設置爲0而不是正確的標識。

這怎麼辦?

function onAfterInitialise() { 

if(JFactory::getUser()->get('id')) { // logged in? 

    $credentials = array(); 
    $credentials['username'] = "walter"; // hardcoded first 
    $credentials['password'] = "123"; // hardcoded first 

    $options = array(); 
    $options['action'] = 'core.login.admin'; 
    $result = $app->login($credentials, $options); // this seams to work 
    if (!($result instanceof Exception)) { 
     $app->redirect("www.bummer.de"); 
    } 
} 

回答

1

除此之外是,在this question提到的Joomla一個非常糟糕的主意!被實現爲兩個應用程序前端(/index.php)和後端應用程序(/administrator/index.php)。

在提供的代碼中,您不顯示$app被初始化的位置,所以我猜測它可能類似$app->JFactory::getApplication('site');

要登錄到管理應用程序,您需要獲取它而不是前端客戶端應用程序,例如

$adminApp->JFactory::getApplication('administrator'); 
$result = $adminApp->login($credentials, $options); 

n.b.這是未經測試的代碼,只是鍵入堆棧溢出......它應該是正確的。

+0

我已經用JFactory :: getApplication('administrator')調用進行了測試。仍然沒有創建後端會話。 – Mike