You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/client/shared/utils/role-helper.ts

140 lines
3.3 KiB
TypeScript

import { model, t } from '..';
/**
*
*
*/
export const AllPermission = Symbol('AllPermission');
export interface PermissionItemType {
/**
* key,
* , : plugin.com.msgbyte.github.manage
*/
key: string;
/**
*
*/
title: string;
/**
*
*/
desc: string;
/**
*
*/
default: boolean;
/**
*
*/
required?: string[];
}
export const PERMISSION = {
/**
* core
*/
core: {
message: 'core.message',
invite: 'core.invite',
unlimitedInvite: 'core.unlimitedInvite',
groupDetail: 'core.groupDetail',
groupConfig: 'core.groupConfig',
manageUser: 'core.manageUser',
managePanel: 'core.managePanel',
manageInvite: 'core.manageInvite',
manageRoles: 'core.manageRoles',
deleteMessage: 'core.deleteMessage',
},
};
export const getPermissionList = (): PermissionItemType[] => [
{
key: PERMISSION.core.message,
title: t('发送消息'),
desc: t('允许成员在文字频道发送消息'),
default: true,
},
{
key: PERMISSION.core.invite,
title: t('邀请链接'),
desc: t('允许成员创建邀请链接'),
default: false,
},
{
key: PERMISSION.core.unlimitedInvite,
title: t('不限时邀请链接'),
desc: t('允许成员创建不限时邀请链接'),
default: false,
required: [PERMISSION.core.invite],
},
{
key: PERMISSION.core.groupDetail,
title: t('查看群组详情'),
desc: t('允许成员查看群组详情'),
default: false,
},
{
key: PERMISSION.core.groupConfig,
title: t('修改群组配置'),
desc: t('允许成员修改群组配置'),
default: false,
required: [PERMISSION.core.groupDetail],
},
{
key: PERMISSION.core.manageUser,
title: t('允许管理用户'),
desc: t('允许成员管理用户,如禁言、移除用户等操作'),
default: false,
required: [PERMISSION.core.groupDetail],
},
{
key: PERMISSION.core.managePanel,
title: t('允许管理频道'),
desc: t('允许成员查看管理频道'),
default: false,
required: [PERMISSION.core.groupDetail],
},
{
key: PERMISSION.core.manageInvite,
title: t('允许管理邀请链接'),
desc: t('允许成员管理邀请链接'),
default: false,
required: [PERMISSION.core.groupDetail],
},
{
key: PERMISSION.core.manageRoles,
title: t('允许管理身份组'),
desc: t('允许成员管理身份组'),
default: false,
required: [PERMISSION.core.groupDetail],
},
{
key: PERMISSION.core.deleteMessage,
title: t('删除消息'),
desc: t('允许删除用户信息'),
default: false,
required: [PERMISSION.core.groupDetail],
},
];
/**
*
*/
export function getDefaultPermissionList(): string[] {
return getPermissionList()
.filter((p) => p.default)
.map((p) => p.key);
}
/**
*
*/
export async function applyDefaultFallbackGroupPermission(groupId: string) {
await model.group.modifyGroupField(
groupId,
'fallbackPermissions',
getDefaultPermissionList()
);
}