mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-07-08 01:31:00 +08:00
Add Create Root User page
This commit is contained in:
24
server/auth.ts
Normal file
24
server/auth.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { parse_bool } from "./parse.ts";
|
||||
import { set_state } from "./state.ts";
|
||||
import type { StatusData } from "./status.ts";
|
||||
import type { BUser } from "./user.ts";
|
||||
import type { JSONResult } from "./utils.ts";
|
||||
|
||||
export async function check_auth_status() {
|
||||
const re = await fetch("/api/user");
|
||||
const u: JSONResult<BUser> = await re.json();
|
||||
if (u.ok) return true;
|
||||
if (u.status !== 404 && u.status !== 1) {
|
||||
throw Error(u.error);
|
||||
}
|
||||
const re2 = await fetch("/api/status");
|
||||
const s: JSONResult<StatusData> = await re2.json();
|
||||
if (!s.ok) {
|
||||
throw Error(u.error);
|
||||
}
|
||||
if (s.data.no_user) {
|
||||
if (!parse_bool(localStorage.getItem("skip_create_root_user"), false)) {
|
||||
set_state("#/create_root_user");
|
||||
}
|
||||
}
|
||||
}
|
||||
8
server/user.ts
Normal file
8
server/user.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import type { UserPermission } from "../db.ts";
|
||||
|
||||
export type BUser = {
|
||||
id: number;
|
||||
username: string;
|
||||
is_admin: boolean;
|
||||
permissions: UserPermission;
|
||||
};
|
||||
@@ -13,14 +13,17 @@ export type JSONResult<T> = {
|
||||
error: string;
|
||||
};
|
||||
|
||||
function gen_response<T>(d: JSONResult<T>, status = 200) {
|
||||
function gen_response<T>(
|
||||
d: JSONResult<T>,
|
||||
status = 200,
|
||||
headers: HeadersInit = {},
|
||||
) {
|
||||
if (d.status !== 0) {
|
||||
status = (d.status >= 400 && d.status < 600) ? d.status : 400;
|
||||
}
|
||||
return new Response(JSON.stringify(d), {
|
||||
status,
|
||||
headers: { "Content-Type": "application/json" },
|
||||
});
|
||||
const h = new Headers(headers);
|
||||
h.set("Content-Type", "application/json");
|
||||
return new Response(JSON.stringify(d), { status, headers: h });
|
||||
}
|
||||
|
||||
export function return_error<T = unknown>(
|
||||
@@ -30,8 +33,12 @@ export function return_error<T = unknown>(
|
||||
return gen_response<T>({ ok: false, status, error });
|
||||
}
|
||||
|
||||
export function return_data<T = unknown>(data: T, status = 200) {
|
||||
return gen_response<T>({ ok: true, status: 0, data }, status);
|
||||
export function return_data<T = unknown>(
|
||||
data: T,
|
||||
status = 200,
|
||||
headers: HeadersInit = {},
|
||||
) {
|
||||
return gen_response<T>({ ok: true, status: 0, data }, status, headers);
|
||||
}
|
||||
|
||||
export function return_json<T = unknown>(data: T, status = 200) {
|
||||
|
||||
Reference in New Issue
Block a user