1
0
Fork 0
mirror of synced 2024-07-03 05:31:38 +12:00

Merge pull request #529 from appwrite/feat-add-webhook-events-to-the-users-service

Feat add webhook events to the users service
This commit is contained in:
Eldad A. Fux 2020-09-11 10:36:18 +03:00 committed by GitHub
commit 3de78e3480
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 8 deletions

View file

@ -55,4 +55,16 @@ return [
'storage.files.delete' => [
'description' => 'This event triggers when a storage file is deleted.',
],
'users.create' => [
'description' => 'This event triggers when a user is created from the users API.',
],
'users.update.status' => [
'description' => 'This event triggers when a user status is updated from the users API.',
],
'users.delete' => [
'description' => 'This event triggers when a user is deleted from users API.',
],
'users.sessions.delete' => [
'description' => 'This event triggers when a user session is deleted from users API.',
],
];

View file

@ -21,6 +21,7 @@ use DeviceDetector\DeviceDetector;
App::post('/v1/users')
->desc('Create User')
->groups(['api', 'users'])
->label('event', 'users.create')
->label('scope', 'users.write')
->label('sdk.platform', [APP_PLATFORM_SERVER])
->label('sdk.namespace', 'users')
@ -299,6 +300,7 @@ App::get('/v1/users/:userId/logs')
App::patch('/v1/users/:userId/status')
->desc('Update User Status')
->groups(['api', 'users'])
->label('event', 'users.update.status')
->label('scope', 'users.write')
->label('sdk.platform', [APP_PLATFORM_SERVER])
->label('sdk.namespace', 'users')
@ -361,6 +363,7 @@ App::patch('/v1/users/:userId/prefs')
App::delete('/v1/users/:userId/sessions/:sessionId')
->desc('Delete User Session')
->groups(['api', 'users'])
->label('event', 'users.sessions.delete')
->label('scope', 'users.write')
->label('sdk.platform', [APP_PLATFORM_SERVER])
->label('sdk.namespace', 'users')
@ -369,9 +372,10 @@ App::delete('/v1/users/:userId/sessions/:sessionId')
->label('abuse-limit', 100)
->param('userId', '', function () { return new UID(); }, 'User unique ID.')
->param('sessionId', null, function () { return new UID(); }, 'User unique session ID.')
->action(function ($userId, $sessionId, $response, $projectDB) {
->action(function ($userId, $sessionId, $response, $projectDB, $webhooks) {
/** @var Appwrite\Utopia\Response $response */
/** @var Appwrite\Database\Database $projectDB */
/** @var Appwrite\Event\Event $webhooks */
$user = $projectDB->getDocument($userId);
@ -386,15 +390,20 @@ App::delete('/v1/users/:userId/sessions/:sessionId')
if (!$projectDB->deleteDocument($token->getId())) {
throw new Exception('Failed to remove token from DB', 500);
}
$webhooks
->setParam('payload', $response->output($user, Response::MODEL_USER))
;
}
}
$response->noContent();
}, ['response', 'projectDB']);
}, ['response', 'projectDB', 'webhooks']);
App::delete('/v1/users/:userId/sessions')
->desc('Delete User Sessions')
->groups(['api', 'users'])
->label('event', 'users.sessions.delete')
->label('scope', 'users.write')
->label('sdk.platform', [APP_PLATFORM_SERVER])
->label('sdk.namespace', 'users')
@ -402,9 +411,10 @@ App::delete('/v1/users/:userId/sessions')
->label('sdk.description', '/docs/references/users/delete-user-sessions.md')
->label('abuse-limit', 100)
->param('userId', '', function () { return new UID(); }, 'User unique ID.')
->action(function ($userId, $response, $projectDB) {
->action(function ($userId, $response, $projectDB, $webhooks) {
/** @var Appwrite\Utopia\Response $response */
/** @var Appwrite\Database\Database $projectDB */
/** @var Appwrite\Event\Event $webhooks */
$user = $projectDB->getDocument($userId);
@ -420,12 +430,17 @@ App::delete('/v1/users/:userId/sessions')
}
}
$webhooks
->setParam('payload', $response->output($user, Response::MODEL_USER))
;
$response->noContent();
}, ['response', 'projectDB']);
}, ['response', 'projectDB', 'webhooks']);
App::delete('/v1/users/:userId')
->desc('Delete User')
->groups(['api', 'users'])
->label('event', 'users.delete')
->label('scope', 'users.write')
->label('sdk.platform', [APP_PLATFORM_SERVER])
->label('sdk.namespace', 'users')
@ -433,9 +448,10 @@ App::delete('/v1/users/:userId')
->label('sdk.description', '/docs/references/users/delete-user.md')
->label('abuse-limit', 100)
->param('userId', '', function () {return new UID();}, 'User unique ID.')
->action(function ($userId, $response, $projectDB, $deletes) {
/** @var Utopia\Response $response */
->action(function ($userId, $response, $projectDB, $webhooks, $deletes) {
/** @var Appwrite\Utopia\Response $response */
/** @var Appwrite\Database\Database $projectDB */
/** @var Appwrite\Event\Event $webhooks */
/** @var Appwrite\Event\Event $deletes */
$user = $projectDB->getDocument($userId);
@ -467,5 +483,9 @@ App::delete('/v1/users/:userId')
->setParam('document', $user)
;
$webhooks
->setParam('payload', $response->output($user, Response::MODEL_USER))
;
$response->noContent();
}, ['response', 'projectDB', 'deletes']);
}, ['response', 'projectDB', 'webhooks', 'deletes']);

View file

@ -457,4 +457,4 @@ App::setResource('mode', function($request) {
App::setResource('geodb', function($register) {
return $register->get('geodb');
}, ['register']);
}, ['register']);