revoke admin session when admin is deleted

This commit is contained in:
bytedream committed 2026-10-31 14:46:42 +01:00
1 parent 316f83edf2
commit efe40a4d7d
2 files changed
+8 -1

No files matched your search

+3
View File
@@ -2,6 +2,7 @@ import { type ActionReturnType, actions } from 'astro:actions';
import { writable } from 'svelte/store';
import { actionErrorPopup } from '@util/action.ts';
import { addToWritableArray, deleteFromWritableArray, updateWritableArray } from '@util/state.ts';
import { Session } from '@util/session';
// types
export type Admins = Exclude<ActionReturnType<typeof actions.admin.admins>['data'], undefined>['admins'];
@@ -49,4 +50,6 @@ export async function deleteAdmin(admin: Admin) {
}
deleteFromWritableArray(admins, (t) => t.id == admin.id);
Session.revokeForAdminId(admin.id);
}
+5 -1
View File
@@ -27,7 +27,7 @@ export class Session {
invalidate(cookies?: AstroCookies) {
for (let i = 0; i < Session.#sessions.length; i++) {
if (Session.#sessions[i] == this) {
Session.#sessions = Session.#sessions.splice(i, 1);
Session.#sessions.splice(i, 1);
if (cookies) cookies.delete(ADMIN_COOKIE, Session.#cookieOptions);
break;
}
@@ -74,4 +74,8 @@ export class Session {
throw new ActionError({ code: 'UNAUTHORIZED' });
}
static revokeForAdminId(adminId: number) {
Session.#sessions = Session.#sessions.filter((session) => session.adminId != adminId);
}
}