chore(web): mock user session cookie during development (#997)

* chore(web): mock user session cookie during development

* refactor(scripts): change default mock session name to mock-user-session

* tmp: log cookies in production

* refactor(api): add dev fixture for a mock user session

* fix(web): only mock session cookie during development

* fix(web): type coercion of MOCK_USER_SESSION env flag
This commit is contained in:
Pujit Mehrotra
2025-01-08 14:15:46 -05:00
committed by GitHub
parent f45719fa6b
commit 4404208deb
8 changed files with 19 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
PATHS_UNRAID_DATA=./dev/data # Where we store plugin data (e.g. permissions.json)
PATHS_STATES=./dev/states # Where .ini files live (e.g. vars.ini)
PATHS_AUTH_SESSIONS=./dev/sessions # Where user sessions live
PATHS_AUTH_KEY=./dev/keys # Auth key directory
PATHS_DYNAMIX_BASE=./dev/dynamix # Dynamix's data directory
PATHS_DYNAMIX_CONFIG_DEFAULT=./dev/dynamix/default.cfg # Dynamix's default config file, which ships with unraid

View File

View File

@@ -7,7 +7,7 @@
# By default, this is my-session
sessions_dir=/var/lib/php
default_session_name=my-session
default_session_name=mock-user-session
if [ "$1" = "--help" ]; then
echo "This script creates a mock session on a server."
@@ -15,7 +15,7 @@ if [ "$1" = "--help" ]; then
echo "Usage: $0 [options]"
echo ""
echo "Options:"
echo " [name] Name of the session to create (default: my-session)"
echo " [name] Name of the session to create (default: mock-user-session)"
echo " --help Display this help message and exit"
echo ""
echo "Example: $0 a-session-name"

View File

@@ -62,7 +62,7 @@ const initialState = {
'log-base': resolvePath('/var/log/unraid-api/' as const),
'var-run': '/var/run' as const,
// contains sess_ files that correspond to authenticated user sessions
'auth-sessions': '/var/lib/php' as const,
'auth-sessions': process.env.PATHS_AUTH_SESSIONS ?? '/var/lib/php',
'auth-keys': resolvePath(
process.env.PATHS_AUTH_KEY ?? ('/boot/config/plugins/dynamix.my.servers/keys' as const)
),

View File

@@ -23,7 +23,7 @@ export class CookieService {
) {}
/**
* @returns new SessionCookieOptions with `namePrefix: 'unraid_', sessionDir: '/var/lib/php'`
* @returns new SessionCookieOptions with e.g. `namePrefix: 'unraid_', sessionDir: '/var/lib/php'`
*/
static defaultOpts(): SessionCookieConfig {
return {

View File

@@ -10,3 +10,5 @@ VITE_ALLOW_CONSOLE_LOGS=true
# For an Unraid Webgui deployment, set this to 10.
VITE_TAILWIND_BASE_FONT_SIZE=16
VITE_WEBGUI=http://localhost:3001
# Flag for mocking a user session during development via an unsecure cookie
VITE_MOCK_USER_SESSION=true

View File

@@ -11,6 +11,7 @@ import { useThemeStore } from '~/store/theme';
import type { Server } from '~/types/server';
import 'tailwindcss/tailwind.css';
import '~/assets/main.css';
import { devConfig } from '~/helpers/env';
export interface Props {
server?: Server | string;
@@ -92,6 +93,12 @@ onBeforeMount(() => {
console.warn('A valid keyfile and USB Flash boot device are required to check for key renewals, key replacement eligibiliy, and OS update availability.');
}
});
onMounted(() => {
if (devConfig.VITE_MOCK_USER_SESSION && devConfig.NODE_ENV === 'development') {
document.cookie = 'unraid_session_cookie=mock-user-session';
}
})
</script>
<template>

5
web/helpers/env.ts Normal file
View File

@@ -0,0 +1,5 @@
export const devConfig = {
/** Flag for mocking a user session during development via an unsecure cookie */
VITE_MOCK_USER_SESSION: String(import.meta.env.VITE_MOCK_USER_SESSION) === 'true',
NODE_ENV: process.env.NODE_ENV,
};