make admin cookie name variable
This commit is contained in:
@ -4,10 +4,11 @@ DATABASE_URI=mysql://website:website@localhost:3306/website
|
|||||||
|
|
||||||
ADMIN_USER=admin
|
ADMIN_USER=admin
|
||||||
ADMIN_PASSWORD=admin
|
ADMIN_PASSWORD=admin
|
||||||
|
ADMIN_COOKIE=muelleel
|
||||||
|
|
||||||
TEAMSPEAK_LINK=http://example.com
|
TEAMSPEAK_LINK=http://example.com
|
||||||
DISCORD_LINK=http://example.com
|
DISCORD_LINK=http://example.com
|
||||||
PAYPAL_LINK=http://example.com
|
PAYPAL_LINK=http://example.com
|
||||||
SERVER_IP=1.1.1.1
|
SERVER_IP=1.1.1.1
|
||||||
|
|
||||||
BASE_PATH=http://localhost:4321/varo
|
BASE_PATH=http://localhost:4321
|
||||||
|
@ -36,6 +36,7 @@ export default defineConfig({
|
|||||||
|
|
||||||
ADMIN_USER: envField.string({ context: 'server', access: 'secret', optional: true }),
|
ADMIN_USER: envField.string({ context: 'server', access: 'secret', optional: true }),
|
||||||
ADMIN_PASSWORD: envField.string({ context: 'server', access: 'secret', optional: true }),
|
ADMIN_PASSWORD: envField.string({ context: 'server', access: 'secret', optional: true }),
|
||||||
|
ADMIN_COOKIE: envField.string({ context: 'server', access: 'secret', default: 'muelleel' }),
|
||||||
|
|
||||||
START_DATE: envField.string({ context: 'server', access: 'secret', default: '1970-01-01' }),
|
START_DATE: envField.string({ context: 'server', access: 'secret', default: '1970-01-01' }),
|
||||||
|
|
||||||
|
@ -2,9 +2,9 @@ import type { AstroCookies, AstroCookieSetOptions } from 'astro';
|
|||||||
import { ActionError } from 'astro:actions';
|
import { ActionError } from 'astro:actions';
|
||||||
import crypto from 'node:crypto';
|
import crypto from 'node:crypto';
|
||||||
import { Permissions } from './permissions.ts';
|
import { Permissions } from './permissions.ts';
|
||||||
|
import { ADMIN_COOKIE } from 'astro:env/server';
|
||||||
|
|
||||||
export class Session {
|
export class Session {
|
||||||
static readonly #cookieName = 'muelleel';
|
|
||||||
static readonly #cookieOptions: AstroCookieSetOptions = {
|
static readonly #cookieOptions: AstroCookieSetOptions = {
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
path: '/',
|
path: '/',
|
||||||
@ -28,7 +28,7 @@ export class Session {
|
|||||||
for (let i = 0; i < Session.#sessions.length; i++) {
|
for (let i = 0; i < Session.#sessions.length; i++) {
|
||||||
if (Session.#sessions[i] == this) {
|
if (Session.#sessions[i] == this) {
|
||||||
Session.#sessions = Session.#sessions.splice(i, 1);
|
Session.#sessions = Session.#sessions.splice(i, 1);
|
||||||
if (cookies) cookies.delete(Session.#cookieName, Session.#cookieOptions);
|
if (cookies) cookies.delete(ADMIN_COOKIE, Session.#cookieOptions);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,13 +38,13 @@ export class Session {
|
|||||||
const session = new Session(crypto.randomBytes(16).toString('hex'), adminId, permissions);
|
const session = new Session(crypto.randomBytes(16).toString('hex'), adminId, permissions);
|
||||||
Session.#sessions.push(session);
|
Session.#sessions.push(session);
|
||||||
|
|
||||||
cookies.set(Session.#cookieName, session.sessionId, Session.#cookieOptions);
|
cookies.set(ADMIN_COOKIE, session.sessionId, Session.#cookieOptions);
|
||||||
|
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
static sessionFromCookies(cookies: AstroCookies, neededPermissions?: Permissions) {
|
static sessionFromCookies(cookies: AstroCookies, neededPermissions?: Permissions) {
|
||||||
const sessionId = cookies.get(Session.#cookieName);
|
const sessionId = cookies.get(ADMIN_COOKIE);
|
||||||
if (!sessionId) return null;
|
if (!sessionId) return null;
|
||||||
|
|
||||||
for (const session of Session.#sessions) {
|
for (const session of Session.#sessions) {
|
||||||
@ -60,7 +60,7 @@ export class Session {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static actionSessionFromCookies(cookies: AstroCookies, neededPermissions?: Permissions) {
|
static actionSessionFromCookies(cookies: AstroCookies, neededPermissions?: Permissions) {
|
||||||
const sessionId = cookies.get(Session.#cookieName);
|
const sessionId = cookies.get(ADMIN_COOKIE);
|
||||||
if (!sessionId) throw new ActionError({ code: 'UNAUTHORIZED' });
|
if (!sessionId) throw new ActionError({ code: 'UNAUTHORIZED' });
|
||||||
|
|
||||||
for (const session of Session.#sessions) {
|
for (const session of Session.#sessions) {
|
||||||
|
Reference in New Issue
Block a user