diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index fa247b8e78..db35cebc65 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -5,13 +5,14 @@ use Appwrite\Event\Audit; use Appwrite\Event\Database as EventDatabase; use Appwrite\Event\Delete; use Appwrite\Event\Event; +use Appwrite\Event\Func; use Appwrite\Event\Mail; -use Appwrite\Extend\Exception; use Appwrite\Messaging\Adapter\Realtime; use Appwrite\Usage\Stats; use Appwrite\Utopia\Response; use Appwrite\Utopia\Request; use Utopia\App; +use Appwrite\Extend\Exception; use Utopia\Abuse\Abuse; use Utopia\Abuse\Adapters\TimeLimit; use Utopia\Cache\Adapter\Filesystem; @@ -170,9 +171,9 @@ App::init() } } - /* - * Background Jobs - */ + /* + * Background Jobs + */ $events ->setEvent($route->getLabel('event', '')) ->setProject($project) @@ -318,45 +319,6 @@ App::init() } }); -/** - * Limit user session - * - * Delete older sessions if the number of sessions have crossed - * the session limit set for the project - */ -App::shutdown() - ->groups(['session']) - ->inject('utopia') - ->inject('request') - ->inject('response') - ->inject('project') - ->inject('dbForProject') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Database $dbForProject) { - $sessionLimit = $project->getAttribute('auths', [])['maxSessions'] ?? APP_LIMIT_USER_SESSIONS_DEFAULT; - $session = $response->getPayload(); - $userId = $session['userId'] ?? ''; - if (empty($userId)) { - return; - } - - $user = $dbForProject->getDocument('users', $userId); - if ($user->isEmpty()) { - return; - } - - $sessions = $user->getAttribute('sessions', []); - $count = \count($sessions); - if ($count <= $sessionLimit) { - return; - } - - for ($i = 0; $i < ($count - $sessionLimit); $i++) { - $session = array_shift($sessions); - $dbForProject->deleteDocument('sessions', $session->getId()); - } - $dbForProject->deleteCachedDocument('users', $userId); - }); - App::shutdown() ->groups(['api']) ->inject('utopia') @@ -370,7 +332,8 @@ App::shutdown() ->inject('database') ->inject('mode') ->inject('dbForProject') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Event $events, Audit $audits, Stats $usage, Delete $deletes, EventDatabase $database, string $mode, Database $dbForProject) use ($parseLabel) { + ->inject('queueForFunctions') + ->action(function (App $utopia, Request $request, Response $response, Document $project, Event $events, Audit $audits, Stats $usage, Delete $deletes, EventDatabase $database, string $mode, Database $dbForProject, Func $queueForFunctions) use ($parseLabel) { $responsePayload = $response->getPayload(); @@ -381,9 +344,8 @@ App::shutdown() /** * Trigger functions. */ - $events - ->setClass(Event::FUNCTIONS_CLASS_NAME) - ->setQueue(Event::FUNCTIONS_QUEUE_NAME) + $queueForFunctions + ->from($events) ->trigger(); /** diff --git a/app/realtime.php b/app/realtime.php index 37590348d2..4b40e2a9dd 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -432,6 +432,7 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server, } $roles = Auth::getRoles($user); + $channels = Realtime::convertChannels($request->getQuery('channels', []), $user->getId()); /**