Add password-protected access flow

This commit is contained in:
zeer
2026-04-25 20:57:24 +08:00
parent 37907dd2f5
commit 7b8f4aae06
7 changed files with 275 additions and 4 deletions

View File

@@ -11,6 +11,7 @@
- 支持拉取多文件夹邮件,不限于 `INBOX`
- 支持按需补拉单封邮件正文,避免全量同步过慢
- 支持批量导入导出邮箱信息
- 支持访问密码保护,未输入密码无法进入功能页面
- 提供 API 用于发邮件、获取邮件列表、获取最新一封邮件
## 技术栈
@@ -57,8 +58,15 @@ cp .env.example .env
```env
PORT=3000
DB_PATH=./mail.db
APP_PASSWORD=change-this-password
```
说明:
- `APP_PASSWORD` 用于控制页面和 API 访问
- 设置后,必须先在登录页输入正确密码才能进入系统
- 如果留空,则不启用密码保护
### 3. 启动服务
```bash
@@ -79,6 +87,12 @@ cp .env.example .env
如果你不需要额外环境变量,默认配置即可。
如果启用访问密码,请在 `.env` 中设置:
```env
APP_PASSWORD=your-strong-password
```
### 2. 构建并启动
```bash
@@ -124,6 +138,14 @@ Docker Compose 默认使用命名卷 `mail-sr-data` 持久化 SQLite 数据库
## Web 使用说明
### 0. 登录保护
如果 `.env` 中设置了 `APP_PASSWORD`,打开首页后会先进入登录页。
- 输入正确密码后,服务端会写入 `HttpOnly Cookie`
- 后续页面请求会基于该 Cookie 校验访问权限
- 点击左下角退出按钮可清除登录状态
### 1. 渠道管理
在设置弹窗中可以新增渠道,填写:
@@ -185,12 +207,36 @@ QQ邮箱----demo@qq.com----abcd1234
## API 文档
`健康检查``登录状态``登录接口` 外,其余 API 在启用 `APP_PASSWORD` 时都需要先登录。
### 健康检查
```bash
curl http://localhost:3000/api/health
```
### 登录状态
```bash
curl http://localhost:3000/api/auth/status
```
### 登录
```bash
curl -X POST http://localhost:3000/api/auth/login \
-H 'Content-Type: application/json' \
-d '{
"password": "your-strong-password"
}'
```
### 退出登录
```bash
curl -X POST http://localhost:3000/api/auth/logout
```
### 查询渠道
```bash