feat: teamEnvironment module added

This commit is contained in:
Mir Arif Hasan
2023-02-08 15:18:46 +06:00
parent 9bee62ada9
commit c5d8a446ae
15 changed files with 1012 additions and 21 deletions

View File

@@ -9,6 +9,7 @@ import {
BUG_AUTH_NO_USER_CTX,
BUG_TEAM_NO_REQUIRE_TEAM_ROLE,
BUG_TEAM_NO_TEAM_ID,
TEAM_MEMBER_NOT_FOUND,
} from 'src/errors';
@Injectable()
@@ -23,24 +24,20 @@ export class GqlTeamMemberGuard implements CanActivate {
'requiresTeamRole',
context.getHandler(),
);
if (!requireRoles) throw new Error(BUG_TEAM_NO_REQUIRE_TEAM_ROLE);
const gqlExecCtx = GqlExecutionContext.create(context);
const { user } = gqlExecCtx.getContext().req;
if (user == undefined) throw new Error(BUG_AUTH_NO_USER_CTX);
const { teamID } = gqlExecCtx.getArgs<{ teamID: string }>();
if (!teamID) throw new Error(BUG_TEAM_NO_TEAM_ID);
const status = await this.teamService.getTeamMember(teamID, user.uid);
const teamMember = await this.teamService.getTeamMember(teamID, user.uid);
if (!teamMember) throw new Error(TEAM_MEMBER_NOT_FOUND);
if (!status) throw new Error('team/member_not_found');
if (requireRoles.includes(status.role)) return true;
if (requireRoles.includes(teamMember.role)) return true;
throw new Error(TEAM_NOT_REQUIRED_ROLE);
}

View File

@@ -16,7 +16,7 @@ export class Team {
@ObjectType()
export class TeamMember {
@Field(() => ID, {
description: 'Membership ID of the Team Member'
description: 'Membership ID of the Team Member',
})
membershipID: string;

View File

@@ -8,7 +8,7 @@ import { PrismaModule } from '../prisma/prisma.module';
import { PubSubModule } from '../pubsub/pubsub.module';
@Module({
imports: [UserModule ,PubSubModule , PrismaModule ],
imports: [UserModule, PubSubModule, PrismaModule],
providers: [
TeamService,
TeamResolver,

View File

@@ -66,7 +66,7 @@ export class TeamService implements UserDataHandler, OnModuleInit {
role: TeamMemberRole,
): Promise<E.Left<string> | E.Right<TeamMember>> {
const user = await this.userService.findUserByEmail(email);
if(O.isNone(user)) return E.left(USER_NOT_FOUND);
if (O.isNone(user)) return E.left(USER_NOT_FOUND);
const teamMember = await this.addMemberToTeam(teamID, user.value.uid, role);
return E.right(teamMember);