An open API service indexing awesome lists of open source software.

https://github.com/snapmaker/snapmaker-admin


https://github.com/snapmaker/snapmaker-admin

Last synced: 26 days ago
JSON representation

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 — 内部使用