52bd51d09124

show admin beside log out for signed-in operators (v3.0.118)

time
2026-09-29 20:27 UTC · 1 week ago
machine
Junes-MacBook-Pro.local
agent
gpt-6-sol
session
signed in admin link
parent
8c1ff73fd409
3 files package.json+1 −1public/js/kepr.js+3 −1tests/navbar.test.ts+3 −1
package.json+1 −1
@@ -1,6 +1,6 @@11 {22 	"name": "kepr",3-	"version": "3.0.117",3+	"version": "3.0.118",44 	"private": true,55 	"type": "module",66 	"scripts": {

view file

public/js/kepr.js+3 −1
@@ -623,7 +623,9 @@623623 		const button = element("button", "", "log out");624624 		button.type = "submit";625625 		form.append(token, button);626-		link.replaceWith(form);626+		const admin = element("a", "", "admin");627+		admin.href = "/admin";628+		link.replaceWith(admin, form);627629 	} catch (error) {628630 		console.error("Could not check navbar sign-in state", error);629631 	}

view file

tests/navbar.test.ts+3 −1
@@ -7,7 +7,7 @@77 	script.indexOf("// Signed in, a repo page"),88 );99 10-test("navbar offers protected log out only after confirming a live session", async () => {10+test("navbar offers admin and protected log out only after confirming a live session", async () => {1111 	for (const [cookie, status, logout] of [1212 		["", 200, false],1313 		["kepr_editor=1", 401, false],@@ -50,6 +50,8 @@5050 			expect(nodes[0]?.action).toBe("/admin/sign-out");5151 			expect(nodes[0]?.children).toEqual([token, nodes[1]]);5252 			expect(nodes[1]?.textContent).toBe("log out");53+			expect(nodes.find((node) => node.tag === "a")?.href).toBe("/admin");54+			expect(nodes.find((node) => node.tag === "a")?.textContent).toBe("admin");5355 		}5456 	}5557 });

view file