Update session document
This commit is contained in:
parent
0608103d6f
commit
2bf69d59f1
|
@ -380,7 +380,7 @@ $collections = [
|
|||
'$id' => 'provider',
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 1024,
|
||||
'size' => 1000,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
|
@ -402,7 +402,7 @@ $collections = [
|
|||
'$id' => 'providerToken',
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 2048,
|
||||
'size' => 16384,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
|
@ -435,7 +435,7 @@ $collections = [
|
|||
'$id' => 'userAgent',
|
||||
'type' => Database::VAR_STRING,
|
||||
'format' => '',
|
||||
'size' => 2048,
|
||||
'size' => 16384,
|
||||
'signed' => true,
|
||||
'required' => false,
|
||||
'default' => null,
|
||||
|
@ -597,15 +597,15 @@ $collections = [
|
|||
'filters' => []
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
[
|
||||
'$id' => '_key_email',
|
||||
'type' => Database::INDEX_UNIQUE,
|
||||
'attributes' => ['email'],
|
||||
'lengths' => [1024],
|
||||
'orders' => [Database::ORDER_ASC],
|
||||
]
|
||||
],
|
||||
// 'indexes' => [
|
||||
// [
|
||||
// '$id' => '_key_provider_providerUid',
|
||||
// 'type' => Database::INDEX_KEY,
|
||||
// 'attributes' => ['provider', 'providerUid'],
|
||||
// 'lengths' => [100, 100],
|
||||
// 'orders' => [Database::ORDER_ASC, Database::ORDER_ASC],
|
||||
// ]
|
||||
// ],
|
||||
],
|
||||
|
||||
'teams' => [
|
||||
|
|
|
@ -192,8 +192,12 @@ App::post('/v1/account/sessions')
|
|||
|
||||
Authorization::setRole('user:'.$profile->getId());
|
||||
|
||||
$profile->setAttribute('sessions', $session, Document::SET_TYPE_APPEND);
|
||||
$session = $dbForInternal->createDocument('sessions', $session
|
||||
->setAttribute('$read', ['user:'.$profile->getId()])
|
||||
->setAttribute('$write', ['user:'.$profile->getId()])
|
||||
);
|
||||
|
||||
$profile->setAttribute('sessions', $session, Document::SET_TYPE_APPEND);
|
||||
$profile = $dbForInternal->updateDocument('users', $profile->getId(), $profile);
|
||||
|
||||
$audits
|
||||
|
@ -428,9 +432,11 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
$current = Auth::sessionVerify($sessions, Auth::$secret);
|
||||
|
||||
if($current) { // Delete current session of new one.
|
||||
foreach ($sessions as $key => $session) {
|
||||
foreach ($sessions as $key => $session) { /** @var Document $session */
|
||||
if ($current === $session['$id']) {
|
||||
unset($sessions[$key]);
|
||||
|
||||
$dbForInternal->deleteDocument('sessions', $session->getId());
|
||||
$dbForInternal->updateDocument('users', $user->getId(), $user->setAttribute('sessions', $sessions));
|
||||
}
|
||||
}
|
||||
|
@ -523,6 +529,11 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
;
|
||||
}
|
||||
|
||||
$session = $dbForInternal->createDocument('sessions', $session
|
||||
->setAttribute('$read', ['user:'.$user->getId()])
|
||||
->setAttribute('$write', ['user:'.$user->getId()])
|
||||
);
|
||||
|
||||
$user
|
||||
->setAttribute('status', Auth::USER_STATUS_ACTIVATED)
|
||||
->setAttribute('sessions', $session, Document::SET_TYPE_APPEND)
|
||||
|
@ -668,6 +679,11 @@ App::post('/v1/account/sessions/anonymous')
|
|||
|
||||
Authorization::setRole('user:'.$user->getId());
|
||||
|
||||
$session = $dbForInternal->createDocument('sessions', $session
|
||||
->setAttribute('$read', ['user:'.$user->getId()])
|
||||
->setAttribute('$write', ['user:'.$user->getId()])
|
||||
);
|
||||
|
||||
$user = $dbForInternal->updateDocument('users', $user->getId(),
|
||||
$user->setAttribute('sessions', $session, Document::SET_TYPE_APPEND));
|
||||
|
||||
|
@ -814,9 +830,7 @@ App::get('/v1/account/sessions')
|
|||
$countries = $locale->getText('countries');
|
||||
$current = Auth::sessionVerify($sessions, Auth::$secret);
|
||||
|
||||
foreach ($sessions as $key => $session) {
|
||||
/** @var Document $session */
|
||||
|
||||
foreach ($sessions as $key => $session) { /** @var Document $session */
|
||||
$countryName = (isset($countries[strtoupper($session->getAttribute('countryCode'))]))
|
||||
? $countries[strtoupper($session->getAttribute('countryCode'))]
|
||||
: $locale->getText('locale.country.unknown');
|
||||
|
@ -1213,12 +1227,12 @@ App::delete('/v1/account/sessions/:sessionId')
|
|||
|
||||
$sessions = $user->getAttribute('sessions', []);
|
||||
|
||||
foreach ($sessions as $key => $session) {
|
||||
/** @var Document $session */
|
||||
|
||||
foreach ($sessions as $key => $session) { /** @var Document $session */
|
||||
if ($sessionId == $session->getId()) {
|
||||
unset($sessions[$key]);
|
||||
|
||||
$dbForInternal->deleteDocument('sessions', $session->getId());
|
||||
|
||||
$audits
|
||||
->setParam('userId', $user->getId())
|
||||
->setParam('event', 'account.sessions.delete')
|
||||
|
@ -1289,8 +1303,8 @@ App::delete('/v1/account/sessions')
|
|||
$protocol = $request->getProtocol();
|
||||
$sessions = $user->getAttribute('sessions', []);
|
||||
|
||||
foreach ($sessions as $session) {
|
||||
/** @var Document $session */
|
||||
foreach ($sessions as $session) { /** @var Document $session */
|
||||
$dbForInternal->deleteDocument('sessions', $session->getId());
|
||||
|
||||
$audits
|
||||
->setParam('userId', $user->getId())
|
||||
|
|
|
@ -608,6 +608,8 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status')
|
|||
|
||||
// Log user in
|
||||
|
||||
Authorization::setRole('user:'.$user->getId());
|
||||
|
||||
$detector = new Detector($request->getUserAgent('UNKNOWN'));
|
||||
$record = $geodb->get($request->getIP());
|
||||
$expiry = \time() + Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||
|
@ -624,6 +626,11 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status')
|
|||
'countryCode' => ($record) ? \strtolower($record['country']['iso_code']) : '--',
|
||||
], $detector->getOS(), $detector->getClient(), $detector->getDevice()));
|
||||
|
||||
$session = $dbForInternal->createDocument('sessions', $session
|
||||
->setAttribute('$read', ['user:'.$user->getId()])
|
||||
->setAttribute('$write', ['user:'.$user->getId()])
|
||||
);
|
||||
|
||||
$user->setAttribute('sessions', $session, Document::SET_TYPE_APPEND);
|
||||
|
||||
Authorization::setRole('user:'.$userId);
|
||||
|
|
|
@ -430,12 +430,13 @@ App::delete('/v1/users/:userId/sessions/:sessionId')
|
|||
|
||||
$sessions = $user->getAttribute('sessions', []);
|
||||
|
||||
foreach ($sessions as $key => $session) {
|
||||
/** @var Document $session */
|
||||
foreach ($sessions as $key => $session) { /** @var Document $session */
|
||||
|
||||
if ($sessionId == $session->getId()) {
|
||||
unset($sessions[$key]);
|
||||
|
||||
$dbForInternal->deleteDocument('sessions', $session->getId());
|
||||
|
||||
$user->setAttribute('sessions', $sessions);
|
||||
|
||||
$events
|
||||
|
@ -476,13 +477,18 @@ App::delete('/v1/users/:userId/sessions')
|
|||
throw new Exception('User not found', 404);
|
||||
}
|
||||
|
||||
$sessions = $user->getAttribute('sessions', []);
|
||||
|
||||
foreach ($sessions as $key => $session) { /** @var Document $session */
|
||||
$dbForInternal->deleteDocument('sessions', $session->getId());
|
||||
}
|
||||
|
||||
$dbForInternal->updateDocument('users', $user->getId(), $user->getAttribute('sessions', []));
|
||||
|
||||
$events
|
||||
->setParam('eventData', $response->output2($user, Response::MODEL_USER))
|
||||
;
|
||||
|
||||
// TODO : Response filter implementation
|
||||
$response->noContent();
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue