first commit
This commit is contained in:
262
README.md
Normal file
262
README.md
Normal 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. 用户可以使用账户登录系统
|
||||
Reference in New Issue
Block a user