Merge pull request #784 from medtaher123/fix/delete-invitation-on-role-delete

feat: delete invitation on role delete
This commit is contained in:
Med Marrouchi 2025-03-03 20:21:51 +01:00 committed by GitHub
commit 4399cc0957
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 103 additions and 5 deletions

View File

@ -25,9 +25,11 @@ import { LanguageService } from '@/i18n/services/language.service';
import { LoggerService } from '@/logger/logger.service';
import { PluginService } from '@/plugins/plugins.service';
import { SettingService } from '@/setting/services/setting.service';
import { InvitationRepository } from '@/user/repositories/invitation.repository';
import { PermissionRepository } from '@/user/repositories/permission.repository';
import { RoleRepository } from '@/user/repositories/role.repository';
import { UserRepository } from '@/user/repositories/user.repository';
import { InvitationModel } from '@/user/schemas/invitation.schema';
import { PermissionModel } from '@/user/schemas/permission.schema';
import { RoleModel } from '@/user/schemas/role.schema';
import { UserModel } from '@/user/schemas/user.schema';
@ -86,6 +88,7 @@ describe('BlockController', () => {
LabelModel,
CategoryModel,
ContentModel,
InvitationModel,
AttachmentModel,
UserModel,
RoleModel,
@ -102,6 +105,7 @@ describe('BlockController', () => {
UserRepository,
RoleRepository,
PermissionRepository,
InvitationRepository,
LanguageRepository,
BlockService,
LabelService,

View File

@ -15,8 +15,10 @@ import { AttachmentRepository } from '@/attachment/repositories/attachment.repos
import { AttachmentModel } from '@/attachment/schemas/attachment.schema';
import { AttachmentService } from '@/attachment/services/attachment.service';
import { LoggerService } from '@/logger/logger.service';
import { InvitationRepository } from '@/user/repositories/invitation.repository';
import { RoleRepository } from '@/user/repositories/role.repository';
import { UserRepository } from '@/user/repositories/user.repository';
import { InvitationModel } from '@/user/schemas/invitation.schema';
import { PermissionModel } from '@/user/schemas/permission.schema';
import { RoleModel } from '@/user/schemas/role.schema';
import { UserModel } from '@/user/schemas/user.schema';
@ -63,6 +65,7 @@ describe('LabelController', () => {
RoleModel,
PermissionModel,
SubscriberModel,
InvitationModel,
AttachmentModel,
]),
],
@ -75,6 +78,7 @@ describe('LabelController', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
SubscriberService,
SubscriberRepository,
EventEmitter2,

View File

@ -22,8 +22,10 @@ import { I18nService } from '@/i18n/services/i18n.service';
import { LoggerService } from '@/logger/logger.service';
import { NlpService } from '@/nlp/services/nlp.service';
import { SettingService } from '@/setting/services/setting.service';
import { InvitationRepository } from '@/user/repositories/invitation.repository';
import { RoleRepository } from '@/user/repositories/role.repository';
import { UserRepository } from '@/user/repositories/user.repository';
import { InvitationModel } from '@/user/schemas/invitation.schema';
import { PermissionModel } from '@/user/schemas/permission.schema';
import { RoleModel } from '@/user/schemas/role.schema';
import { User, UserModel } from '@/user/schemas/user.schema';
@ -71,6 +73,7 @@ describe('MessageController', () => {
MessageModel,
UserModel,
RoleModel,
InvitationModel,
PermissionModel,
AttachmentModel,
MenuModel,
@ -85,6 +88,7 @@ describe('MessageController', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
SubscriberRepository,
ChannelService,
AttachmentService,

View File

@ -14,8 +14,10 @@ import { AttachmentRepository } from '@/attachment/repositories/attachment.repos
import { AttachmentModel } from '@/attachment/schemas/attachment.schema';
import { AttachmentService } from '@/attachment/services/attachment.service';
import { LoggerService } from '@/logger/logger.service';
import { InvitationRepository } from '@/user/repositories/invitation.repository';
import { RoleRepository } from '@/user/repositories/role.repository';
import { UserRepository } from '@/user/repositories/user.repository';
import { InvitationModel } from '@/user/schemas/invitation.schema';
import { PermissionModel } from '@/user/schemas/permission.schema';
import { RoleModel } from '@/user/schemas/role.schema';
import { User, UserModel } from '@/user/schemas/user.schema';
@ -63,6 +65,7 @@ describe('SubscriberController', () => {
LabelModel,
UserModel,
RoleModel,
InvitationModel,
PermissionModel,
AttachmentModel,
]),
@ -79,6 +82,7 @@ describe('SubscriberController', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
EventEmitter2,
AttachmentService,
AttachmentRepository,

View File

@ -14,8 +14,10 @@ import { AttachmentRepository } from '@/attachment/repositories/attachment.repos
import { AttachmentModel } from '@/attachment/schemas/attachment.schema';
import { AttachmentService } from '@/attachment/services/attachment.service';
import { LoggerService } from '@/logger/logger.service';
import { InvitationRepository } from '@/user/repositories/invitation.repository';
import { RoleRepository } from '@/user/repositories/role.repository';
import { UserRepository } from '@/user/repositories/user.repository';
import { InvitationModel } from '@/user/schemas/invitation.schema';
import { PermissionModel } from '@/user/schemas/permission.schema';
import { RoleModel } from '@/user/schemas/role.schema';
import { User, UserModel } from '@/user/schemas/user.schema';
@ -62,6 +64,7 @@ describe('MessageService', () => {
UserModel,
RoleModel,
PermissionModel,
InvitationModel,
SubscriberModel,
MessageModel,
AttachmentModel,
@ -75,6 +78,7 @@ describe('MessageService', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
SubscriberService,
SubscriberRepository,
MessageService,

View File

@ -14,8 +14,10 @@ import { AttachmentRepository } from '@/attachment/repositories/attachment.repos
import { AttachmentModel } from '@/attachment/schemas/attachment.schema';
import { AttachmentService } from '@/attachment/services/attachment.service';
import { LoggerService } from '@/logger/logger.service';
import { InvitationRepository } from '@/user/repositories/invitation.repository';
import { RoleRepository } from '@/user/repositories/role.repository';
import { UserRepository } from '@/user/repositories/user.repository';
import { InvitationModel } from '@/user/schemas/invitation.schema';
import { PermissionModel } from '@/user/schemas/permission.schema';
import { RoleModel } from '@/user/schemas/role.schema';
import { User, UserModel } from '@/user/schemas/user.schema';
@ -55,6 +57,7 @@ describe('SubscriberService', () => {
LabelModel,
UserModel,
RoleModel,
InvitationModel,
PermissionModel,
AttachmentModel,
]),
@ -68,6 +71,7 @@ describe('SubscriberService', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
LoggerService,
EventEmitter2,
AttachmentService,

View File

@ -24,10 +24,12 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { ModelRepository } from '../repositories/model.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { ModelFull, ModelModel } from '../schemas/model.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { RoleModel } from '../schemas/role.schema';
@ -53,6 +55,7 @@ describe('ModelController', () => {
UserModel,
RoleModel,
PermissionModel,
InvitationModel,
ModelModel,
AttachmentModel,
]),
@ -68,6 +71,7 @@ describe('ModelController', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
{

View File

@ -20,9 +20,11 @@ import {
} from '@/utils/test/test';
import { PermissionCreateDto } from '../dto/permission.dto';
import { InvitationRepository } from '../repositories/invitation.repository';
import { ModelRepository } from '../repositories/model.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { Model, ModelModel } from '../schemas/model.schema';
import {
Permission,
@ -53,7 +55,12 @@ describe('PermissionController', () => {
controllers: [PermissionController],
imports: [
rootMongooseTestModule(installPermissionFixtures),
MongooseModule.forFeature([PermissionModel, ModelModel, RoleModel]),
MongooseModule.forFeature([
PermissionModel,
ModelModel,
RoleModel,
InvitationModel,
]),
],
providers: [
LoggerService,
@ -62,6 +69,7 @@ describe('PermissionController', () => {
PermissionService,
PermissionRepository,
RoleRepository,
InvitationRepository,
ModelRepository,
EventEmitter2,
{

View File

@ -26,9 +26,11 @@ import {
} from '@/utils/test/test';
import { RoleCreateDto, RoleUpdateDto } from '../dto/role.dto';
import { InvitationRepository } from '../repositories/invitation.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { Role, RoleFull, RoleModel } from '../schemas/role.schema';
import { UserModel } from '../schemas/user.schema';
@ -55,6 +57,7 @@ describe('RoleController', () => {
RoleModel,
PermissionModel,
UserModel,
InvitationModel,
AttachmentModel,
]),
],
@ -65,6 +68,7 @@ describe('RoleController', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
AttachmentService,

View File

@ -23,6 +23,7 @@ import {
import { ModelRepository } from '../repositories/model.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { ModelModel, Model as ModelSchema } from '../schemas/model.schema';
import {
Permission,
@ -32,6 +33,8 @@ import {
import { Role, RoleModel } from '../schemas/role.schema';
import { Action } from '../types/action.type';
import { InvitationRepository } from './invitation.repository';
describe('PermissionRepository', () => {
let modelRepository: ModelRepository;
let roleRepository: RoleRepository;
@ -44,12 +47,18 @@ describe('PermissionRepository', () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
rootMongooseTestModule(installPermissionFixtures),
MongooseModule.forFeature([ModelModel, PermissionModel, RoleModel]),
MongooseModule.forFeature([
ModelModel,
PermissionModel,
RoleModel,
InvitationModel,
]),
],
providers: [
ModelRepository,
RoleRepository,
PermissionRepository,
InvitationRepository,
EventEmitter2,
],
}).compile();

View File

@ -21,11 +21,13 @@ import {
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { Role, RoleFull, RoleModel } from '../schemas/role.schema';
import { User, UserModel } from '../schemas/user.schema';
import { roleFixtures } from './../../utils/test/fixtures/role';
import { InvitationRepository } from './invitation.repository';
describe('RoleRepository', () => {
let roleRepository: RoleRepository;
@ -40,11 +42,17 @@ describe('RoleRepository', () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
rootMongooseTestModule(installPermissionFixtures),
MongooseModule.forFeature([UserModel, PermissionModel, RoleModel]),
MongooseModule.forFeature([
UserModel,
PermissionModel,
RoleModel,
InvitationModel,
]),
],
providers: [
UserRepository,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
],

View File

@ -14,6 +14,7 @@ import { Model } from 'mongoose';
import { BaseRepository, DeleteResult } from '@/utils/generics/base-repository';
import { RoleDto } from '../dto/role.dto';
import { Invitation } from '../schemas/invitation.schema';
import { Permission } from '../schemas/permission.schema';
import {
Role,
@ -34,6 +35,8 @@ export class RoleRepository extends BaseRepository<
@InjectModel(Role.name) readonly model: Model<Role>,
@InjectModel(Permission.name)
private readonly permissionModel: Model<Permission>,
@InjectModel(Invitation.name)
private readonly invitationModel: Model<Invitation>,
) {
super(eventEmitter, model, Role, ROLE_POPULATE, RoleFull);
}
@ -49,6 +52,7 @@ export class RoleRepository extends BaseRepository<
const result = await this.model.deleteOne({ _id: id }).exec();
if (result.deletedCount > 0) {
await this.permissionModel.deleteMany({ role: id });
await this.invitationModel.deleteMany({ roles: id });
}
return result;
}

View File

@ -26,10 +26,13 @@ import {
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { Role, RoleModel } from '../schemas/role.schema';
import { User, UserFull, UserModel } from '../schemas/user.schema';
import { InvitationRepository } from './invitation.repository';
describe('UserRepository', () => {
let roleRepository: RoleRepository;
let userRepository: UserRepository;
@ -57,6 +60,7 @@ describe('UserRepository', () => {
UserModel,
PermissionModel,
RoleModel,
InvitationModel,
AttachmentModel,
]),
],
@ -64,6 +68,7 @@ describe('UserRepository', () => {
LoggerService,
UserRepository,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
{

View File

@ -21,8 +21,10 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { RoleModel } from '../schemas/role.schema';
import { UserModel } from '../schemas/user.schema';
@ -43,6 +45,7 @@ describe('AuthService', () => {
UserModel,
RoleModel,
PermissionModel,
InvitationModel,
AttachmentModel,
]),
],
@ -53,6 +56,7 @@ describe('AuthService', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
JwtService,
EventEmitter2,
AttachmentService,

View File

@ -32,8 +32,10 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { RoleModel } from '../schemas/role.schema';
import { User, UserModel } from '../schemas/user.schema';
@ -60,6 +62,7 @@ describe('PasswordResetService', () => {
PermissionModel,
AttachmentModel,
LanguageModel,
InvitationModel,
]),
JwtModule,
],
@ -70,6 +73,7 @@ describe('PasswordResetService', () => {
AttachmentService,
AttachmentRepository,
RoleRepository,
InvitationRepository,
LanguageService,
LanguageRepository,
LoggerService,

View File

@ -21,9 +21,11 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { ModelRepository } from '../repositories/model.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { ModelModel, Model as ModelSchema } from '../schemas/model.schema';
import {
Permission,
@ -46,12 +48,18 @@ describe('PermissionService', () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
rootMongooseTestModule(installPermissionFixtures),
MongooseModule.forFeature([ModelModel, PermissionModel, RoleModel]),
MongooseModule.forFeature([
ModelModel,
PermissionModel,
RoleModel,
InvitationModel,
]),
],
providers: [
ModelRepository,
PermissionService,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
{

View File

@ -17,9 +17,11 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { Permission, PermissionModel } from '../schemas/permission.schema';
import { Role, RoleFull, RoleModel } from '../schemas/role.schema';
import { User, UserModel } from '../schemas/user.schema';
@ -40,12 +42,18 @@ describe('RoleService', () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
rootMongooseTestModule(installPermissionFixtures),
MongooseModule.forFeature([UserModel, PermissionModel, RoleModel]),
MongooseModule.forFeature([
UserModel,
PermissionModel,
RoleModel,
InvitationModel,
]),
],
providers: [
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
],

View File

@ -24,9 +24,11 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { PermissionRepository } from '../repositories/permission.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { Role, RoleModel } from '../schemas/role.schema';
import { User, UserFull, UserModel } from '../schemas/user.schema';
@ -61,6 +63,7 @@ describe('UserService', () => {
UserModel,
PermissionModel,
RoleModel,
InvitationModel,
AttachmentModel,
]),
],
@ -73,6 +76,7 @@ describe('UserService', () => {
PermissionService,
RoleService,
RoleRepository,
InvitationRepository,
PermissionRepository,
EventEmitter2,
{

View File

@ -29,8 +29,10 @@ import {
rootMongooseTestModule,
} from '@/utils/test/test';
import { InvitationRepository } from '../repositories/invitation.repository';
import { RoleRepository } from '../repositories/role.repository';
import { UserRepository } from '../repositories/user.repository';
import { InvitationModel } from '../schemas/invitation.schema';
import { PermissionModel } from '../schemas/permission.schema';
import { RoleModel } from '../schemas/role.schema';
import { UserModel } from '../schemas/user.schema';
@ -53,6 +55,7 @@ describe('ValidateAccountService', () => {
UserModel,
RoleModel,
PermissionModel,
InvitationModel,
AttachmentModel,
LanguageModel,
]),
@ -65,6 +68,7 @@ describe('ValidateAccountService', () => {
UserRepository,
RoleService,
RoleRepository,
InvitationRepository,
LanguageService,
LanguageRepository,
LoggerService,