59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
import { DateTime } from "ts-luxon";
|
|
import { get, User } from "../hydrators/user";
|
|
import { request } from "../request";
|
|
import { html, render } from "../request/util";
|
|
import type { Call, Result, Route } from "../types";
|
|
import { loginRoute } from "./login";
|
|
import { logoutRoute } from "./logout";
|
|
|
|
const routes: Record<string, Route> = {
|
|
hello: {
|
|
path: "/hello",
|
|
methods: ["GET"],
|
|
handler: async (call: Call): Promise<Result> => {
|
|
const now = DateTime.now();
|
|
const args: {now: DateTime,greeting?: string} = {now};
|
|
|
|
if (call.path !== '/hello') {
|
|
const greeting = call. path.replaceAll('/','').replaceAll('-', ' ')
|
|
args.greeting = greeting;
|
|
}
|
|
|
|
const c = await render("basic/hello", args);
|
|
|
|
return html(c);
|
|
},
|
|
},
|
|
home: {
|
|
path: "/",
|
|
methods: ["GET"],
|
|
handler: async (_call: Call): Promise<Result> => {
|
|
const _auth = request.auth;
|
|
const me = request.session.getUser();
|
|
|
|
const id = me.id;
|
|
console.log(`*** id: ${id}`);
|
|
|
|
const u = await get(id);
|
|
|
|
const email = u?.email || "anonymous@example.com";
|
|
const name = u?.display_name || "anonymous";
|
|
const showLogin = me.isAnonymous();
|
|
const showLogout = !me.isAnonymous();
|
|
|
|
const c = await render("basic/home", {
|
|
name,
|
|
email,
|
|
showLogin,
|
|
showLogout,
|
|
});
|
|
|
|
return html(c);
|
|
},
|
|
},
|
|
login: loginRoute,
|
|
logout: logoutRoute,
|
|
};
|
|
|
|
export { routes };
|