Skip to content

Commit

Permalink
Export additional user data
Browse files Browse the repository at this point in the history
  • Loading branch information
yurabakhtin committed Sep 12, 2024
1 parent 2ed2eae commit 1ee4611
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 8 deletions.
45 changes: 44 additions & 1 deletion Events.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use humhub\modules\activity\models\Activity;
use humhub\modules\comment\models\Comment;
use humhub\modules\file\models\File;
use humhub\modules\friendship\models\Friendship;
use humhub\modules\legal\events\UserDataCollectionEvent;
use humhub\modules\like\models\Like;
use humhub\modules\notification\models\Notification;
Expand All @@ -25,7 +26,13 @@
use humhub\modules\rest\definitions\SpaceDefinitions;
use humhub\modules\rest\definitions\UserDefinitions;
use humhub\modules\rest\models\Invite;
use humhub\modules\space\models\Membership;
use humhub\modules\space\models\Space;
use humhub\modules\user\models\Auth;
use humhub\modules\user\models\Follow;
use humhub\modules\user\models\Group;
use humhub\modules\user\models\Mentioning;
use humhub\modules\user\models\Session;
use Yii;

class Events
Expand Down Expand Up @@ -159,7 +166,7 @@ public static function onBeforeRequest($event)
['pattern' => 'rest/admin/index', 'route' => 'rest/admin', 'verb' => ['POST', 'GET']],

// Catch all to ensure verbs
['pattern' => 'rest/<tmpParam:.*>', 'route' => 'rest/error/notfound']
['pattern' => 'rest/<tmpParam:.*>', 'route' => 'rest/error/notfound'],

], true);

Expand All @@ -180,6 +187,35 @@ public static function onLegalModuleUserDataExport(UserDataCollectionEvent $even
{
$event->addExportData('user', UserDefinitions::getUser($event->user));

$event->addExportData('password', UserDefinitions::getPassword($event->user->currentPassword));

$event->addExportData('friendship', array_map(function ($friendship) {
return UserDefinitions::getFriendship($friendship);
}, Friendship::findAll(['user_id' => $event->user->id])));

$event->addExportData('mentioning', array_map(function ($mentioning) {
return UserDefinitions::getMentioning($mentioning);
}, Mentioning::findAll(['user_id' => $event->user->id])));

$event->addExportData('user-follow', array_map(function ($follow) {
return UserDefinitions::getUserFollow($follow);
}, Follow::findAll(['user_id' => $event->user->id])));

$event->addExportData('auth', array_map(function ($auth) {
return UserDefinitions::getUserAuth($auth);
}, Auth::findAll(['user_id' => $event->user->id])));

$event->addExportData('session', array_map(function ($session) {
return UserDefinitions::getUserHttpSession($session);
}, Session::findAll(['user_id' => $event->user->id])));

$event->addExportData('group', array_map(function ($group) {
return UserDefinitions::getGroup($group);
}, Group::find()
->innerJoin('group_user', 'group_user.group_id = group.id')
->where(['group_user.user_id' => $event->user->id])
->all()));

$event->addExportData('post', array_map(function ($post) {
return PostDefinitions::getPost($post);
}, Post::findAll(['created_by' => $event->user->id])));
Expand Down Expand Up @@ -211,6 +247,13 @@ public static function onLegalModuleUserDataExport(UserDataCollectionEvent $even
return SpaceDefinitions::getSpace($space);
}, Space::findAll(['created_by' => $event->user->id])));

$event->addExportData('space-membership', array_map(function ($membership) {
return SpaceDefinitions::getSpaceMembership($membership);
}, Membership::find()
->innerJoin('space', 'space.id = space_membership.space_id')
->where(['space.created_by' => $event->user->id])
->all()));

$files = File::findAll(['created_by' => $event->user->id]);
$event->addExportData('file', array_map(function ($file) {
return FileDefinitions::getFile($file);
Expand Down
84 changes: 77 additions & 7 deletions definitions/UserDefinitions.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,29 @@

namespace humhub\modules\rest\definitions;

use humhub\modules\friendship\models\Friendship;
use humhub\modules\user\models\Auth;
use humhub\modules\user\models\Follow;
use humhub\modules\user\models\Mentioning;
use humhub\modules\user\models\Password;
use humhub\modules\user\models\Profile;
use humhub\modules\user\models\Group;
use humhub\modules\user\models\Session;
use humhub\modules\user\models\User;
use yii\helpers\Url;


/**
* Class AccountController
* Class UserDefinitions
*/
class UserDefinitions
{

public static function getUserShort(User $user)
{
return [
'id' => $user->id,
'guid' => $user->guid,
'display_name' => $user->displayName,
'url' => Url::to(['/', 'container' => $user], true)
'url' => Url::to(['/', 'container' => $user], true),
];
}

Expand All @@ -37,7 +41,7 @@ public static function getUser(User $user)
'display_name' => $user->displayName,
'url' => Url::to(['/', 'container' => $user], true),
'account' => static::getAccount($user),
'profile' => static::getProfile($user->profile)
'profile' => static::getProfile($user->profile),
];
}

Expand Down Expand Up @@ -75,8 +79,74 @@ public static function getGroup(Group $group)
'description' => $group->description,
'show_at_registration' => $group->show_at_registration,
'show_at_directory' => $group->show_at_directory,
'sort_order' => $group->sort_order
'sort_order' => $group->sort_order,
];
}

public static function getFriendship(Friendship $friendship)
{
return [
'id' => $friendship->id,
'user_id' => $friendship->user_id,
'friend_user_id' => $friendship->friend_user_id,
'created_at' => $friendship->created_at,
];
}
}

public static function getPassword(?Password $password)
{
if (!$password) {
return [];
}

return [
'id' => $password->id,
'user_id' => $password->user_id,
'algorithm' => $password->algorithm,
'password' => $password->password,
'salt' => $password->salt,
'created_at' => $password->created_at,
];
}

public static function getMentioning(Mentioning $mentioning)
{
return [
'id' => $mentioning->id,
'object_model' => $mentioning->object_model,
'object_id' => $mentioning->object_id,
'user_id' => $mentioning->user_id,
];
}

public static function getUserFollow(Follow $follow)
{
return [
'id' => $follow->id,
'object_model' => $follow->object_model,
'object_id' => $follow->object_id,
'user_id' => $follow->user_id,
'send_notifications' => $follow->send_notifications,
];
}

public static function getUserAuth(Auth $auth)
{
return [
'id' => $auth->id,
'user_id' => $auth->user_id,
'source' => $auth->source,
'source_id' => $auth->source_id,
];
}

public static function getUserHttpSession(Session $session)
{
return [
'id' => $session->id,
'expire' => $session->expire,
'user_id' => $session->user_id,
'data' => $session->data,
];
}
}

0 comments on commit 1ee4611

Please sign in to comment.