feat(identity): add bounded login and revocable sessions

This commit is contained in:
2026-10-09 01:20:37 +08:00
parent f4bf218081
commit ff60136f8d
20 changed files with 1364 additions and 7 deletions
+171
View File
@@ -4,6 +4,57 @@
*/
export interface paths {
"/api/v1/auth/login": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Login */
post: operations["login_api_v1_auth_login_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/auth/logout": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Logout */
post: operations["logout_api_v1_auth_logout_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/auth/me": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Me */
get: operations["me_api_v1_auth_me_get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/v1/health/live": {
parameters: {
query?: never;
@@ -28,6 +79,21 @@ export interface paths {
export type webhooks = Record<string, never>;
export interface components {
schemas: {
/** CurrentUser */
CurrentUser: {
/**
* Id
* Format: uuid
*/
id: string;
/** Username */
username: string;
};
/** HTTPValidationError */
HTTPValidationError: {
/** Detail */
detail?: components["schemas"]["ValidationError"][];
};
/** HealthResponse */
HealthResponse: {
/**
@@ -43,6 +109,40 @@ export interface components {
/** Version */
version: string;
};
/** LoginRequest */
LoginRequest: {
/**
* Password
* Format: password
*/
password: string;
/** Username */
username: string;
};
/** LoginResponse */
LoginResponse: {
/** Csrf Token */
csrf_token: string;
/**
* Expires At
* Format: date-time
*/
expires_at: string;
user: components["schemas"]["CurrentUser"];
};
/** ValidationError */
ValidationError: {
/** Context */
ctx?: Record<string, never>;
/** Input */
input?: unknown;
/** Location */
loc: (string | number)[];
/** Message */
msg: string;
/** Error Type */
type: string;
};
};
responses: never;
parameters: never;
@@ -52,6 +152,77 @@ export interface components {
}
export type $defs = Record<string, never>;
export interface operations {
login_api_v1_auth_login_post: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["LoginRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["LoginResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
logout_api_v1_auth_logout_post: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
204: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
me_api_v1_auth_me_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["CurrentUser"];
};
};
};
};
liveness: {
parameters: {
query?: never;