mmap/README.md
tsuki d29679c6f8
Some checks are pending
Docker Build and Push / build (push) Waiting to run
add casbin
2025-08-11 21:26:29 +08:00

201 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Map Application Server (MAPP)
一个基于 GraphQL 的现代地图应用服务器,支持实时数据同步、权限管理和多租户架构。
## 功能特性
- 🗺️ 基于 GraphQL 的地图数据服务
- 🔐 基于 Casbin 的 RBAC 权限管理
- 📡 Kafka 消息队列集成
- 🗄️ PostgreSQL 数据库支持
- 🚀 高性能异步架构
- 🔧 完整的 CLI 管理工具
## 快速开始
### 环境要求
- Rust 1.70+
- PostgreSQL 12+
- Kafka 2.8+ (可选)
### 安装
```bash
# 克隆项目
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
```
### 运行
```bash
# 启动服务器
./target/release/mapp serve
# 开发模式
./target/release/mapp serve --dev --verbose
# 运行数据库迁移
./target/release/mapp migrate
```
## 权限管理 CLI
MAPP 提供了完整的命令行权限管理工具,基于 Casbin RBAC 模型:
### 基本用法
```bash
# 查看权限管理帮助
./target/release/mapp permissions --help
# 列出所有权限策略
./target/release/mapp permissions list
# 重新加载权限策略
./target/release/mapp permissions reload
```
### 权限策略管理
```bash
# 添加权限策略:给 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
```
### 用户角色管理
```bash
# 为用户分配角色
./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
```
### 权限检查
```bash
# 检查用户是否有特定权限
./target/release/mapp permissions check --user-id user123 --resource pages --action write
```
### 常用权限配置示例
```bash
# 创建管理员角色权限
./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 |
### 数据库迁移
```bash
# 运行所有迁移
./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 # 权限管理服务
```
### 构建
```bash
# 开发构建
cargo build
# 发布构建
cargo build --release
# 运行测试
cargo test
# 代码检查
cargo clippy
```
## 许可证
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
## 贡献
欢迎提交 Issue 和 Pull Request
## 支持
如有问题,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件至 [support@example.com]