revoke admin session when admin is deleted
This commit is contained in:
1 parent
316f83edf2
commit
efe40a4d7d
2 files changed
+8
-1
No files matched your search
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user