feat(api): authentication

This commit is contained in:
2025-11-18 00:38:27 +02:00
parent 3f53c1e03f
commit baad24fecc
34 changed files with 910 additions and 234 deletions
+11
View File
@@ -23,3 +23,14 @@ export const DEFAULT_SOURCE_IMAGE = "https://devscast.org/images/sources/";
export const DEFAULT_PUBLICATION_GRAPH_DAYS = 30;
export const DEFAULT_CATEGORY_SHARES_LIMIT = 10;
export const DEFAULT_TIMEZONE = "Africa/Lubumbashi";
export const DEFAULT_ACCESS_TOKEN_COOKIE = "basango.access_token";
export const DEFAULT_REFRESH_TOKEN_COOKIE = "basango.refresh_token";
export const DEFAULT_ENCRYPTION_ALGORITHM = "aes-256-gcm";
export const DEFAULT_IV_LENGTH = 16;
export const DEFAULT_AUTH_TAG_LENGTH = 16;
export const DEFAULT_BCRYPT_SALT_ROUNDS = 12;
export const DEFAULT_TOKEN_AUDIENCE = "basango_dashboard";
export const DEFAULT_TOKEN_ISSUER = "basango_api";
export const DEFAULT_ACCESS_TOKEN_TTL = "15m";
export const DEFAULT_REFRESH_TOKEN_TTL = "7d";
+18
View File
@@ -0,0 +1,18 @@
import { z } from "@hono/zod-openapi";
export const loginSchema = z.object({
email: z.email().openapi({
description: "Email address used to authenticate the user.",
example: "user@example.com",
}),
password: z.string().min(8).openapi({
description: "Account password.",
example: "••••••••",
}),
});
export const refreshSessionSchema = z.object({
refreshToken: z.string().min(1).openapi({
description: "Refresh token returned when logging in.",
}),
});
+1
View File
@@ -1,4 +1,5 @@
export * from "./articles";
export * from "./auth";
export * from "./shared";
export * from "./sources";
export * from "./users";