mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 21:13:50 +00:00

* perf: chat box components * perf: chatbox context * feat: extract support value type * workflow performance * update doc * feat: error response * feat: error response * oauth sort * perf: logo * fix: update laf account * perf: team permission api * update type
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import { AuthResponseType } from '@fastgpt/global/support/permission/type';
|
|
import { AuthModeType } from '../type';
|
|
import { TeamItemType } from '@fastgpt/global/support/user/team/type';
|
|
import { TeamMemberRoleEnum } from '@fastgpt/global/support/user/team/constant';
|
|
import { parseHeaderCert } from '../controller';
|
|
import { getTmbInfoByTmbId } from '../../user/team/controller';
|
|
import { UserErrEnum } from '../../../../global/common/error/code/user';
|
|
import { TeamErrEnum } from '@fastgpt/global/common/error/code/team';
|
|
|
|
export async function authUserNotVisitor(props: AuthModeType): Promise<
|
|
AuthResponseType & {
|
|
team: TeamItemType;
|
|
role: `${TeamMemberRoleEnum}`;
|
|
}
|
|
> {
|
|
const { teamId, tmbId } = await parseHeaderCert(props);
|
|
const team = await getTmbInfoByTmbId({ tmbId });
|
|
|
|
if (team.role === TeamMemberRoleEnum.visitor) {
|
|
return Promise.reject(UserErrEnum.binVisitor);
|
|
}
|
|
|
|
return {
|
|
teamId,
|
|
tmbId,
|
|
team,
|
|
role: team.role,
|
|
isOwner: team.role === TeamMemberRoleEnum.owner, // teamOwner
|
|
canWrite: true
|
|
};
|
|
}
|
|
|
|
/* auth user role */
|
|
export async function authUserRole(props: AuthModeType): Promise<
|
|
AuthResponseType & {
|
|
role: `${TeamMemberRoleEnum}`;
|
|
teamOwner: boolean;
|
|
}
|
|
> {
|
|
const result = await parseHeaderCert(props);
|
|
const { role: userRole, canWrite } = await getTmbInfoByTmbId({ tmbId: result.tmbId });
|
|
|
|
return {
|
|
...result,
|
|
isOwner: true,
|
|
role: userRole,
|
|
teamOwner: userRole === TeamMemberRoleEnum.owner,
|
|
canWrite
|
|
};
|
|
}
|
|
|
|
/* auth teamMember in team role */
|
|
export async function authTeamOwner(props: AuthModeType): Promise<
|
|
AuthResponseType & {
|
|
role: `${TeamMemberRoleEnum}`;
|
|
teamOwner: boolean;
|
|
}
|
|
> {
|
|
const authRes = await authUserRole(props);
|
|
|
|
if (authRes.role !== TeamMemberRoleEnum.owner) {
|
|
return Promise.reject(TeamErrEnum.unAuthTeam);
|
|
}
|
|
|
|
return authRes;
|
|
}
|