|
|
||
|---|---|---|
| .github/workflows | ||
| .sqlx | ||
| docs | ||
| migrations | ||
| src | ||
| .env | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dockerfile | ||
| README.md | ||
Map Application Server (MAPP)
一个基于 GraphQL 的现代地图应用服务器,支持实时数据同步、权限管理和多租户架构。
功能特性
- 🗺️ 基于 GraphQL 的地图数据服务
- 🔐 基于 Casbin 的 RBAC 权限管理
- 📡 Kafka 消息队列集成
- 🗄️ PostgreSQL 数据库支持
- 🚀 高性能异步架构
- 🔧 完整的 CLI 管理工具
快速开始
环境要求
- Rust 1.70+
- PostgreSQL 12+
- Kafka 2.8+ (可选)
安装
# 克隆项目
git clone <repository-url>
cd mapp
# 安装依赖
cargo build --release
# 设置环境变量
export DATABASE_URL="postgresql://username:password@localhost/mapp"
export JWT_SECRET="your-secret-key"
export PORT=3000
运行
# 启动服务器
./target/release/mapp serve
# 开发模式
./target/release/mapp serve --dev --verbose
# 运行数据库迁移
./target/release/mapp migrate
权限管理 CLI
MAPP 提供了完整的命令行权限管理工具,基于 Casbin RBAC 模型:
基本用法
# 查看权限管理帮助
./target/release/mapp permissions --help
# 列出所有权限策略
./target/release/mapp permissions list
# 重新加载权限策略
./target/release/mapp permissions reload
权限策略管理
# 添加权限策略:给 admin 角色添加删除用户的权限
./target/release/mapp permissions add --role admin --resource users --action delete
# 移除权限策略:移除 admin 角色的删除用户权限
./target/release/mapp permissions remove --role admin --resource users --action delete
# 查看角色权限
./target/release/mapp permissions list-role-permissions --role admin
用户角色管理
# 为用户分配角色
./target/release/mapp permissions assign-role --user-id user123 --role editor
# 移除用户角色
./target/release/mapp permissions remove-role --user-id user123 --role editor
# 查看用户角色
./target/release/mapp permissions list-user-roles --user-id user123
权限检查
# 检查用户是否有特定权限
./target/release/mapp permissions check --user-id user123 --resource pages --action write
常用权限配置示例
# 创建管理员角色权限
./target/release/mapp permissions add --role admin --resource "*" --action "*"
# 创建编辑者角色权限
./target/release/mapp permissions add --role editor --resource pages --action read
./target/release/mapp permissions add --role editor --resource pages --action write
./target/release/mapp permissions add --role editor --resource page_blocks --action read
./target/release/mapp permissions add --role editor --resource page_blocks --action write
# 创建查看者角色权限
./target/release/mapp permissions add --role viewer --resource pages --action read
./target/release/mapp permissions add --role viewer --resource page_blocks --action read
# 为用户分配角色
./target/release/mapp permissions assign-role --user-id admin@example.com --role admin
./target/release/mapp permissions assign-role --user-id editor@example.com --role editor
./target/release/mapp permissions assign-role --user-id viewer@example.com --role viewer
配置说明
环境变量
| 变量名 | 描述 | 默认值 |
|---|---|---|
DATABASE_URL |
PostgreSQL 连接字符串 | 必需 |
JWT_SECRET |
JWT 签名密钥 | 必需 |
PORT |
服务器端口 | 3000 |
TILE_SERVER |
瓦片服务器 URL | 必需 |
KAFKA_BROKERS |
Kafka 集群地址 | localhost:9092 |
KAFKA_TOPIC |
Kafka 主题 | mapp-events |
KAFKA_GROUP_ID |
Kafka 消费者组 | mapp-group |
数据库迁移
# 运行所有迁移
./target/release/mapp migrate
# 查看迁移状态
./target/release/mapp migrate --dry-run
# 强制重新运行迁移
./target/release/mapp migrate --force
开发
项目结构
src/
├── app.rs # 应用路由配置
├── auth.rs # 认证和授权
├── cli.rs # 命令行接口
├── config.rs # 配置管理
├── db.rs # 数据库连接
├── graphql/ # GraphQL 相关
│ ├── guards.rs # 权限守卫
│ ├── mutation.rs # 变更操作
│ ├── query.rs # 查询操作
│ └── types.rs # 类型定义
├── listener/ # 消息监听器
├── models/ # 数据模型
└── services/ # 业务服务
└── casbin_service.rs # 权限管理服务
构建
# 开发构建
cargo build
# 发布构建
cargo build --release
# 运行测试
cargo test
# 代码检查
cargo clippy
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
贡献
欢迎提交 Issue 和 Pull Request!
支持
如有问题,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件至 [support@example.com]