https://github.com/snapmaker/snapmaker-admin
https://github.com/snapmaker/snapmaker-admin
Last synced: 26 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/snapmaker/snapmaker-admin
- Owner: Snapmaker
- Created: 2026-04-13T11:18:15.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-12T09:07:20.000Z (29 days ago)
- Last Synced: 2026-05-12T11:10:57.709Z (29 days ago)
- Language: TypeScript
- Size: 333 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @snapmaker/admin-auth
Snapmaker 管理端共享权限包。对接 `snapmaker-admin-oauth` 权限系统,提供 OAuth2 登录、RBAC 权限判断、服务端菜单驱动渲染、请求拦截器等完整能力。
## 安装
```bash
# 本仓库 workspace 内
pnpm add @snapmaker/admin-auth --filter
# 其他仓库(Git 安装)
pnpm add "git+https://your-gitlab.com/snapmaker/snapmaker-admin.git#main&path=packages/admin-auth"
```
## 快速开始
```ts
// 1. 配置 API 地址
import { initAuthConfig } from '@snapmaker/admin-auth';
// 开发环境:相对路径走 Umi proxy
initAuthConfig({ baseUrl: '' });
// 生产环境:绝对路径直连后端
initAuthConfig({ baseUrl: 'https://api.snapmaker.com' });
```
```ts
// 2. .umirc.ts — 请求拦截器
export const request = createPermissionRequest({
getAccessToken, setTokens, removeTokens, attemptRefresh, getRefreshState,
});
```
```tsx
// 3. 页面中控制权限
import { Authorized } from '@snapmaker/admin-auth';
删除
```
详细接入步骤见 [INTEGRATION.md](./INTEGRATION.md)。
## 做了什么
| 模块 | 说明 |
|------|------|
| `auth.ts` | Token 存取(localStorage 双 token)、并发安全的 refresh、封装全部 API |
| `access.ts` | `createAccess(user)` → `hasPermission` / `hasAnyPermission` / `hasRole`,`super_admin` 全过 |
| `menu.ts` | 服务端菜单树 → ProLayout menuData 转换 |
| `request.ts` | `createPermissionRequest()` → Umi RequestConfig 工厂,自动 Bearer token + 401 refresh |
| `Authorized.tsx` | `` 权限守卫组件 |
| `useLogin.ts` | `useLogin()` hook,封装 login → 存 token → 拉权限信息的完整流程 |
## 依赖
- `react` ^18/^19
- `@umijs/max` ^4
- `antd` ^5
## 后端前置条件
`snapmaker-admin-oauth` 服务已部署,核心接口:
| 接口 | 说明 |
|------|------|
| `POST /system/auth/login` | 账号密码登录,返回 accessToken + refreshToken |
| `GET /system/auth/get-permission-info` | 返回用户、角色、权限标识、菜单树 |
| `POST /system/auth/refresh-token` | 刷新 token |
| `POST /system/auth/logout` | 登出 |
## License
UNLICENSED — 内部使用