@quantabit/rbac-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +95 -0
- package/dist/index.cjs +686 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +663 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +90 -0
- package/types/index.d.ts +109 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/services/rbacApi.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useRbac.js","../src/components/Rbac.jsx","../src/index.js"],"sourcesContent":["/**\n * RBAC SDK - API 客户端\n * 基于角色的访问控制系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * RBAC API 客户端\n */\nexport class RbacApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/rbac', config);\n }\n\n // ============ 权限检查 ============\n\n /**\n * 检查权限\n * @param {string} permission - 权限标识\n * @param {Object} context - 上下文\n */\n async checkPermission(permission, context = {}) {\n return this.post('/check', { permission, ...context });\n }\n\n /**\n * 批量检查权限\n * @param {string[]} permissions - 权限标识列表\n * @param {Object} context - 上下文\n */\n async batchCheckPermissions(permissions, context = {}) {\n return this.post('/check/batch', { permissions, ...context });\n }\n\n /**\n * 获取我的权限\n */\n async getMyPermissions() {\n return this.get('/my/permissions');\n }\n\n /**\n * 获取我的角色\n */\n async getMyRoles() {\n return this.get('/my/roles');\n }\n\n // ============ 角色管理 ============\n\n /**\n * 获取角色列表\n * @param {Object} params - 查询参数\n */\n async getRoles(params = {}) {\n return this.get('/roles', params);\n }\n\n /**\n * 获取角色详情\n * @param {string} roleId - 角色 ID\n */\n async getRole(roleId) {\n return this.get(`/roles/${roleId}`);\n }\n\n /**\n * 创建角色\n * @param {Object} role - 角色数据\n */\n async createRole(role) {\n return this.post('/roles', role);\n }\n\n /**\n * 更新角色\n * @param {string} roleId - 角色 ID\n * @param {Object} updates - 更新数据\n */\n async updateRole(roleId, updates) {\n return this.put(`/roles/${roleId}`, updates);\n }\n\n /**\n * 删除角色\n * @param {string} roleId - 角色 ID\n */\n async deleteRole(roleId) {\n return this.delete(`/roles/${roleId}`);\n }\n\n /**\n * 获取角色权限\n * @param {string} roleId - 角色 ID\n */\n async getRolePermissions(roleId) {\n return this.get(`/roles/${roleId}/permissions`);\n }\n\n /**\n * 设置角色权限\n * @param {string} roleId - 角色 ID\n * @param {string[]} permissions - 权限列表\n */\n async setRolePermissions(roleId, permissions) {\n return this.put(`/roles/${roleId}/permissions`, { permissions });\n }\n\n // ============ 用户角色 ============\n\n /**\n * 获取用户角色\n * @param {string} userId - 用户 ID\n */\n async getUserRoles(userId) {\n return this.get(`/users/${userId}/roles`);\n }\n\n /**\n * 分配用户角色\n * @param {string} userId - 用户 ID\n * @param {string[]} roleIds - 角色 ID 列表\n */\n async assignRoles(userId, roleIds) {\n return this.post(`/users/${userId}/roles`, { role_ids: roleIds });\n }\n\n /**\n * 分配单个用户角色(兼容快捷导出命名)\n * @param {string} userId - 用户 ID\n * @param {string} roleId - 角色 ID\n */\n async assignRole(userId, roleId) {\n return this.assignRoles(userId, [roleId]);\n }\n\n /**\n * 移除用户角色\n * @param {string} userId - 用户 ID\n * @param {string[]} roleIds - 角色 ID 列表\n */\n async removeRoles(userId, roleIds) {\n return this.delete(`/users/${userId}/roles`, { role_ids: roleIds });\n }\n\n /**\n * 获取角色用户\n * @param {string} roleId - 角色 ID\n * @param {Object} params - 查询参数\n */\n async getRoleUsers(roleId, params = {}) {\n return this.get(`/roles/${roleId}/users`, params);\n }\n\n // ============ 权限管理 ============\n\n /**\n * 获取权限列表\n * @param {Object} params - 查询参数\n */\n async getPermissions(params = {}) {\n return this.get('/permissions', params);\n }\n\n /**\n * 获取权限详情\n * @param {string} permissionId - 权限 ID\n */\n async getPermission(permissionId) {\n return this.get(`/permissions/${permissionId}`);\n }\n\n /**\n * 创建权限\n * @param {Object} permission - 权限数据\n */\n async createPermission(permission) {\n return this.post('/permissions', permission);\n }\n\n /**\n * 更新权限\n * @param {string} permissionId - 权限 ID\n * @param {Object} updates - 更新数据\n */\n async updatePermission(permissionId, updates) {\n return this.put(`/permissions/${permissionId}`, updates);\n }\n\n /**\n * 删除权限\n * @param {string} permissionId - 权限 ID\n */\n async deletePermission(permissionId) {\n return this.delete(`/permissions/${permissionId}`);\n }\n\n // ============ 资源控制 ============\n\n /**\n * 获取资源列表\n */\n async getResources() {\n return this.get('/resources');\n }\n\n /**\n * 获取资源权限\n * @param {string} resourceType - 资源类型\n * @param {string} resourceId - 资源 ID\n */\n async getResourcePermissions(resourceType, resourceId) {\n return this.get(`/resources/${resourceType}/${resourceId}/permissions`);\n }\n\n /**\n * 设置资源权限\n * @param {string} resourceType - 资源类型\n * @param {string} resourceId - 资源 ID\n * @param {Object} permissions - 权限配置\n */\n async setResourcePermissions(resourceType, resourceId, permissions) {\n return this.put(`/resources/${resourceType}/${resourceId}/permissions`, permissions);\n }\n}\n\n// 创建默认实例\nexport const rbacApi = new RbacApiClient();\n\n\n\nexport default rbacApi;\n","/**\n * RBAC SDK - 类型定义\n */\n\n// 权限类型\nexport const PermissionType = {\n READ: 'read',\n WRITE: 'write',\n DELETE: 'delete',\n ADMIN: 'admin',\n EXECUTE: 'execute',\n};\n\n// 资源类型\nexport const ResourceType = {\n API: 'api',\n PAGE: 'page',\n MENU: 'menu',\n BUTTON: 'button',\n DATA: 'data',\n FILE: 'file',\n};\n\n// 角色类型\nexport const RoleType = {\n SYSTEM: 'system',\n CUSTOM: 'custom',\n TEMPORARY: 'temporary',\n};\n\n// 条件操作符(ABAC)\nexport const ConditionOperator = {\n EQUALS: 'eq',\n NOT_EQUALS: 'neq',\n GREATER_THAN: 'gt',\n LESS_THAN: 'lt',\n IN: 'in',\n NOT_IN: 'not_in',\n CONTAINS: 'contains',\n STARTS_WITH: 'starts_with',\n};\n\nexport default { PermissionType, ResourceType, RoleType, ConditionOperator };\n\nexport const PermissionEffect = {};\n\nexport const ActionType = {};\n","/**\n * RBAC SDK - 多语言支持\n */\n\nconst messages = {\n en: {\n rbac: 'Access Control', roles: 'Roles', role: 'Role', permissions: 'Permissions', permission: 'Permission',\n users: 'Users', createRole: 'Create Role', editRole: 'Edit Role', deleteRole: 'Delete Role',\n roleName: 'Role Name', roleDescription: 'Description', assignRole: 'Assign Role', revokeRole: 'Revoke',\n resource: 'Resource', action: 'Action', effect: 'Effect', allow: 'Allow', deny: 'Deny',\n read: 'Read', write: 'Write', delete: 'Delete', admin: 'Admin', create: 'Create', update: 'Update',\n assignedUsers: 'Assigned Users', permissionCount: 'Permissions',\n loading: 'Loading...', noData: 'No data', save: 'Save', cancel: 'Cancel',\n },\n zh: {\n rbac: '访问控制', roles: '角色', role: '角色', permissions: '权限', permission: '权限',\n users: '用户', createRole: '创建角色', editRole: '编辑角色', deleteRole: '删除角色',\n roleName: '角色名称', roleDescription: '描述', assignRole: '分配角色', revokeRole: '撤销',\n resource: '资源', action: '操作', effect: '效果', allow: '允许', deny: '拒绝',\n read: '读取', write: '写入', delete: '删除', admin: '管理', create: '创建', update: '更新',\n assignedUsers: '已分配用户', permissionCount: '权限数',\n loading: '加载中...', noData: '暂无数据', save: '保存', cancel: '取消',\n },\n ja: {\n rbac: 'アクセス制御', roles: 'ロール', role: 'ロール', permissions: '権限', permission: '権限',\n users: 'ユーザー', createRole: 'ロールの作成', editRole: 'ロールの編集', deleteRole: 'ロールの削除',\n roleName: 'ロール名', roleDescription: '説明', assignRole: 'ロールの割り当て', revokeRole: '取り消し',\n resource: 'リソース', action: 'アクション', effect: '効果', allow: '許可', deny: '拒否',\n read: '読み取り', write: '書き込み', delete: '削除', admin: '管理', create: '作成', update: '更新',\n assignedUsers: '割り当て済みユーザー', permissionCount: '権限数',\n loading: '読み込み中...', noData: 'データなし', save: '保存', cancel: 'キャンセル',\n },\n ko: {\n rbac: '접근 제어', roles: '역할', role: '역할', permissions: '권한', permission: '권한',\n users: '사용자', createRole: '역할 생성', editRole: '역할 편집', deleteRole: '역할 삭제',\n roleName: '역할 이름', roleDescription: '설명', assignRole: '역할 할당', revokeRole: '철회',\n resource: '리소스', action: '작업', effect: '효과', allow: '허용', deny: '거부',\n read: '읽기', write: '쓰기', delete: '삭제', admin: '관리', create: '생성', update: '업데이트',\n assignedUsers: '할당된 사용자', permissionCount: '권한 수',\n loading: '로딩 중...', noData: '데이터 없음', save: '저장', cancel: '취소',\n },\n};\n\nconst SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) { if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang; }\nexport function getLanguage() { return currentLanguage; }\nexport function t(key) { return (messages[currentLanguage] || messages.en)[key] || key; }\nexport { messages, SUPPORTED_LANGUAGES };\n","/**\n * RBAC SDK - React Hooks\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { rbacApi } from '../services/rbacApi';\n\nexport function useRoles(options = {}) {\n const [roles, setRoles] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetch = useCallback(async () => {\n setLoading(true);\n try {\n const result = await rbacApi.getRoles(options);\n setRoles(result.items || result);\n setError(null);\n } catch (err) { setError(err); }\n finally { setLoading(false); }\n }, [JSON.stringify(options)]);\n\n useEffect(() => { fetch(); }, [fetch]);\n return { roles, loading, error, refresh: fetch };\n}\n\nexport function usePermissions(options = {}) {\n const [permissions, setPermissions] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n const fetch = useCallback(async () => {\n setLoading(true);\n try {\n const result = await rbacApi.getPermissions(options);\n setPermissions(result.items || result);\n setError(null);\n } catch (err) { setError(err); }\n finally { setLoading(false); }\n }, [JSON.stringify(options)]);\n\n useEffect(() => { fetch(); }, [fetch]);\n return { permissions, loading, error, refresh: fetch };\n}\n\nexport function useUserRoles(userId) {\n const [roles, setRoles] = useState([]);\n const [loading, setLoading] = useState(true);\n\n const fetch = useCallback(async () => {\n if (!userId) return;\n setLoading(true);\n try {\n const result = await rbacApi.getUserRoles(userId);\n setRoles(result.items || result);\n } catch (err) { console.error(err); }\n finally { setLoading(false); }\n }, [userId]);\n\n useEffect(() => { fetch(); }, [fetch]);\n return { roles, loading, refresh: fetch };\n}\n\nexport function useRbacActions() {\n const [loading, setLoading] = useState(false);\n\n const assignRole = useCallback(async (userId, roleId) => {\n setLoading(true);\n try { return await rbacApi.assignRole(userId, roleId); }\n finally { setLoading(false); }\n }, []);\n\n const revokeRole = useCallback(async (userId, roleId) => {\n setLoading(true);\n try { await rbacApi.revokeRole(userId, roleId); }\n finally { setLoading(false); }\n }, []);\n\n const checkPermission = useCallback(async (userId, resource, action) => {\n try { return await rbacApi.checkPermission(userId, resource, action); }\n catch { return { allowed: false }; }\n }, []);\n\n return { assignRole, revokeRole, checkPermission, loading };\n}\n\n","/**\n * RBAC SDK - 权限组件\n */\n\nimport React from 'react';\nimport { t } from '../i18n';\n\nconst roleIcons = { admin: '👑', moderator: '🛡️', user: '👤', guest: '🚪' };\n\nexport function PermissionTag({ permission, effect = 'allow' }) {\n return (\n <span className={`rbac-permission-tag ${effect}`}>\n {effect === 'allow' ? '✓' : '✗'} {permission}\n </span>\n );\n}\n\nexport function RoleCard({ role, onClick, onEdit, onDelete }) {\n const icon = roleIcons[role.name?.toLowerCase()] || '🔐';\n \n return (\n <div className=\"rbac-role-card\" onClick={() => onClick?.(role)} style={{ cursor: onClick ? 'pointer' : 'default' }}>\n <div className=\"rbac-role-name\">{icon} {role.name}</div>\n <div className=\"rbac-role-desc\">{role.description || '-'}</div>\n <div className=\"rbac-role-meta\">\n <span>{role.permission_count || role.permissions?.length || 0} {t('permissionCount')}</span>\n <span>{role.user_count || 0} {t('users')}</span>\n </div>\n {(onEdit || onDelete) && (\n <div style={{ display: 'flex', gap: '8px', marginTop: '12px' }}>\n {onEdit && <button className=\"rbac-btn rbac-btn-outline\" style={{ padding: '4px 10px', fontSize: '12px' }} onClick={(e) => { e.stopPropagation(); onEdit(role); }}>{t('editRole')}</button>}\n {onDelete && <button className=\"rbac-btn rbac-btn-outline\" style={{ padding: '4px 10px', fontSize: '12px', color: '#ef4444' }} onClick={(e) => { e.stopPropagation(); onDelete(role.id); }}>{t('deleteRole')}</button>}\n </div>\n )}\n </div>\n );\n}\n\nexport function RoleGrid({ roles = [], loading = false, onClick, onEdit, onDelete, onCreate, className = '' }) {\n if (loading) return <div className={`rbac-card ${className}`}><div className=\"rbac-loading\"><div className=\"rbac-spinner\" /></div></div>;\n if (roles.length === 0) return (\n <div className={`rbac-card ${className}`}>\n <div className=\"rbac-empty\">\n <div style={{ fontSize: '48px', marginBottom: '16px' }}>🔐</div>\n <div>{t('noData')}</div>\n {onCreate && <button className=\"rbac-btn rbac-btn-primary\" onClick={onCreate} style={{ marginTop: '16px' }}>{t('createRole')}</button>}\n </div>\n </div>\n );\n \n return (\n <div className={`rbac-card ${className}`} style={{ padding: 0 }}>\n <div className=\"rbac-role-grid\">\n {roles.map(role => <RoleCard key={role.id} role={role} onClick={onClick} onEdit={onEdit} onDelete={onDelete} />)}\n </div>\n </div>\n );\n}\n\nexport function PermissionList({ permissions = [], className = '' }) {\n if (permissions.length === 0) return null;\n \n return (\n <div className={`rbac-permission-list ${className}`}>\n {permissions.map((p, i) => (\n <PermissionTag key={i} permission={`${p.resource}:${p.action}`} effect={p.effect} />\n ))}\n </div>\n );\n}\n\nexport default RoleGrid;\n","/**\n * @quantabit/rbac-sdk\n * RBAC SDK - Full Version\n */\n\nexport { rbacApi, RbacApiClient } from './services/rbacApi';\nexport { PermissionEffect, ResourceType, ActionType } from './types';\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\nexport { useRoles, usePermissions, useUserRoles, useRbacActions } from './hooks/useRbac';\nexport { RoleGrid, RoleCard, PermissionList, PermissionTag } from './components/Rbac';\n\nimport { rbacApi } from './services/rbacApi';\n\nexport const getRoles = (...args) => rbacApi.getRoles(...args);\nexport const getPermissions = (...args) => rbacApi.getPermissions(...args);\nexport const assignRole = (userId, roleId) => rbacApi.assignRoles(userId, Array.isArray(roleId) ? roleId : [roleId]);\nexport const checkPermission = (...args) => rbacApi.checkPermission(...args);\n\nimport './styles/main.css';\n"],"names":["RbacApiClient","BaseApiClient","constructor","config","checkPermission","permission","context","post","batchCheckPermissions","permissions","getMyPermissions","get","getMyRoles","getRoles","params","getRole","roleId","createRole","role","updateRole","updates","put","deleteRole","delete","getRolePermissions","setRolePermissions","getUserRoles","userId","assignRoles","roleIds","role_ids","assignRole","removeRoles","getRoleUsers","getPermissions","getPermission","permissionId","createPermission","updatePermission","deletePermission","getResources","getResourcePermissions","resourceType","resourceId","setResourcePermissions","rbacApi","ResourceType","API","PAGE","MENU","BUTTON","DATA","FILE","PermissionEffect","ActionType","messages","en","rbac","roles","users","editRole","roleName","roleDescription","revokeRole","resource","action","effect","allow","deny","read","write","admin","create","update","assignedUsers","permissionCount","loading","noData","save","cancel","zh","ja","ko","SUPPORTED_LANGUAGES","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useRoles","options","setRoles","useState","setLoading","error","setError","fetch","useCallback","result","items","err","JSON","stringify","useEffect","refresh","usePermissions","setPermissions","useUserRoles","console","useRbacActions","allowed","roleIcons","moderator","user","guest","PermissionTag","React","createElement","className","RoleCard","onClick","onEdit","onDelete","icon","name","toLowerCase","style","cursor","description","permission_count","length","user_count","display","gap","marginTop","padding","fontSize","e","stopPropagation","color","id","RoleGrid","onCreate","marginBottom","map","PermissionList","p","i","args","Array","isArray"],"mappings":"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"}
|