From 2aeee974e9480877b161d7a7bf68e5cc9c3f7f72 Mon Sep 17 00:00:00 2001 From: gevorgmansuryan Date: Mon, 15 Jul 2024 04:03:31 +0400 Subject: [PATCH 1/4] Endpoint for pending invites --- Events.php | 4 +-- controllers/user/InviteController.php | 15 +++++++++++ definitions/InviteDefinitions.php | 16 ++++++++++++ docs/html/user.html | 8 +++--- docs/swagger/user.yaml | 36 +++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 definitions/InviteDefinitions.php diff --git a/Events.php b/Events.php index 32bc2cf..350e958 100644 --- a/Events.php +++ b/Events.php @@ -54,10 +54,10 @@ public static function onBeforeRequest($event) ['pattern' => 'user/group//member', 'route' => 'rest/user/group/members', 'verb' => ['GET', 'HEAD']], ['pattern' => 'user/group//member', 'route' => 'rest/user/group/member-add', 'verb' => ['PUT', 'PATCH']], ['pattern' => 'user/group//member', 'route' => 'rest/user/group/member-remove', 'verb' => ['DELETE']], - ['pattern' => 'user/invite', 'route' => 'rest/user/invite/index', 'verb' => 'POST'], // User: Invite Controller - //['pattern' => 'user/invite', 'route' => 'api/user/invite/index', 'verb' => 'POST'], + ['pattern' => 'user/invite', 'route' => 'rest/user/invite/index', 'verb' => 'POST'], + ['pattern' => 'user/invite', 'route' => 'rest/user/invite/list', 'verb' => 'GET'], // User: Session Controller ['pattern' => 'user/session/all/', 'route' => 'rest/user/session/delete-from-user', 'verb' => 'DELETE'], diff --git a/controllers/user/InviteController.php b/controllers/user/InviteController.php index abb52a8..40e2cb3 100644 --- a/controllers/user/InviteController.php +++ b/controllers/user/InviteController.php @@ -9,9 +9,11 @@ use humhub\modules\rest\components\BaseController; use humhub\modules\user\models\Invite; +use humhub\modules\rest\definitions\InviteDefinitions; use humhub\modules\user\models\User; use Yii; use yii\validators\EmailValidator; +use yii\helpers\ArrayHelper; /** @@ -46,6 +48,19 @@ public function actionIndex() return $this->returnSuccess(count($emails) . ' users have been invited.'); } + public function actionList() + { + $query = Invite::find()->where(['source' => Invite::SOURCE_INVITE]); + + $pagination = $this->handlePagination($query, 10); + + $results = ArrayHelper::getColumn($query->all(), function(Invite $invite) { + return InviteDefinitions::getInvite($invite); + }); + + return $this->returnPagination($query, $pagination, $results); + } + protected function createInvite($email) { $userInvite = new Invite(); diff --git a/definitions/InviteDefinitions.php b/definitions/InviteDefinitions.php new file mode 100644 index 0000000..a048c11 --- /dev/null +++ b/definitions/InviteDefinitions.php @@ -0,0 +1,16 @@ + $invite->id, + 'email' => $invite->email, + ]; + } +} diff --git a/docs/html/user.html b/docs/html/user.html index 1a30bf1..8fc97c5 100644 --- a/docs/html/user.html +++ b/docs/html/user.html @@ -391,7 +391,7 @@ -

Invite new users

Request Body schema: application/json

Emails of people you want to invite

emails
required
Array of any

An array of email addresses

Responses

Request samples

Content type
application/json
{
  • "emails": [
    ]
}

Session

User sessions

+

Request samples

Content type
application/json
{
  • "emails": [
    ]
}

Pending invites

Returns list of pending invites

+

Responses

Response samples

Content type
{
  • "total": 76,
  • "page": 1,
  • "results": [
    ]
}

Session

User sessions

Deletes all sessions for a particular user

path Parameters
id
required
integer

The id of user

Responses