feat: Add admin authentication for Settings panel
- Add sftpgo_admins table to auth.sqlite (synced from PostgreSQL admins) - Add PgAdmin struct + sync_admins() method in sync.rs - Add fetch_admins() method in pg_client.rs - Add AdminLoginRequest/Response + admin_login() + verify_admin_token() in auth.rs - Add POST /api/v2/admin/login + GET /api/v2/admin/verify endpoints in server.rs - Add AdminLoginModal UI with password input + localStorage token in page.html - Test password: admin123 (bcrypt hash updated in PostgreSQL admins table) Architecture: - Independent admin auth system (matches SFTPGo design) - Admin sessions stored in-memory (24h validity) - bcrypt password verification (cost=10) - localStorage token persistence for UI - Settings panel requires admin authentication Files changed: - data/init_auth_db.sql: +20 lines - src/sync.rs: +100 lines - src/pg_client.rs: +50 lines - src/auth.rs: +60 lines - src/server.rs: +50 lines - src/page.html: +70 lines Total: ~290 lines added Tested: Admin sync, login, verify, UI modal all working
This commit is contained in:
BIN
data/auth.sqlite
BIN
data/auth.sqlite
Binary file not shown.
@@ -61,3 +61,21 @@ CREATE TABLE IF NOT EXISTS sync_log (
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sync_time ON sync_log(sync_time);
|
||||
CREATE INDEX IF NOT EXISTS idx_sync_status ON sync_log(status);
|
||||
|
||||
-- 5. Admins table (synced from sftpgo.admins)
|
||||
CREATE TABLE IF NOT EXISTS sftpgo_admins (
|
||||
username TEXT PRIMARY KEY,
|
||||
password_hash TEXT NOT NULL,
|
||||
email TEXT,
|
||||
description TEXT,
|
||||
status INTEGER DEFAULT 1,
|
||||
permissions TEXT NOT NULL,
|
||||
filters TEXT,
|
||||
role_id INTEGER,
|
||||
last_login INTEGER DEFAULT 0,
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL,
|
||||
last_sync_at INTEGER
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_admins_status ON sftpgo_admins(status);
|
||||
|
||||
Reference in New Issue
Block a user