mirror of
https://github.com/appwrite/appwrite
synced 2026-05-24 01:18:37 +00:00
Merge pull request #9002 from appwrite/fix-project-accessed-at
Fix: update project last activity on init
This commit is contained in:
commit
ce35567c05
1 changed files with 30 additions and 33 deletions
|
|
@ -185,13 +185,14 @@ App::init()
|
||||||
->inject('utopia')
|
->inject('utopia')
|
||||||
->inject('request')
|
->inject('request')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
|
->inject('dbForProject')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('user')
|
->inject('user')
|
||||||
->inject('session')
|
->inject('session')
|
||||||
->inject('servers')
|
->inject('servers')
|
||||||
->inject('mode')
|
->inject('mode')
|
||||||
->inject('team')
|
->inject('team')
|
||||||
->action(function (App $utopia, Request $request, Database $dbForConsole, Document $project, Document $user, ?Document $session, array $servers, string $mode, Document $team) {
|
->action(function (App $utopia, Request $request, Database $dbForConsole, Database $dbForProject, Document $project, Document $user, ?Document $session, array $servers, string $mode, Document $team) {
|
||||||
$route = $utopia->getRoute();
|
$route = $utopia->getRoute();
|
||||||
|
|
||||||
if ($project->isEmpty()) {
|
if ($project->isEmpty()) {
|
||||||
|
|
@ -335,6 +336,33 @@ App::init()
|
||||||
Authorization::setRole($authRole);
|
Authorization::setRole($authRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update project last activity
|
||||||
|
*/
|
||||||
|
if (!$project->isEmpty() && $project->getId() !== 'console') {
|
||||||
|
$accessedAt = $project->getAttribute('accessedAt', '');
|
||||||
|
if (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_PROJECT_ACCESS)) > $accessedAt) {
|
||||||
|
$project->setAttribute('accessedAt', DateTime::now());
|
||||||
|
Authorization::skip(fn () => $dbForConsole->updateDocument('projects', $project->getId(), $project));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update user last activity
|
||||||
|
*/
|
||||||
|
if (!empty($user->getId())) {
|
||||||
|
$accessedAt = $user->getAttribute('accessedAt', '');
|
||||||
|
if (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_USER_ACCESS)) > $accessedAt) {
|
||||||
|
$user->setAttribute('accessedAt', DateTime::now());
|
||||||
|
|
||||||
|
if (APP_MODE_ADMIN !== $mode) {
|
||||||
|
$dbForProject->updateDocument('users', $user->getId(), $user);
|
||||||
|
} else {
|
||||||
|
$dbForConsole->updateDocument('users', $user->getId(), $user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Do not allow access to disabled services */
|
/** Do not allow access to disabled services */
|
||||||
$service = $route->getLabel('sdk.namespace', '');
|
$service = $route->getLabel('sdk.namespace', '');
|
||||||
if (!empty($service)) {
|
if (!empty($service)) {
|
||||||
|
|
@ -641,9 +669,7 @@ App::shutdown()
|
||||||
->inject('queueForWebhooks')
|
->inject('queueForWebhooks')
|
||||||
->inject('queueForRealtime')
|
->inject('queueForRealtime')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('mode')
|
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Messaging $queueForMessaging, Func $queueForFunctions, Event $queueForWebhooks, Realtime $queueForRealtime, Database $dbForProject) use ($parseLabel) {
|
||||||
->inject('dbForConsole')
|
|
||||||
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Usage $queueForUsage, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Messaging $queueForMessaging, Func $queueForFunctions, Event $queueForWebhooks, Realtime $queueForRealtime, Database $dbForProject, string $mode, Database $dbForConsole) use ($parseLabel) {
|
|
||||||
|
|
||||||
$responsePayload = $response->getPayload();
|
$responsePayload = $response->getPayload();
|
||||||
|
|
||||||
|
|
@ -763,8 +789,6 @@ App::shutdown()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ($project->getId() !== 'console') {
|
if ($project->getId() !== 'console') {
|
||||||
if (!Auth::isPrivilegedUser(Authorization::getRoles())) {
|
if (!Auth::isPrivilegedUser(Authorization::getRoles())) {
|
||||||
$fileSize = 0;
|
$fileSize = 0;
|
||||||
|
|
@ -783,33 +807,6 @@ App::shutdown()
|
||||||
->setProject($project)
|
->setProject($project)
|
||||||
->trigger();
|
->trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Update project last activity
|
|
||||||
*/
|
|
||||||
if (!$project->isEmpty() && $project->getId() !== 'console') {
|
|
||||||
$accessedAt = $project->getAttribute('accessedAt', '');
|
|
||||||
if (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_PROJECT_ACCESS)) > $accessedAt) {
|
|
||||||
$project->setAttribute('accessedAt', DateTime::now());
|
|
||||||
Authorization::skip(fn () => $dbForConsole->updateDocument('projects', $project->getId(), $project));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update user last activity
|
|
||||||
*/
|
|
||||||
if (!$user->isEmpty()) {
|
|
||||||
$accessedAt = $user->getAttribute('accessedAt', '');
|
|
||||||
if (DateTime::formatTz(DateTime::addSeconds(new \DateTime(), -APP_USER_ACCESS)) > $accessedAt) {
|
|
||||||
$user->setAttribute('accessedAt', DateTime::now());
|
|
||||||
|
|
||||||
if (APP_MODE_ADMIN !== $mode) {
|
|
||||||
$dbForProject->updateDocument('users', $user->getId(), $user);
|
|
||||||
} else {
|
|
||||||
$dbForConsole->updateDocument('users', $user->getId(), $user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
App::init()
|
App::init()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue