Login page design
This commit is contained in:
@@ -4,7 +4,8 @@ import { RequestError } from "./RequestError";
|
||||
import { Database } from "./services/database";
|
||||
import { Request } from "./services/request";
|
||||
import { brotliCompress } from "node:zlib";
|
||||
import { AccessLog } from "common";
|
||||
import { AccessLog } from "common/db";
|
||||
import { LoginRequest, LoginResponse } from "common/api";
|
||||
|
||||
const match = (method: string, ...pattern: readonly string[]) => Effect.gen(function* () {
|
||||
|
||||
@@ -82,10 +83,7 @@ export const app = pipe(
|
||||
|
||||
if (yield* match("POST", "login")) {
|
||||
|
||||
const body = yield* requestJson(S.Struct({
|
||||
username: S.NonEmptyString,
|
||||
password: S.NonEmptyString,
|
||||
}));
|
||||
const body = yield* requestJson(LoginRequest);
|
||||
|
||||
const user = yield* pipe(
|
||||
db.getUserByUsername(body.username),
|
||||
@@ -99,12 +97,17 @@ export const app = pipe(
|
||||
|
||||
const sessionId = yield* db.createSession(user.userId);
|
||||
|
||||
const responseData = {
|
||||
const responseData = LoginResponse.make({
|
||||
userId: user.userId,
|
||||
username: user.username,
|
||||
admin: user.admin,
|
||||
};
|
||||
const responseJson = JSON.stringify(responseData);
|
||||
});
|
||||
|
||||
const responseJson = yield* pipe(
|
||||
responseData,
|
||||
S.encode(LoginResponse),
|
||||
Effect.map(JSON.stringify),
|
||||
);
|
||||
const responseArray = new TextEncoder().encode(responseJson);
|
||||
|
||||
const expiresAt = DateTime.addDuration(yield* DateTime.now, Duration.days(7));
|
||||
|
||||
Reference in New Issue
Block a user