feat: implement user impersonation feature (#976)
* feat: wip impersonate user * feat: add ability to impersonate an user * fix: remove console.log * fix: unused import
This commit is contained in:
@ -20,6 +20,8 @@ import {
|
||||
import { WorkspaceMemberService } from 'src/core/workspace/services/workspace-member.service';
|
||||
import { DeleteOneWorkspaceMemberArgs } from 'src/core/@generated/workspace-member/delete-one-workspace-member.args';
|
||||
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
|
||||
import { AuthUser } from 'src/decorators/auth-user.decorator';
|
||||
import { User } from 'src/core/@generated/user/user.model';
|
||||
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Resolver(() => WorkspaceMember)
|
||||
@ -48,6 +50,24 @@ export class WorkspaceMemberResolver {
|
||||
});
|
||||
}
|
||||
|
||||
@Mutation(() => WorkspaceMember)
|
||||
async allowImpersonation(
|
||||
@Args('allowImpersonation') allowImpersonation: boolean,
|
||||
@AuthUser() user: User,
|
||||
@PrismaSelector({ modelName: 'WorkspaceMember' })
|
||||
prismaSelect: PrismaSelect<'WorkspaceMember'>,
|
||||
): Promise<Partial<WorkspaceMember>> {
|
||||
return this.workspaceMemberService.update({
|
||||
where: {
|
||||
userId: user.id,
|
||||
},
|
||||
data: {
|
||||
allowImpersonation,
|
||||
},
|
||||
select: prismaSelect.value,
|
||||
});
|
||||
}
|
||||
|
||||
@Mutation(() => WorkspaceMember)
|
||||
@UseGuards(AbilityGuard)
|
||||
@CheckAbilities(DeleteWorkspaceMemberAbilityHandler)
|
||||
|
||||
Reference in New Issue
Block a user