first commit

This commit is contained in:
2025-07-08 00:52:10 +08:00
commit aa2416c5d6
69 changed files with 16628 additions and 0 deletions

262
README.md Normal file
View File

@@ -0,0 +1,262 @@
# Pandora - 网站账号共享系统
## 项目简介
Pandora 是一个现代化的网站账号共享管理系统允许用户通过不同的域名路径访问共享的网站账号。系统提供了完整的用户管理、权限控制和账号token管理功能。
## 核心功能
### 🏠 用户界面
- **Claude风格首页**: 现代化的AI助手风格界面设计
- **多路径登录**: 支持三个不同的登录路径,每个路径对应独立域名
- **响应式设计**: 适配各种设备尺寸
### 🔐 认证系统
- **多路径登录**: 用户可选择不同的登录路径
- **二步验证**: 支持邮箱验证码和TOTP验证
- **权限控制**: 基于角色的访问控制
### 👥 用户管理
- **用户注册/登录**: 完整的用户认证流程
- **权限分配**: 管理员可控制用户访问权限
- **路径权限**: 用户只能看到有权限的登录路径
### 🔑 账号管理
- **Token存储**: 安全存储不同网站的账号token
- **账号分配**: 将网站账号分配给指定用户
- **访问控制**: 未分配的账号用户无法访问
### 🛠️ 后台管理
- **用户管理**: 查看、编辑、删除用户
- **权限管理**: 分配和撤销用户权限
- **账号管理**: 管理网站账号和token
- **系统监控**: 访问日志和系统状态
## 技术架构
### 前端技术栈
- **Vue 3**: 现代化的前端框架
- **TypeScript**: 类型安全的JavaScript
- **Tailwind CSS**: 实用优先的CSS框架
- **Vue Router**: 客户端路由
- **Pinia**: 状态管理
- **VueUse**: 组合式工具库
- **VeeValidate**: 表单验证
- **Vue Toastification**: 通知组件
### 后端技术栈
- **Node.js**: JavaScript运行时
- **Express.js**: Web应用框架
- **TypeScript**: 类型安全
- **Prisma**: 数据库ORM
- **PostgreSQL**: 主数据库
- **Redis**: 缓存和会话存储
- **JWT**: 身份验证
- **bcrypt**: 密码加密
- **nodemailer**: 邮件发送
- **speakeasy**: TOTP生成
### 基础设施
- **Docker**: 容器化部署
- **Docker Compose**: 多服务编排
- **Nginx**: 反向代理和负载均衡
- **Let's Encrypt**: SSL证书
## 系统架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Domain A │ │ Domain B │ │ Domain C │
│ (path1.com) │ │ (path2.com) │ │ (path3.com) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
┌─────────────────┐
│ Nginx Proxy │
│ (Load Bal.) │
└─────────────────┘
┌─────────────────┐
│ Frontend │
│ (Vue App) │
└─────────────────┘
┌─────────────────┐
│ Backend API │
│ (Express.js) │
└─────────────────┘
┌───────────────────────┼───────────────────────┐
│ │ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Redis │ │ File Storage │
│ (Main DB) │ │ (Cache/Session)│ │ (Uploads) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 数据库设计
### 核心表结构
- **users**: 用户信息表
- **user_paths**: 用户路径权限表
- **website_accounts**: 网站账号表
- **account_assignments**: 账号分配表
- **sessions**: 用户会话表
- **audit_logs**: 审计日志表
## 快速开始
### 环境要求
- Docker 20.10+
- Docker Compose 2.0+
- 至少 2GB 可用内存
### 安装步骤
1. **克隆项目**
```bash
git clone https://github.com/your-username/pandora.git
cd pandora
```
2. **配置环境变量**
```bash
cp env.example .env
# 编辑 .env 文件,配置必要的环境变量
```
3. **启动服务**
```bash
docker-compose up -d
```
4. **初始化数据库**
```bash
docker-compose exec backend npm run db:migrate
docker-compose exec backend npm run db:seed
```
5. **访问应用**
- 前端: http://localhost:3000
- 管理后台: http://localhost:3000/admin
- API文档: http://localhost:3000/api/docs
## 开发指南
### 本地开发
```bash
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 运行测试
npm test
# 构建生产版本
npm run build
```
### 代码规范
- 使用 ESLint 和 Prettier 进行代码格式化
- 遵循 TypeScript 严格模式
- 使用 Conventional Commits 规范
## 部署
### 生产环境部署
```bash
# 构建生产镜像
docker-compose -f docker-compose.prod.yml build
# 启动生产服务
docker-compose -f docker-compose.prod.yml up -d
```
### 环境变量配置
生产环境需要配置以下环境变量:
- `DATABASE_URL`: PostgreSQL连接字符串
- `REDIS_URL`: Redis连接字符串
- `JWT_SECRET`: JWT密钥
- `SMTP_CONFIG`: 邮件服务器配置
- `DOMAIN_CONFIG`: 域名配置
## 安全特性
- **密码加密**: 使用bcrypt进行密码哈希
- **JWT认证**: 安全的token认证机制
- **二步验证**: 支持邮箱和TOTP验证
- **权限控制**: 基于角色的访问控制
- **审计日志**: 完整的操作日志记录
- **HTTPS**: 强制HTTPS连接
- **CORS**: 跨域资源共享控制
## 贡献指南
1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request
## 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 支持
如果您遇到问题或有建议,请:
1. 查看 [FAQ](docs/FAQ.md)
2. 搜索 [Issues](https://github.com/your-username/pandora/issues)
3. 创建新的 Issue
## 更新日志
查看 [CHANGELOG.md](CHANGELOG.md) 了解版本更新历史。
## 用户激活功能
### 功能说明
- 新注册的用户默认为禁用状态(`isActive: false`
- 用户需要等待管理员激活账户后才能登录
- 管理员可以在用户管理页面激活/禁用用户账户
### 修改内容
#### 后端修改
1. **注册控制器** (`backend/src/controllers/authController.ts`)
- 新注册用户默认为禁用状态
- 返回明确的激活提示信息
2. **登录控制器** (`backend/src/controllers/authController.ts`)
- 检查用户是否激活
- 被禁用用户登录时返回明确错误信息
3. **用户管理控制器** (`backend/src/controllers/userController.ts`)
- 管理员创建用户时默认为禁用状态
- 支持管理员激活/禁用用户
#### 前端修改
1. **登录页面** (`frontend/src/views/Home.vue`)
- 注册成功后显示激活提示
- 登录失败时区分账户禁用和其他错误
2. **管理员用户管理** (`frontend/src/views/AdminUsers.vue`)
- 显示用户激活状态
- 支持管理员编辑用户激活状态
3. **API调用** (`frontend/src/utils/api.ts`)
- 修复登录API使用username字段
- 移除不需要的email字段
4. **类型定义** (`frontend/src/types/index.ts`)
- 更新用户类型定义
- 移除email相关字段
### 使用流程
1. 用户注册 → 账户默认为禁用状态
2. 管理员在用户管理页面查看新注册用户
3. 管理员激活用户账户
4. 用户可以使用账户登录系统