Получение сведений о пользователе с помощью стороннего приложения в HumHub

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

Кто-то дал мне попробовать

//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 пуста.

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

Любой подход будет оценен по достоинству


person Raymond Ativie    schedule 05.07.2015    source источник


Ответы (2)


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

    <?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'

person David Jeffery    schedule 05.09.2015

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

$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();
person FunkycraM    schedule 19.12.2017