2015-07-05 6 views
1

Я создаю пользовательский веб-семинар для humhub. Я использую модули Custom_pages (https://www.humhub.org/marketplace/details?id=13) Как я могу получить пользовательские данные о текущем зарегистрированном пользователе внутри моего приложения?Получение информации о пользователе с сторонним приложением в HumHub

Кто-то дал мне этот код, чтобы попробовать

//plug in to Yii application 
require_once('../protected/vendors/yii/yii.php'); 
Yii::createWebApplication('../protected/config/main.php'); 

//------------------ 

//print_r(Yii::app()); 

echo "<br />"; 

//check if user is logged in (not a guest) 
if(!Yii::app()->user->isGuest) 
{ 
    //if logged in, display the username and ID 
    echo "<strong>Logged In.</strong>"; 
    echo "<br />"; 
    echo "Username: ".Yii::app()->user->name; 
    echo "<br />"; 
    echo "User ID: ".Yii::app()->user->id; 
} 
else 
{ 
    //if not logged in, display username (Guest) 
    echo "<strong>Not Logged In.</strong>"; 
    echo "<br />"; 
    echo "Username: ".Yii::app()->user->name; 
} 

Но по какой-то причине line 3 делает страницу не сработал. если я прокомментирую это, страница загружается, но Yii пуст.

Есть ли способ, которым я могу получить информацию о пользователе вошедшего в систему пользователя в этом моем стороннем приложении?

Любой подход был бы оценен

ответ

1

Я использовал свой код и он работал хорошо для меня, однако мне нужно изменить его для моих потребностей. Возможно, мои модификации будут работать на вас.

<?PHP 
//this script gets the id and email "as name" from hum hub 
require_once('../humhub-master/protected/vendors/yii/yii.php'); 
Yii::createWebApplication('../humhub-master/protected/config/main.php'); 

//I create these vars to use in my custom pages 
    $hum_uid=Yii::app()->user->id; 
    $hum_name=Yii::app()->user->name; 
    // this should get me a real username 
$servername = "******"; 
$username = "******"; 
$password = "*****"; 
$dbname = "humhub"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT id, username FROM user WHERE id='$hum_uid'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $hum_username = $row["username"]; 
     echo $hum_username; 
    } 
} else { 
    echo "0 results"; 
} 
?> 

Я положил это на верх страницы пользовательской страницы iframe в humhub. Когда вам нужно имя пользователя, просто используйте $ hum_username.

Использование SQL SELECT вы можете получить все, что вы хотите из пользовательской таблицы в базе данных WHERE ID = '$ hum_uid'

0

намного проще:

$userUsername = Yii::$app->user->identity->username; 

Другой полезный вары:

$userDisplayName = Yii::$app->user->identity->getDisplayName(); 
$userAttributesArray = Yii::$app->user->identity->getSearchAttributes(); // all profile fields and groups  
$userIsGuest = Yii::$app->user->isGuest; // true = loggedOut, false = loggedIn 
$userIsAdmin = \humhub\modules\admin\widgets\AdminMenu::canAccess();