Skip to content

Commit

Permalink
remove secure_cookies option from config
Browse files Browse the repository at this point in the history
  • Loading branch information
miloschwartz committed Jan 31, 2025
1 parent f5e894e commit f40d91f
Show file tree
Hide file tree
Showing 8 changed files with 12 additions and 141 deletions.
1 change: 0 additions & 1 deletion config/config.example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ server:
internal_port: 3001
next_port: 3002
internal_hostname: "pangolin"
secure_cookies: true
session_cookie_name: "p_session_token"
resource_access_token_param: "p_token"
resource_session_request_param: "p_session_request"
Expand Down
1 change: 0 additions & 1 deletion install/fs/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ server:
internal_port: 3001
next_port: 3002
internal_hostname: "pangolin"
secure_cookies: true
session_cookie_name: "p_session_token"
resource_access_token_param: "p_token"
resource_session_request_param: "p_session_request"
Expand Down
118 changes: 0 additions & 118 deletions server/auth/index.ts

This file was deleted.

14 changes: 2 additions & 12 deletions server/auth/sessions/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ export const SESSION_COOKIE_EXPIRES =
60 *
60 *
config.getRawConfig().server.dashboard_session_length_hours;
export const SECURE_COOKIES = config.getRawConfig().server.secure_cookies;
export const COOKIE_DOMAIN =
"." + new URL(config.getRawConfig().app.dashboard_url).hostname;

Expand Down Expand Up @@ -108,24 +107,15 @@ export function serializeSessionCookie(
isSecure: boolean
): string {
if (isSecure) {
logger.debug("Setting cookie for secure origin");
if (SECURE_COOKIES) {
return `${SESSION_COOKIE_NAME}=${token}; HttpOnly; SameSite=Strict; Max-Age=${SESSION_COOKIE_EXPIRES / 1000}; Path=/; Secure; Domain=${COOKIE_DOMAIN}`;
} else {
return `${SESSION_COOKIE_NAME}=${token}; HttpOnly; SameSite=Strict; Max-Age=${SESSION_COOKIE_EXPIRES / 1000}; Path=/; Domain=${COOKIE_DOMAIN}`;
}
return `${SESSION_COOKIE_NAME}=${token}; HttpOnly; SameSite=Strict; Max-Age=${SESSION_COOKIE_EXPIRES / 1000}; Path=/; Secure; Domain=${COOKIE_DOMAIN}`;
} else {
return `${SESSION_COOKIE_NAME}=${token}; HttpOnly; SameSite=Lax; Max-Age=${SESSION_COOKIE_EXPIRES}; Path=/;`;
}
}

export function createBlankSessionTokenCookie(isSecure: boolean): string {
if (isSecure) {
if (SECURE_COOKIES) {
return `${SESSION_COOKIE_NAME}=; HttpOnly; SameSite=Strict; Max-Age=0; Path=/; Secure; Domain=${COOKIE_DOMAIN}`;
} else {
return `${SESSION_COOKIE_NAME}=; HttpOnly; SameSite=Strict; Max-Age=0; Path=/; Domain=${COOKIE_DOMAIN}`;
}
return `${SESSION_COOKIE_NAME}=; HttpOnly; SameSite=Strict; Max-Age=0; Path=/; Secure; Domain=${COOKIE_DOMAIN}`;
} else {
return `${SESSION_COOKIE_NAME}=; HttpOnly; SameSite=Lax; Max-Age=0; Path=/;`;
}
Expand Down
8 changes: 4 additions & 4 deletions server/auth/sessions/resource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ export const SESSION_COOKIE_NAME =
config.getRawConfig().server.session_cookie_name;
export const SESSION_COOKIE_EXPIRES =
1000 * 60 * 60 * config.getRawConfig().server.resource_session_length_hours;
export const SECURE_COOKIES = config.getRawConfig().server.secure_cookies;

export async function createResourceSession(opts: {
token: string;
Expand Down Expand Up @@ -170,7 +169,7 @@ export function serializeResourceSessionCookie(
token: string,
isHttp: boolean = false
): string {
if (SECURE_COOKIES && !isHttp) {
if (!isHttp) {
return `${cookieName}_s=${token}; HttpOnly; SameSite=Strict; Max-Age=${SESSION_COOKIE_EXPIRES / 1000}; Path=/; Secure; Domain=${"." + domain}`;
} else {
return `${cookieName}=${token}; HttpOnly; SameSite=Strict; Max-Age=${SESSION_COOKIE_EXPIRES / 1000}; Path=/; Domain=${"." + domain}`;
Expand All @@ -179,9 +178,10 @@ export function serializeResourceSessionCookie(

export function createBlankResourceSessionTokenCookie(
cookieName: string,
domain: string
domain: string,
isHttp: boolean = false
): string {
if (SECURE_COOKIES) {
if (!isHttp) {
return `${cookieName}_s=; HttpOnly; SameSite=Strict; Max-Age=0; Path=/; Secure; Domain=${"." + domain}`;
} else {
return `${cookieName}=; HttpOnly; SameSite=Strict; Max-Age=0; Path=/; Domain=${"." + domain}`;
Expand Down
3 changes: 1 addition & 2 deletions server/routers/badger/exchangeSession.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import {
serializeResourceSessionCookie,
validateResourceSessionToken
} from "@server/auth/sessions/resource";
import { generateSessionToken } from "@server/auth";
import { SESSION_COOKIE_EXPIRES } from "@server/auth/sessions/app";
import { generateSessionToken, SESSION_COOKIE_EXPIRES } from "@server/auth/sessions/app";
import { SESSION_COOKIE_EXPIRES as RESOURCE_SESSION_COOKIE_EXPIRES } from "@server/auth/sessions/resource";
import config from "@server/lib/config";
import { response } from "@server/lib";
Expand Down
2 changes: 1 addition & 1 deletion server/routers/badger/verifySession.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ import {
import { Resource, roleResources, userResources } from "@server/db/schema";
import logger from "@server/logger";
import { verifyResourceAccessToken } from "@server/auth/verifyResourceAccessToken";
import { generateSessionToken } from "@server/auth";
import NodeCache from "node-cache";
import { generateSessionToken } from "@server/auth/sessions/app";

// We'll see if this speeds anything up
const cache = new NodeCache({
Expand Down
6 changes: 4 additions & 2 deletions server/setup/scripts/1.0.0-beta10.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,16 @@ export default async function migration() {
const fileContents = fs.readFileSync(filePath, "utf8");
rawConfig = yaml.load(fileContents);

rawConfig.server.secure_cookies = true;
delete rawConfig.server.secure_cookies;

// Write the updated YAML back to the file
const updatedYaml = yaml.dump(rawConfig);
fs.writeFileSync(filePath, updatedYaml, "utf8");

console.log(`Removed deprecated config option: secure_cookies.`);
} catch (e) {
console.log(
`Failed to set secure_cookies to true in config. Please set it manually. https://docs.fossorial.io/Pangolin/Configuration/config`
`Was unable to remove deprecated config option: secure_cookies. Error: ${e}`
);
return;
}
Expand Down

0 comments on commit f40d91f

Please sign in to comment.