From a323bb9753ed7c31876dfba10058a4d5c31e7c1f Mon Sep 17 00:00:00 2001 From: "patrick.lloret@protonmail.com" Date: Sat, 3 Jan 2026 21:09:29 +0100 Subject: [PATCH] Remove fief lib from frontend --- webapp/package-lock.json | 48 -------------------------------- webapp/package.json | 1 - webapp/src/app/layout.tsx | 10 ------- webapp/src/components/navbar.tsx | 2 ++ webapp/src/helpers/api-server.ts | 2 +- webapp/src/helpers/auth.ts | 1 + webapp/src/helpers/fief.ts | 48 -------------------------------- webapp/src/middleware.ts | 12 +------- 8 files changed, 5 insertions(+), 119 deletions(-) create mode 100644 webapp/src/helpers/auth.ts delete mode 100644 webapp/src/helpers/fief.ts diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 98aa850a1..583f5ea85 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -8,7 +8,6 @@ "name": "carboncode_nextjs", "version": "0.1.0", "dependencies": { - "@fief/fief": "^0.15.0", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", "@radix-ui/react-label": "^2.1.7", @@ -235,16 +234,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fief/fief": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@fief/fief/-/fief-0.15.0.tgz", - "integrity": "sha512-lY3mk3/+U1gxijh+7BGU4CdmR6eaWyo9j/kNODPzsciL5CpOfDJayX7DFo3wYkISeUcjDFWpav245Kv2cHVZAw==", - "dependencies": { - "encoding": "^0.1.13", - "jose": "^5.4.0", - "path-to-regexp": "^6.2.1" - } - }, "node_modules/@floating-ui/core": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", @@ -3401,14 +3390,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/es-abstract": { "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", @@ -4487,17 +4468,6 @@ "node": ">= 0.4" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -4990,14 +4960,6 @@ "jiti": "bin/jiti.js" } }, - "node_modules/jose": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", - "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5604,11 +5566,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -6226,11 +6183,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", diff --git a/webapp/package.json b/webapp/package.json index 9c37eb5b3..3c0204940 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -10,7 +10,6 @@ "lint": "next lint" }, "dependencies": { - "@fief/fief": "^0.15.0", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", "@radix-ui/react-label": "^2.1.7", diff --git a/webapp/src/app/layout.tsx b/webapp/src/app/layout.tsx index 76fd18f2e..a39e97c66 100644 --- a/webapp/src/app/layout.tsx +++ b/webapp/src/app/layout.tsx @@ -1,6 +1,4 @@ "use client"; - -import { FiefAuthProvider } from "@fief/fief/nextjs/react"; import { IBM_Plex_Mono } from "next/font/google"; import "./globals.css"; import { SWRProvider } from "../helpers/swr"; @@ -19,13 +17,6 @@ export default function RootLayout({ {/* suppressHydrationWarning is a Next theme recommendation */} - - diff --git a/webapp/src/components/navbar.tsx b/webapp/src/components/navbar.tsx index 8ae42cc63..a2f8b68bc 100644 --- a/webapp/src/components/navbar.tsx +++ b/webapp/src/components/navbar.tsx @@ -251,6 +251,7 @@ export default function NavBar({ onClose={() => setNewOrgModalOpen(false)} onOrganizationCreated={refreshOrgList} /> + { USER_PROFILE_URL && { @@ -263,6 +264,7 @@ export default function NavBar({ > Profile + } { setSheetOpened?.(false); diff --git a/webapp/src/helpers/api-server.ts b/webapp/src/helpers/api-server.ts index ee1ec2c21..0a610ad5d 100644 --- a/webapp/src/helpers/api-server.ts +++ b/webapp/src/helpers/api-server.ts @@ -1,7 +1,7 @@ "use server"; import { cookies } from "next/headers"; -import { SESSION_COOKIE_NAME } from "./fief"; +import { SESSION_COOKIE_NAME } from "./auth"; const API_BASE = process.env.NEXT_PUBLIC_API_URL; diff --git a/webapp/src/helpers/auth.ts b/webapp/src/helpers/auth.ts new file mode 100644 index 000000000..69bdd06c7 --- /dev/null +++ b/webapp/src/helpers/auth.ts @@ -0,0 +1 @@ +export const SESSION_COOKIE_NAME = "user_session"; diff --git a/webapp/src/helpers/fief.ts b/webapp/src/helpers/fief.ts deleted file mode 100644 index 9fd50e2c5..000000000 --- a/webapp/src/helpers/fief.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { Fief, FiefUserInfo } from "@fief/fief"; -import { FiefAuth, IUserInfoCache } from "@fief/fief/nextjs"; - -export const SESSION_COOKIE_NAME = "user_session"; - -export const fiefClient = new Fief({ - baseURL: process.env.FIEF_BASE_URL as string, - clientId: process.env.FIEF_CLIENT_ID as string, - clientSecret: process.env.FIEF_CLIENT_SECRET as string, - requestInit: { next: { revalidate: 3600 } }, -}); - -class MemoryUserInfoCache implements IUserInfoCache { - private storage: Record; - - constructor() { - this.storage = {}; - } - - async get(id: string): Promise { - const userinfo = this.storage[id]; - if (userinfo) { - return userinfo; - } - return null; - } - - async set(id: string, userinfo: FiefUserInfo): Promise { - this.storage[id] = userinfo; - } - - async remove(id: string): Promise { - this.storage[id] = undefined; - } - - async clear(): Promise { - this.storage = {}; - } -} - -export const fiefAuth = new FiefAuth({ - client: fiefClient, - sessionCookieName: SESSION_COOKIE_NAME, - redirectURI: `${process.env.NEXT_PUBLIC_API_URL}/auth/login`, - returnToDefault: `${process.env.NEXT_PUBLIC_BASE_URL}/home?auth=true`, - logoutRedirectURI: `${process.env.NEXT_PUBLIC_BASE_URL}`, - userInfoCache: new MemoryUserInfoCache(), -}); diff --git a/webapp/src/middleware.ts b/webapp/src/middleware.ts index 472995f54..5a3f84d4a 100644 --- a/webapp/src/middleware.ts +++ b/webapp/src/middleware.ts @@ -1,15 +1,5 @@ import type { NextRequest } from "next/server"; -import { fiefAuth } from "./helpers/fief"; - -const authMiddleware = fiefAuth.middleware([ - { - matcher: - "/((?!api|_next/static|_next/image|favicon.ico|icons/|public/).*)", - parameters: {}, - }, -]); - export async function middleware(request: NextRequest) { const pathname = request.nextUrl.pathname; @@ -22,5 +12,5 @@ export async function middleware(request: NextRequest) { return; } - return authMiddleware(request); +// return authMiddleware(request); }