789ba73f8180d7629dbf4668144430d5f8df2888
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 可用内存
安装步骤
- 克隆项目
git clone https://github.com/your-username/pandora.git
cd pandora
- 配置环境变量
cp env.example .env
# 编辑 .env 文件,配置必要的环境变量
- 启动服务
docker-compose up -d
- 初始化数据库
docker-compose exec backend npm run db:migrate
docker-compose exec backend npm run db:seed
- 访问应用
开发指南
本地开发
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 运行测试
npm test
# 构建生产版本
npm run build
代码规范
- 使用 ESLint 和 Prettier 进行代码格式化
- 遵循 TypeScript 严格模式
- 使用 Conventional Commits 规范
部署
生产环境部署
# 构建生产镜像
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: 跨域资源共享控制
贡献指南
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
支持
如果您遇到问题或有建议,请:
更新日志
查看 CHANGELOG.md 了解版本更新历史。
用户激活功能
功能说明
- 新注册的用户默认为禁用状态(
isActive: false) - 用户需要等待管理员激活账户后才能登录
- 管理员可以在用户管理页面激活/禁用用户账户
修改内容
后端修改
-
注册控制器 (
backend/src/controllers/authController.ts)- 新注册用户默认为禁用状态
- 返回明确的激活提示信息
-
登录控制器 (
backend/src/controllers/authController.ts)- 检查用户是否激活
- 被禁用用户登录时返回明确错误信息
-
用户管理控制器 (
backend/src/controllers/userController.ts)- 管理员创建用户时默认为禁用状态
- 支持管理员激活/禁用用户
前端修改
-
登录页面 (
frontend/src/views/Home.vue)- 注册成功后显示激活提示
- 登录失败时区分账户禁用和其他错误
-
管理员用户管理 (
frontend/src/views/AdminUsers.vue)- 显示用户激活状态
- 支持管理员编辑用户激活状态
-
API调用 (
frontend/src/utils/api.ts)- 修复登录API使用username字段
- 移除不需要的email字段
-
类型定义 (
frontend/src/types/index.ts)- 更新用户类型定义
- 移除email相关字段
使用流程
- 用户注册 → 账户默认为禁用状态
- 管理员在用户管理页面查看新注册用户
- 管理员激活用户账户
- 用户可以使用账户登录系统
Description
Languages
Vue
51.5%
TypeScript
45.7%
JavaScript
1.2%
Dockerfile
0.7%
CSS
0.5%
Other
0.4%