feat: implement user authentication and license management system

- Added schema for users, licenses, and license hostnames in the database.
- Created storage utility for reading and writing JSON files.
- Developed user service for user registration, authentication, and retrieval.
- Implemented authentication middleware to protect routes.
- Built LicenseCard component to display license details.
- Created SiteNav component for navigation with user authentication status.
- Established AuthContext for managing authentication state and actions.
- Developed Home page to display available plugins.
- Created LicenseManager page for managing licenses with forms for creation and verification.
- Implemented PluginDetail page to show detailed information about a specific plugin.
- Added utility functions for date formatting.
This commit is contained in:
2026-02-01 02:20:28 +00:00
parent f4411ffd88
commit 7b0ca40c4f
27 changed files with 2344 additions and 428 deletions

19
server/lib/storage.js Normal file
View File

@@ -0,0 +1,19 @@
import fs from "fs/promises";
export async function readJsonFile(filePath, fallback = []) {
try {
const content = await fs.readFile(filePath, "utf-8");
const parsed = JSON.parse(content);
return parsed ?? fallback;
} catch (error) {
if (error.code === "ENOENT") {
await fs.writeFile(filePath, JSON.stringify(fallback, null, 2));
return fallback;
}
throw error;
}
}
export async function writeJsonFile(filePath, data) {
await fs.writeFile(filePath, JSON.stringify(data, null, 2));
}