# Unified Login SDK

统一登录前端SDK，基于OAuth2协议实现前后端分离项目的认证和权限管理。

## 安装

```bash
npm install unified-login-sdk
```

## 快速开始

### 基础使用

```javascript
import unifiedLoginSDK from 'unified-login-sdk';

// 初始化配置
unifiedLoginSDK.init({
  clientId: 'your-client-id',
  basepath: 'https://api.example.com',
  homePage: '/dashboard',
  idpLogoutUrl: 'https://idp.example.com/logout'
});

// 检查登录状态
if (!unifiedLoginSDK.isAuthenticated()) {
  // 执行登录
  await unifiedLoginSDK.login();
}

// 获取用户信息
const userInfo = unifiedLoginSDK.getUserInfo();
console.log('欢迎:', userInfo.nickName);
```

### Vue 3 集成

```javascript
// main.js
import { createApp } from 'vue';
import { createVuePlugin } from 'unified-login-sdk';

const app = createApp(App);
const loginPlugin = createVuePlugin('localStorage');

app.use(loginPlugin, {
  config: {
    clientId: 'your-client-id',
    basepath: 'https://api.example.com',
    homePage: '/dashboard',
    idpLogoutUrl: 'https://idp.example.com/logout'
  }
});

app.mount('#app');
```

### 权限检查

```javascript
// 检查单个权限
const hasPermission = await unifiedLoginSDK.hasPermission('user:read');

// 检查多个权限
const hasAllPermissions = await unifiedLoginSDK.hasAllPermissions(['user:read', 'user:write']);

// 检查角色
const hasRole = await unifiedLoginSDK.hasRole('admin');
```

## 核心功能

- ✅ OAuth2认证流程
- ✅ Token自动管理
- ✅ 用户信息获取
- ✅ 权限和角色检查
- ✅ Vue 2/3插件支持
- ✅ 路由守卫集成
- ✅ 事件监听机制

## API参考

### 主要方法

| 方法 | 说明 | 参数 | 返回值 |
|------|------|------|--------|
| `init(config)` | 初始化SDK | 配置对象 | void |
| `login()` | 执行登录 | redirectUri(可选) | Promise<void> |
| `logout()` | 退出登录 | 无 | Promise<void> |
| `isAuthenticated()` | 检查认证状态 | 无 | boolean |
| `getUserInfo()` | 获取用户信息 | 无 | UserInfo |
| `hasPermission(permission)` | 检查权限 | 权限标识 | Promise<boolean> |
| `hasRole(role)` | 检查角色 | 角色标识 | Promise<boolean> |

### 事件监听

```javascript
// 登录事件
unifiedLoginSDK.on('login', () => {
  console.log('用户已登录');
});

// 退出事件
unifiedLoginSDK.on('logout', () => {
  console.log('用户已退出');
});
```

## 浏览器支持

- Chrome (推荐)
- Firefox
- Safari
- Edge

## 许可证

MIT