权限软件包
这个软件包集中并组织整个应用程序使用的所有权限,形成结构完善的模块. 这个 确保前端执行和后端执行之间的一致性,希望能够更容易找到和使用 权限.
特征
- 模块组织: 权限根据其功能域(如:,
calendar, (中文(简体) ),commerce) (中文(简体) ). - 强打字: 权限被定义为具有类型安全性TypeScript支持的常数对象.
- 集中访问 : 将所有模块合并为一个单元
permissions用于方便访问的对象.
安装
npm install @bond-sports/permissions
使用量
所有权限都在中央权限对象中汇总,可以导入用于全局访问 :
import permissions from '@bond-sports/permissions';
console.log(permissions.calendar.reservation.create); // Output: "calendar.reservation.create"
console.log(permissions.commerce.kiosk.view); // Output: "commerce.kiosk.view"
添加新权限
要添加新权限 :
- 创建或更新相应的模块文件(例如日历相关权限的日历.ts).
- 遵循结构:
const CalendarPermissions = {
reservation: {
create: 'calendar.reservation.create',
edit: 'calendar.reservation.edit',
},
slots: {
sessions: {
checkIn: 'calendar.slots.sessions.checkIn',
},
},
} as const;
export default CalendarPermissions;
- 确保索引.ts文件导入新模块并更新权限对象.
示例:后端的用法
在后端服务中使用访问控制权限 :
import permissions from '@bond-sports/permissions';
// Example: Checking user permissions in a middleware
function hasPermission(userPermissions: string[], requiredPermission: string): boolean {
return userPermissions.includes(requiredPermission);
}
const userPermissions = ['calendar.reservation.create'];
const requiredPermission = permissions.calendar.reservation.create;
if (hasPermission(userPermissions, requiredPermission)) {
console.log('Permission granted');
} else {
console.log('Permission denied');
}
示例:前端使用量
根据用户权限控制 UI 组件 :
import permissions from '@bond-sports/permissions';
function PermissionsWrapper({ requiredPermission, children, userPermissions }) {
if (userPermissions.includes(requiredPermission)) {
return <>{children}</>;
}
return null;
}
// Usage in a React component
<PermissionsWrapper
requiredPermission={permissions.commerce.kiosk.view}
userPermissions={['commerce.kiosk.view']}
>
<button>Access Kiosk</button>
</PermissionsWrapper>;
捐款
- 清除寄存器并安装依赖性 :
git clone [email protected]:Bond-Sports/permissions.git
- 安装项目依赖性 :
npm install
-
在相应的模块文件中添加或修改权限 .
-
提交并按下您的更改 :
git commit -m "Add new permissions for [feature]"
git push
出版
当更新被推到特定的分支(如开发,中转,主机)时,此软件包会自动被发布 通过 GitHub 动作 .