# 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. 用户可以使用账户登录系统