update all sessions when changing admin permissions instead of deleting
This commit is contained in:
parent
1b6e3c522f
commit
90cb1fea87
src
@ -46,6 +46,12 @@ export function getSession(
|
||||
return session;
|
||||
}
|
||||
|
||||
export function updateAllUserSessions(userId: number, options: { permissions: Permissions }) {
|
||||
for (const session of sessions.filter((v) => v.userId == userId)) {
|
||||
session.permissions = options.permissions;
|
||||
}
|
||||
}
|
||||
|
||||
export function deleteSession(sessionId: string | Cookies) {
|
||||
const session = sessionFromId(sessionId);
|
||||
if (session) {
|
||||
@ -54,5 +60,5 @@ export function deleteSession(sessionId: string | Cookies) {
|
||||
}
|
||||
|
||||
export function deleteAllUserSessions(userId: number) {
|
||||
sessions = sessions.filter((v) => v.userId == userId);
|
||||
sessions = sessions.filter((v) => v.userId != userId);
|
||||
}
|
||||
|
@ -1,6 +1,12 @@
|
||||
import type { RequestHandler } from '@sveltejs/kit';
|
||||
import { Permissions } from '$lib/permissions';
|
||||
import { addSession, deleteAllUserSessions, deleteSession, getSession } from '$lib/server/session';
|
||||
import {
|
||||
addSession,
|
||||
deleteAllUserSessions,
|
||||
deleteSession,
|
||||
getSession,
|
||||
updateAllUserSessions
|
||||
} from '$lib/server/session';
|
||||
import { Admin } from '$lib/server/database';
|
||||
import { env as publicEnv } from '$env/dynamic/public';
|
||||
|
||||
@ -62,13 +68,7 @@ export const PATCH = (async ({ request, cookies }) => {
|
||||
}
|
||||
user = await user.update(updatePayload);
|
||||
|
||||
deleteSession(cookies);
|
||||
cookies.set('session', addSession(user), {
|
||||
path: `${publicEnv.PUBLIC_BASE_PATH}/admin`,
|
||||
maxAge: 60 * 60 * 24 * 90,
|
||||
httpOnly: true,
|
||||
secure: true
|
||||
});
|
||||
updateAllUserSessions(user.id, { permissions: user.permissions });
|
||||
|
||||
return new Response();
|
||||
}) satisfies RequestHandler;
|
||||
|
Loading…
x
Reference in New Issue
Block a user