fix npm run build

This commit is contained in:
Rayyan
2026-08-02 20:01:29 +07:00
parent 306c145f91
commit eb6031282a
236 changed files with 5557 additions and 47 deletions
@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnvAuthConfig = void 0;
class EnvAuthConfig {
autoCreateUser() {
return (process.env.AUTH_AUTO_CREATE_USER ?? 'true') === 'true';
}
syncEmail() {
return (process.env.AUTH_SYNC_EMAIL ?? 'true') === 'true';
}
syncUsername() {
return (process.env.AUTH_SYNC_USERNAME ?? 'false') === 'true';
}
}
exports.EnvAuthConfig = EnvAuthConfig;
//# sourceMappingURL=env-auth-config.js.map
@@ -0,0 +1 @@
{"version":3,"file":"env-auth-config.js","sourceRoot":"","sources":["../../../../../src/modules/identity/application/config/env-auth-config.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IACxB,cAAc;QACZ,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC;IAClE,CAAC;IAED,SAAS;QACP,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC;IAC5D,CAAC;IAED,YAAY;QACV,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,KAAK,MAAM,CAAC;IAChE,CAAC;CACF;AAZD,sCAYC"}
@@ -0,0 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IAuthConfig = void 0;
class IAuthConfig {
}
exports.IAuthConfig = IAuthConfig;
//# sourceMappingURL=i-auth-config.js.map
@@ -0,0 +1 @@
{"version":3,"file":"i-auth-config.js","sourceRoot":"","sources":["../../../../../src/modules/identity/application/config/i-auth-config.ts"],"names":[],"mappings":";;;AAAA,MAAsB,WAAW;CAIhC;AAJD,kCAIC"}
@@ -0,0 +1,47 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreatePermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const permission_interface_1 = require("../../../domain/repositories/permission.interface");
const permission_entity_1 = require("../../../domain/entities/permission.entity");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
const crypto = require('crypto');
let CreatePermissionHandler = class CreatePermissionHandler {
permissionRepository;
events;
constructor(permissionRepository, events) {
this.permissionRepository = permissionRepository;
this.events = events;
}
async execute(dto) {
if (!dto.name || !dto.code)
throw new common_1.ConflictException('Missing required fields');
const perm = permission_entity_1.PermissionData.restore({
id: crypto.randomUUID(),
code: dto.code || dto.name,
name: dto.name,
displayName: dto.displayName || dto.name,
description: dto.description || '',
createdAt: new Date(),
updatedAt: new Date(),
});
const created = await this.permissionRepository.create(perm);
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'PermissionCreated', payload: { permissionId: created.id } });
return created;
}
};
exports.CreatePermissionHandler = CreatePermissionHandler;
exports.CreatePermissionHandler = CreatePermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [permission_interface_1.IPermission, event_bus_service_1.EventBus])
], CreatePermissionHandler);
//# sourceMappingURL=create-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"create-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/permission/create-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,4FAAgF;AAChF,kFAA4E;AAC5E,uFAA2E;AAE3E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAG1B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAAoD;IAAjF,YAA6B,oBAAiC,EAAmB,MAAgB;QAApE,yBAAoB,GAApB,oBAAoB,CAAa;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAErG,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,yBAAyB,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,kCAAc,CAAC,OAAO,CAAC;YAClC,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI;YACxC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;YAClC,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACf,CAAC,CAAC;QAEV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACnK,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AApBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAEwC,kCAAW,EAA2B,4BAAQ;GADtF,uBAAuB,CAoBnC"}
@@ -0,0 +1,54 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeletePermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const permission_interface_1 = require("../../../domain/repositories/permission.interface");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const authorization_service_1 = require("../../../../authorization/authorization.service");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
let DeletePermissionHandler = class DeletePermissionHandler {
permissionRepository;
roleRepository;
authorizationService;
events;
constructor(permissionRepository, roleRepository, authorizationService, events) {
this.permissionRepository = permissionRepository;
this.roleRepository = roleRepository;
this.authorizationService = authorizationService;
this.events = events;
}
async execute(id) {
const p = await this.permissionRepository.getById(id);
if (!p)
throw new common_1.NotFoundException('Permission not found.');
// find roles that reference this permission
const rolesWithPerm = await this.permissionRepository.findRoleIdsByPermission(id);
// delete permission
await this.permissionRepository.delete(id);
// invalidate caches for users who have affected roles
const userSet = new Set();
for (const rid of rolesWithPerm) {
const uids = await this.roleRepository.getAssignedUserIds(rid);
uids.forEach(u => userSet.add(u));
}
for (const uid of Array.from(userSet))
await this.authorizationService.invalidateUserPermissions(uid);
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'PermissionDeleted', payload: { permissionId: id, affectedRoles: rolesWithPerm } });
return;
}
};
exports.DeletePermissionHandler = DeletePermissionHandler;
exports.DeletePermissionHandler = DeletePermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [permission_interface_1.IPermission, role_interface_1.IRole, authorization_service_1.AuthorizationService, event_bus_service_1.EventBus])
], DeletePermissionHandler);
//# sourceMappingURL=delete-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"delete-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/permission/delete-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,4FAAgF;AAChF,gFAAoE;AACpE,2FAAuF;AACvF,uFAA2E;AAGpE,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAAoD;IAAwC;IAA6D;IAAtL,YAA6B,oBAAiC,EAAmB,cAAqB,EAAmB,oBAA0C,EAAmB,MAAgB;QAAzK,yBAAoB,GAApB,oBAAoB,CAAa;QAAmB,mBAAc,GAAd,cAAc,CAAO;QAAmB,yBAAoB,GAApB,oBAAoB,CAAsB;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAE1M,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,CAAC,CAAC;QAE7D,4CAA4C;QAC5C,MAAM,aAAa,GAAG,MAAO,IAAI,CAAC,oBAA4B,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAE3F,oBAAoB;QACpB,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE3C,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAEtG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QAEzL,OAAO;IACT,CAAC;CACF,CAAA;AA1BY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAEwC,kCAAW,EAAmC,sBAAK,EAAyC,4CAAoB,EAA2B,4BAAQ;GAD3L,uBAAuB,CA0BnC"}
@@ -0,0 +1,29 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetPermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const permission_interface_1 = require("../../../domain/repositories/permission.interface");
let GetPermissionHandler = class GetPermissionHandler {
permissionRepository;
constructor(permissionRepository) {
this.permissionRepository = permissionRepository;
}
async execute(id) {
return this.permissionRepository.getById(id);
}
};
exports.GetPermissionHandler = GetPermissionHandler;
exports.GetPermissionHandler = GetPermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [permission_interface_1.IPermission])
], GetPermissionHandler);
//# sourceMappingURL=get-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/permission/get-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,4FAAgF;AAGzE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACF;IAA7B,YAA6B,oBAAiC;QAAjC,yBAAoB,GAApB,oBAAoB,CAAa;IAAG,CAAC;IAElE,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AANY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAEwC,kCAAW;GADnD,oBAAoB,CAMhC"}
@@ -0,0 +1,29 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetPermissionsHandler = void 0;
const common_1 = require("@nestjs/common");
const permission_interface_1 = require("../../../domain/repositories/permission.interface");
let GetPermissionsHandler = class GetPermissionsHandler {
permissionRepository;
constructor(permissionRepository) {
this.permissionRepository = permissionRepository;
}
async execute(query) {
return this.permissionRepository.find({ page: query.page, limit: query.limit, search: query.search || null });
}
};
exports.GetPermissionsHandler = GetPermissionsHandler;
exports.GetPermissionsHandler = GetPermissionsHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [permission_interface_1.IPermission])
], GetPermissionsHandler);
//# sourceMappingURL=get-permissions.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-permissions.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/permission/get-permissions.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,4FAAgF;AAGzE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACH;IAA7B,YAA6B,oBAAiC;QAAjC,yBAAoB,GAApB,oBAAoB,CAAa;IAAG,CAAC;IAElE,KAAK,CAAC,OAAO,CAAC,KAAyD;QACrE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;CACF,CAAA;AANY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAEwC,kCAAW;GADnD,qBAAqB,CAMjC"}
@@ -0,0 +1,58 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdatePermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const permission_interface_1 = require("../../../domain/repositories/permission.interface");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const authorization_service_1 = require("../../../../authorization/authorization.service");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
let UpdatePermissionHandler = class UpdatePermissionHandler {
permissionRepository;
roleRepository;
authorizationService;
events;
constructor(permissionRepository, roleRepository, authorizationService, events) {
this.permissionRepository = permissionRepository;
this.roleRepository = roleRepository;
this.authorizationService = authorizationService;
this.events = events;
}
async execute(id, dto) {
const perm = await this.permissionRepository.getById(id);
if (!perm)
throw new common_1.NotFoundException('Permission not found.');
if (dto.name)
perm.changeName(dto.name);
if (dto.description !== undefined)
perm.changeDescription(dto.description);
if (dto.code)
perm.changeCode(dto.code);
const updated = await this.permissionRepository.update(perm);
// invalidate caches for users who belong to roles that reference this permission
const roleIds = await this.permissionRepository.findRoleIdsByPermission(id);
const userSet = new Set();
for (const rid of roleIds) {
const uids = await this.roleRepository.getAssignedUserIds(rid);
uids.forEach(u => userSet.add(u));
}
for (const uid of Array.from(userSet))
await this.authorizationService.invalidateUserPermissions(uid);
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'PermissionUpdated', payload: { permissionId: id } });
return updated;
}
};
exports.UpdatePermissionHandler = UpdatePermissionHandler;
exports.UpdatePermissionHandler = UpdatePermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [permission_interface_1.IPermission, role_interface_1.IRole, authorization_service_1.AuthorizationService, event_bus_service_1.EventBus])
], UpdatePermissionHandler);
//# sourceMappingURL=update-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"update-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/permission/update-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,4FAAgF;AAChF,gFAAoE;AACpE,2FAAuF;AACvF,uFAA2E;AAGpE,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAAoD;IAAwC;IAA6D;IAAtL,YAA6B,oBAAiC,EAAmB,cAAqB,EAAmB,oBAA0C,EAAmB,MAAgB;QAAzK,yBAAoB,GAApB,oBAAoB,CAAa;QAAmB,mBAAc,GAAd,cAAc,CAAO;QAAmB,yBAAoB,GAApB,oBAAoB,CAAsB;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAE1M,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,GAAQ;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,CAAC,CAAC;QAEhE,IAAI,GAAG,CAAC,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7D,iFAAiF;QACjF,MAAM,OAAO,GAAG,MAAO,IAAI,CAAC,oBAA4B,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAEtG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE3J,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AA5BY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAEwC,kCAAW,EAAmC,sBAAK,EAAyC,4CAAoB,EAA2B,4BAAQ;GAD3L,uBAAuB,CA4BnC"}
@@ -0,0 +1,56 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoleAssignPermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const permission_interface_1 = require("../../../domain/repositories/permission.interface");
const authorization_service_1 = require("../../../../authorization/authorization.service");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
let RoleAssignPermissionHandler = class RoleAssignPermissionHandler {
roleRepository;
permissionRepository;
authorizationService;
events;
constructor(roleRepository, permissionRepository, authorizationService, events) {
this.roleRepository = roleRepository;
this.permissionRepository = permissionRepository;
this.authorizationService = authorizationService;
this.events = events;
}
async execute(roleId, permissionId) {
const role = await this.roleRepository.findById(roleId);
if (!role)
throw new common_1.NotFoundException('Role not found.');
const perm = await this.permissionRepository.getById(permissionId);
if (!perm)
throw new common_1.NotFoundException('Permission not found.');
role.assignPermission(perm);
const updated = await this.roleRepository.update(role);
// Invalidate permissions cache for users who have this role
const userIds = await this.roleRepository.getAssignedUserIds(roleId);
for (const uid of userIds) {
await this.authorizationService.invalidateUserPermissions(uid);
}
// Publish role.updated event
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'RoleUpdated', payload: { roleId, permissionId } });
return updated;
}
};
exports.RoleAssignPermissionHandler = RoleAssignPermissionHandler;
exports.RoleAssignPermissionHandler = RoleAssignPermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole,
permission_interface_1.IPermission,
authorization_service_1.AuthorizationService,
event_bus_service_1.EventBus])
], RoleAssignPermissionHandler);
//# sourceMappingURL=assign-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"assign-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/assign-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAuE;AACvE,gFAAoE;AACpE,4FAAgF;AAChF,2FAAuF;AACvF,uFAA2E;AAGpE,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAEnB;IACA;IACA;IACA;IAJnB,YACmB,cAAqB,EACrB,oBAAiC,EACjC,oBAA0C,EAC1C,MAAgB;QAHhB,mBAAc,GAAd,cAAc,CAAO;QACrB,yBAAoB,GAApB,oBAAoB,CAAa;QACjC,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,WAAM,GAAN,MAAM,CAAU;IAChC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,YAAoB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,CAAC,CAAC;QAEhE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QAEzJ,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AA9BY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;qCAGwB,sBAAK;QACC,kCAAW;QACX,4CAAoB;QAClC,4BAAQ;GALxB,2BAA2B,CA8BvC"}
@@ -0,0 +1,54 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateRoleHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const role_entity_1 = require("../../../domain/entities/role.entity");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
const crypto = require('crypto');
let CreateRoleHandler = class CreateRoleHandler {
roleRepository;
events;
constructor(roleRepository, events) {
this.roleRepository = roleRepository;
this.events = events;
}
async execute(dto) {
// basic validation
if (!dto.code || !dto.name)
throw new common_1.ConflictException('Missing required fields');
try {
const role = role_entity_1.RoleData.restore({
id: crypto.randomUUID(),
code: dto.code,
name: dto.name,
description: dto.description || '',
permissions: [],
isDefault: dto.isDefault || false,
createdAt: new Date(),
updatedAt: new Date(),
});
const created = await this.roleRepository.create(role);
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'RoleCreated', payload: { roleId: created.id } });
return created;
}
catch (e) {
throw new common_1.ConflictException('Role creation failed.');
}
}
};
exports.CreateRoleHandler = CreateRoleHandler;
exports.CreateRoleHandler = CreateRoleHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole, event_bus_service_1.EventBus])
], CreateRoleHandler);
//# sourceMappingURL=create-role.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"create-role.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/create-role.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AACpE,sEAAgE;AAChE,uFAA2E;AAE3E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAG1B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAAwC;IAArE,YAA6B,cAAqB,EAAmB,MAAgB;QAAxD,mBAAc,GAAd,cAAc,CAAO;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAEzF,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,yBAAyB,CAAC,CAAC;QAEnF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,sBAAQ,CAAC,OAAO,CAAC;gBAC5B,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;gBACvB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;gBAClC,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,KAAK;gBACjC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACf,CAAC,CAAC;YAEV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAEvJ,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF,CAAA;AA5BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK,EAA2B,4BAAQ;GAD1E,iBAAiB,CA4B7B"}
@@ -0,0 +1,45 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeleteRoleHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const authorization_service_1 = require("../../../../authorization/authorization.service");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
let DeleteRoleHandler = class DeleteRoleHandler {
roleRepository;
authorizationService;
events;
constructor(roleRepository, authorizationService, events) {
this.roleRepository = roleRepository;
this.authorizationService = authorizationService;
this.events = events;
}
async execute(id) {
const role = await this.roleRepository.findById(id);
if (!role)
throw new common_1.NotFoundException('Role not found.');
// get affected users before delete
const userIds = await this.roleRepository.getAssignedUserIds(id);
await this.roleRepository.delete(id);
// invalidate caches
for (const uid of userIds)
await this.authorizationService.invalidateUserPermissions(uid);
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'RoleDeleted', payload: { roleId: id } });
return;
}
};
exports.DeleteRoleHandler = DeleteRoleHandler;
exports.DeleteRoleHandler = DeleteRoleHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole, authorization_service_1.AuthorizationService, event_bus_service_1.EventBus])
], DeleteRoleHandler);
//# sourceMappingURL=delete-role.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"delete-role.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/delete-role.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AACpE,2FAAuF;AACvF,uFAA2E;AAGpE,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAAwC;IAA6D;IAAlI,YAA6B,cAAqB,EAAmB,oBAA0C,EAAmB,MAAgB;QAArH,mBAAc,GAAd,cAAc,CAAO;QAAmB,yBAAoB,GAApB,oBAAoB,CAAsB;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAEtJ,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,mCAAmC;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAEjE,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAErC,oBAAoB;QACpB,KAAK,MAAM,GAAG,IAAI,OAAO;YAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAE1F,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/I,OAAO;IACT,CAAC;CACF,CAAA;AAnBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK,EAAyC,4CAAoB,EAA2B,4BAAQ;GADvI,iBAAiB,CAmB7B"}
@@ -0,0 +1,29 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetRoleHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
let GetRoleHandler = class GetRoleHandler {
roleRepository;
constructor(roleRepository) {
this.roleRepository = roleRepository;
}
async execute(id) {
return this.roleRepository.findById(id);
}
};
exports.GetRoleHandler = GetRoleHandler;
exports.GetRoleHandler = GetRoleHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole])
], GetRoleHandler);
//# sourceMappingURL=get-role.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-role.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/get-role.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gFAAoE;AAG7D,IAAM,cAAc,GAApB,MAAM,cAAc;IACI;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AANY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,cAAc,CAM1B"}
@@ -0,0 +1,29 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetRolesHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
let GetRolesHandler = class GetRolesHandler {
roleRepository;
constructor(roleRepository) {
this.roleRepository = roleRepository;
}
async execute(query) {
return this.roleRepository.find({ page: query.page, limit: query.limit, search: query.search || null });
}
};
exports.GetRolesHandler = GetRolesHandler;
exports.GetRolesHandler = GetRolesHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole])
], GetRolesHandler);
//# sourceMappingURL=get-roles.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-roles.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/get-roles.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gFAAoE;AAG7D,IAAM,eAAe,GAArB,MAAM,eAAe;IACG;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,KAAyD;QACrE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1G,CAAC;CACF,CAAA;AANY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,eAAe,CAM3B"}
@@ -0,0 +1,46 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoleRemovePermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const authorization_service_1 = require("../../../../authorization/authorization.service");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
let RoleRemovePermissionHandler = class RoleRemovePermissionHandler {
roleRepository;
authorizationService;
events;
constructor(roleRepository, authorizationService, events) {
this.roleRepository = roleRepository;
this.authorizationService = authorizationService;
this.events = events;
}
async execute(roleId, permissionId) {
const role = await this.roleRepository.findById(roleId);
if (!role)
throw new common_1.NotFoundException('Role not found.');
role.removePermission(permissionId);
const updated = await this.roleRepository.update(role);
// Invalidate caches for users with the role
const userIds = await this.roleRepository.getAssignedUserIds(roleId);
for (const uid of userIds)
await this.authorizationService.invalidateUserPermissions(uid);
// Publish event
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'RoleUpdated', payload: { roleId, removedPermissionId: permissionId } });
return updated;
}
};
exports.RoleRemovePermissionHandler = RoleRemovePermissionHandler;
exports.RoleRemovePermissionHandler = RoleRemovePermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole, authorization_service_1.AuthorizationService, event_bus_service_1.EventBus])
], RoleRemovePermissionHandler);
//# sourceMappingURL=remove-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"remove-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/remove-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AACpE,2FAAuF;AACvF,uFAA2E;AAGpE,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACT;IAAwC;IAA6D;IAAlI,YAA6B,cAAqB,EAAmB,oBAA0C,EAAmB,MAAgB;QAArH,mBAAc,GAAd,cAAc,CAAO;QAAmB,yBAAoB,GAApB,oBAAoB,CAAsB;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAEtJ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,YAAoB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvD,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,OAAO;YAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAE1F,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QAE9K,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AApBY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;qCAEkC,sBAAK,EAAyC,4CAAoB,EAA2B,4BAAQ;GADvI,2BAA2B,CAoBvC"}
@@ -0,0 +1,53 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateRoleHandler = void 0;
const common_1 = require("@nestjs/common");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const authorization_service_1 = require("../../../../authorization/authorization.service");
const event_bus_service_1 = require("../../../../../core/event-bus/event-bus.service");
let UpdateRoleHandler = class UpdateRoleHandler {
roleRepository;
authorizationService;
events;
constructor(roleRepository, authorizationService, events) {
this.roleRepository = roleRepository;
this.authorizationService = authorizationService;
this.events = events;
}
async execute(id, dto) {
const role = await this.roleRepository.findById(id);
if (!role)
throw new common_1.NotFoundException('Role not found.');
// validation
if (dto.name && dto.name.length < 2)
throw new common_1.BadRequestException('Name too short');
if (dto.name)
role.changeName(dto.name);
if (dto.description !== undefined)
role.changeDescription(dto.description);
if (dto.isDefault !== undefined)
role.setDefault(!!dto.isDefault);
const updated = await this.roleRepository.update(role);
// invalidate caches for users with this role
const userIds = await this.roleRepository.getAssignedUserIds(id);
for (const uid of userIds)
await this.authorizationService.invalidateUserPermissions(uid);
this.events.publish({ id: require('crypto').randomUUID(), timestamp: new Date().toISOString(), type: 'RoleUpdated', payload: { roleId: id } });
return updated;
}
};
exports.UpdateRoleHandler = UpdateRoleHandler;
exports.UpdateRoleHandler = UpdateRoleHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [role_interface_1.IRole, authorization_service_1.AuthorizationService, event_bus_service_1.EventBus])
], UpdateRoleHandler);
//# sourceMappingURL=update-role.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"update-role.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/role/update-role.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoF;AACpF,gFAAoE;AACpE,2FAAuF;AACvF,uFAA2E;AAGpE,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAAwC;IAA6D;IAAlI,YAA6B,cAAqB,EAAmB,oBAA0C,EAAmB,MAAgB;QAArH,mBAAc,GAAd,cAAc,CAAO;QAAmB,yBAAoB,GAApB,oBAAoB,CAAsB;QAAmB,WAAM,GAAN,MAAM,CAAU;IAAG,CAAC;IAEtJ,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,GAAQ;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,aAAa;QACb,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,4BAAmB,CAAC,gBAAgB,CAAC,CAAC;QAErF,IAAI,GAAG,CAAC,IAAI;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvD,6CAA6C;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACjE,KAAK,MAAM,GAAG,IAAI,OAAO;YAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAE1F,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/I,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AAxBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK,EAAyC,4CAAoB,EAA2B,4BAAQ;GADvI,iBAAiB,CAwB7B"}
@@ -0,0 +1,42 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssignPermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
const permission_entity_1 = require("../../../domain/entities/permission.entity");
let AssignPermissionHandler = class AssignPermissionHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(userId, permissionId) {
const user = await this.userRepository.getById(userId);
if (!user)
throw new common_1.NotFoundException('User not found.');
// Permission repository is not available; create a minimal PermissionData
const perm = permission_entity_1.PermissionData.restore({
id: permissionId,
name: permissionId,
description: '',
createdAt: new Date(),
updatedAt: new Date(),
});
user.assignPermission(perm);
return this.userRepository.update(user);
}
};
exports.AssignPermissionHandler = AssignPermissionHandler;
exports.AssignPermissionHandler = AssignPermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], AssignPermissionHandler);
//# sourceMappingURL=assign-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"assign-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/assign-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AACpE,kFAA4E;AAGrE,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,YAAoB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,0EAA0E;QAC1E,MAAM,IAAI,GAAG,kCAAc,CAAC,OAAO,CAAC;YAClC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AApBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,uBAAuB,CAoBnC"}
@@ -0,0 +1,40 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssignRoleHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
const role_interface_1 = require("../../../domain/repositories/role.interface");
let AssignRoleHandler = class AssignRoleHandler {
userRepository;
roleRepository;
constructor(userRepository, roleRepository) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
}
async execute(userId, roleId) {
const user = await this.userRepository.getById(userId);
if (!user)
throw new common_1.NotFoundException('User not found.');
const role = await this.roleRepository.findById(roleId);
if (!role)
throw new common_1.NotFoundException('Role not found.');
user.assignRole(role);
return this.userRepository.update(user);
}
};
exports.AssignRoleHandler = AssignRoleHandler;
exports.AssignRoleHandler = AssignRoleHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser,
role_interface_1.IRole])
], AssignRoleHandler);
//# sourceMappingURL=assign-role.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"assign-role.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/assign-role.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AACpE,gFAAoE;AAG7D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAET;IACA;IAFnB,YACmB,cAAqB,EACrB,cAAqB;QADrB,mBAAc,GAAd,cAAc,CAAO;QACrB,mBAAc,GAAd,cAAc,CAAO;IACrC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAAc;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAjBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAGwB,sBAAK;QACL,sBAAK;GAH7B,iBAAiB,CAiB7B"}
@@ -0,0 +1,39 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
const user_service_1 = require("../../services/user.service");
let CreateUserHandler = class CreateUserHandler {
userRepository;
userService;
constructor(userRepository, userService) {
this.userRepository = userRepository;
this.userService = userService;
}
async execute(dto) {
const exists = await this.userRepository.existByEmail(dto.email);
if (exists) {
throw new common_1.ConflictException('Email already exists.');
}
// Provisioning disabled: Do not create users in external IdP from RayLab.
// Reject attempts to create users via API to enforce creation-at-Authentik policy.
throw new common_1.BadRequestException('User creation via RayLab API is disabled. Create users in Authentik and then login to sync.');
}
};
exports.CreateUserHandler = CreateUserHandler;
exports.CreateUserHandler = CreateUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser,
user_service_1.UserService])
], CreateUserHandler);
//# sourceMappingURL=create-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"create-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/create-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAIwB;AAGxB,gFAAoE;AAEpE,8DAA0D;AAGnD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAET;IACA;IAFnB,YACmB,cAAqB,EACrB,WAAwB;QADxB,mBAAc,GAAd,cAAc,CAAO;QACrB,gBAAW,GAAX,WAAW,CAAa;IACxC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,GAAkB;QAE9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC;QAED,0EAA0E;QAC1E,mFAAmF;QACnF,MAAM,IAAI,4BAAmB,CAAC,6FAA6F,CAAC,CAAC;IAC/H,CAAC;CACF,CAAA;AAlBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAGwB,sBAAK;QACR,0BAAW;GAHhC,iBAAiB,CAkB7B"}
@@ -0,0 +1,32 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeleteUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let DeleteUserHandler = class DeleteUserHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(id) {
const exists = await this.userRepository.existsById(id);
if (!exists)
throw new common_1.NotFoundException('User not found.');
await this.userRepository.softDelete(id);
}
};
exports.DeleteUserHandler = DeleteUserHandler;
exports.DeleteUserHandler = DeleteUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], DeleteUserHandler);
//# sourceMappingURL=delete-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"delete-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/delete-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AAG7D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE5D,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AATY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,iBAAiB,CAS7B"}
@@ -0,0 +1,32 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DisableUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let DisableUserHandler = class DisableUserHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(id) {
const exists = await this.userRepository.existsById(id);
if (!exists)
throw new common_1.NotFoundException('User not found.');
return this.userRepository.disable(id);
}
};
exports.DisableUserHandler = DisableUserHandler;
exports.DisableUserHandler = DisableUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], DisableUserHandler);
//# sourceMappingURL=disable-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"disable-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/disable-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AAG7D,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACA;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AATY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,kBAAkB,CAS9B"}
@@ -0,0 +1,32 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnableUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let EnableUserHandler = class EnableUserHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(id) {
const exists = await this.userRepository.existsById(id);
if (!exists)
throw new common_1.NotFoundException('User not found.');
return this.userRepository.enable(id);
}
};
exports.EnableUserHandler = EnableUserHandler;
exports.EnableUserHandler = EnableUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], EnableUserHandler);
//# sourceMappingURL=enable-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"enable-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/enable-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AAG7D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AATY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,iBAAiB,CAS7B"}
@@ -0,0 +1,21 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetCurrentUserHandler = void 0;
const common_1 = require("@nestjs/common");
let GetCurrentUserHandler = class GetCurrentUserHandler {
async execute(currentUser) {
// currentUser is already domain user attached by CurrentUserGuard
return currentUser;
}
};
exports.GetCurrentUserHandler = GetCurrentUserHandler;
exports.GetCurrentUserHandler = GetCurrentUserHandler = __decorate([
(0, common_1.Injectable)()
], GetCurrentUserHandler);
//# sourceMappingURL=get-current-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-current-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/get-current-user.handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAIrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,KAAK,CAAC,OAAO,CAAC,WAAqB;QACjC,kEAAkE;QAClE,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAA;AALY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAKjC"}
@@ -0,0 +1,29 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let GetUserHandler = class GetUserHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(id) {
return this.userRepository.getById(id);
}
};
exports.GetUserHandler = GetUserHandler;
exports.GetUserHandler = GetUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], GetUserHandler);
//# sourceMappingURL=get-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/get-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gFAAoE;AAG7D,IAAM,cAAc,GAApB,MAAM,cAAc;IACI;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AANY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,cAAc,CAM1B"}
@@ -0,0 +1,37 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetUsersHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let GetUsersHandler = class GetUsersHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(query) {
const res = await this.userRepository.find({
page: query.page,
limit: query.limit,
search: query.search || null,
isActive: query.isActive !== undefined ? query.isActive : null,
deleted: query.deleted !== undefined ? query.deleted : null,
roleId: query.roleId || null,
});
return res;
}
};
exports.GetUsersHandler = GetUsersHandler;
exports.GetUsersHandler = GetUsersHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], GetUsersHandler);
//# sourceMappingURL=get-users.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"get-users.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/get-users.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gFAAoE;AAG7D,IAAM,eAAe,GAArB,MAAM,eAAe;IACG;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,KAOb;QACC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACzC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YAC9D,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC3D,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;SAC7B,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AAtBY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,eAAe,CAsB3B"}
@@ -0,0 +1,33 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RemovePermissionHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let RemovePermissionHandler = class RemovePermissionHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(userId, permissionId) {
const user = await this.userRepository.getById(userId);
if (!user)
throw new common_1.NotFoundException('User not found.');
user.removePermission(permissionId);
return this.userRepository.update(user);
}
};
exports.RemovePermissionHandler = RemovePermissionHandler;
exports.RemovePermissionHandler = RemovePermissionHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], RemovePermissionHandler);
//# sourceMappingURL=remove-permission.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"remove-permission.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/remove-permission.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AAG7D,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACL;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,YAAoB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAXY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,uBAAuB,CAWnC"}
@@ -0,0 +1,33 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RemoveRoleHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let RemoveRoleHandler = class RemoveRoleHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(userId, roleId) {
const user = await this.userRepository.getById(userId);
if (!user)
throw new common_1.NotFoundException('User not found.');
user.removeRole(roleId);
return this.userRepository.update(user);
}
};
exports.RemoveRoleHandler = RemoveRoleHandler;
exports.RemoveRoleHandler = RemoveRoleHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], RemoveRoleHandler);
//# sourceMappingURL=remove-role.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"remove-role.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/remove-role.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AAG7D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAAc;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAXY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,iBAAiB,CAW7B"}
@@ -0,0 +1,32 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RestoreUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let RestoreUserHandler = class RestoreUserHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(id) {
const exists = await this.userRepository.existsById(id);
if (!exists)
throw new common_1.NotFoundException('User not found.');
return this.userRepository.restore(id);
}
};
exports.RestoreUserHandler = RestoreUserHandler;
exports.RestoreUserHandler = RestoreUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], RestoreUserHandler);
//# sourceMappingURL=restore-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"restore-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/restore-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,gFAAoE;AAG7D,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACA;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AATY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,kBAAkB,CAS9B"}
@@ -0,0 +1,92 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SyncIdentityHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
const role_interface_1 = require("../../../domain/repositories/role.interface");
const i_auth_config_1 = require("../../config/i-auth-config");
const user_entity_1 = require("../../../domain/entities/user.entity");
let SyncIdentityHandler = class SyncIdentityHandler {
userRepository;
roleRepository;
authConfig;
constructor(userRepository, roleRepository, authConfig) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
this.authConfig = authConfig;
}
async execute(identity) {
const { sub, preferred_username, email } = identity;
if (!sub)
throw new common_1.UnauthorizedException('Invalid identity payload.');
// Try find by authentikId
let user = await this.userRepository.findByAuthentikId(sub);
const syncEmail = this.authConfig.syncEmail();
const syncUsername = this.authConfig.syncUsername();
if (!user) {
// User does not exist locally: create minimal local record per new architecture
const username = preferred_username || email || sub;
const userEntity = user_entity_1.UserData.create({ username, email: email || '', authentikId: sub });
// assign default role if available
try {
const defaultRole = await this.roleRepository.getDefaultRole();
if (defaultRole) {
userEntity.assignRole(defaultRole);
}
}
catch (e) {
// ignore if role repo not available or no default role
}
// persist local user
user = await this.userRepository.create(userEntity);
// return freshly created user
return user;
}
else {
let changed = false;
if (syncEmail && email && user.email !== email) {
user.changeEmail(email);
changed = true;
// prepare event class instance if needed (no dispatch)
}
if (syncUsername && preferred_username && user.username !== preferred_username) {
user.changeUsername(preferred_username);
changed = true;
// prepare event class instance if needed (no dispatch)
}
// update last seen
user.touchLastSeen();
changed = true;
if (changed) {
user = await this.userRepository.update(user);
}
}
// Validations
if (!user.isActive) {
// Authentication succeeded but user is disabled
throw new common_1.ForbiddenException('User is not active.');
}
if (user.deletedAt) {
throw new common_1.ForbiddenException('User is deleted.');
}
// Ensure roles/permissions loaded (repo should return includes)
return user;
}
};
exports.SyncIdentityHandler = SyncIdentityHandler;
exports.SyncIdentityHandler = SyncIdentityHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser,
role_interface_1.IRole,
i_auth_config_1.IAuthConfig])
], SyncIdentityHandler);
//# sourceMappingURL=sync-identity.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"sync-identity.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/sync-identity.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateUserHandler = void 0;
const common_1 = require("@nestjs/common");
const user_interface_1 = require("../../../domain/repositories/user.interface");
let UpdateUserHandler = class UpdateUserHandler {
userRepository;
constructor(userRepository) {
this.userRepository = userRepository;
}
async execute(id, dto) {
// Password management is not allowed in RayLab Core
if (dto.password)
throw new common_1.BadRequestException('Password management is not allowed.');
const user = await this.userRepository.getById(id);
if (!user)
throw new common_1.NotFoundException('User not found.');
// Only allow updating profile fields: name, email, metadata, storage settings
if (dto.name !== undefined)
user.changeUsername(dto.name);
if (dto.email !== undefined)
user.changeEmail(dto.email);
// metadata field not handled at domain level yet
if (dto.storageQuota !== undefined)
user.setStorageQuota(dto.storageQuota);
if (dto.storageUsed !== undefined)
user.setStorageUsed(dto.storageUsed);
return this.userRepository.update(user);
}
};
exports.UpdateUserHandler = UpdateUserHandler;
exports.UpdateUserHandler = UpdateUserHandler = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [user_interface_1.IUser])
], UpdateUserHandler);
//# sourceMappingURL=update-user.handler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"update-user.handler.js","sourceRoot":"","sources":["../../../../../../src/modules/identity/application/handlers/user/update-user.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoF;AACpF,gFAAoE;AAI7D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACC;IAA7B,YAA6B,cAAqB;QAArB,mBAAc,GAAd,cAAc,CAAO;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,GAAkB;QAC1C,oDAAoD;QACpD,IAAK,GAAW,CAAC,QAAQ;YAAE,MAAM,IAAI,4BAAmB,CAAC,qCAAqC,CAAC,CAAC;QAEhG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,8EAA8E;QAC9E,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzD,iDAAiD;QACjD,IAAK,GAAW,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,eAAe,CAAE,GAAW,CAAC,YAAY,CAAC,CAAC;QAC7F,IAAK,GAAW,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,cAAc,CAAE,GAAW,CAAC,WAAW,CAAC,CAAC;QAE1F,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAnBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAEkC,sBAAK;GADvC,iBAAiB,CAmB7B"}
@@ -0,0 +1,37 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var UserService_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserService = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const user_interface_1 = require("../../domain/repositories/user.interface");
let UserService = UserService_1 = class UserService {
prisma;
userRepository;
logger = new common_1.Logger(UserService_1.name);
constructor(prisma, userRepository) {
this.prisma = prisma;
this.userRepository = userRepository;
}
async createUser(input) {
// Provisioning to external Identity Provider (Authentik) has been disabled.
// All users must be created in Authentik first. RayLab will create local record on first successful login.
throw new common_1.BadRequestException('Provisioning disabled: create users in Authentik and login to sync to RayLab');
}
};
exports.UserService = UserService;
exports.UserService = UserService = UserService_1 = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService,
user_interface_1.IUser])
], UserService);
//# sourceMappingURL=user.service.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../../../../src/modules/identity/application/services/user.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyE;AACzE,sEAAkE;AAClE,6EAAiE;AAI1D,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAIH;IACA;IAJF,MAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAEvD,YACmB,MAAqB,EACrB,cAAqB;QADrB,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAO;IACrC,CAAC;IAEJ,KAAK,CAAC,UAAU,CAAC,KAAgF;QAC/F,4EAA4E;QAC5E,2GAA2G;QAC3G,MAAM,IAAI,4BAAmB,CAAC,8EAA8E,CAAC,CAAC;IAChH,CAAC;CACF,CAAA;AAbY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAKgB,8BAAa;QACL,sBAAK;GAL7B,WAAW,CAavB"}
@@ -0,0 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PermissionData = void 0;
class PermissionData {
id;
code;
name;
description;
createdAt;
updatedAt;
constructor(id, code, name, description, createdAt, updatedAt) {
this.id = id;
this.code = code;
this.name = name;
this.description = description;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
}
changeName(name) {
this.name = name;
}
changeDescription(description) {
this.description = description;
}
changeCode(code) {
this.code = code;
}
static restore(props) {
return new PermissionData(props.id, props.code || props.name, props.name, props.description, props.createdAt, props.updatedAt);
}
}
exports.PermissionData = PermissionData;
//# sourceMappingURL=permission.entity.js.map
@@ -0,0 +1 @@
{"version":3,"file":"permission.entity.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/entities/permission.entity.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IAEP;IACT;IACA;IACA;IACA;IACA;IANT,YACkB,EAAU,EACnB,IAAY,EACZ,IAAY,EACZ,WAAmB,EACnB,SAAe,EACf,SAAe;QALN,OAAE,GAAF,EAAE,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAAM;QACf,cAAS,GAAT,SAAS,CAAM;IACrB,CAAC;IAEJ,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,iBAAiB,CAAC,WAAmB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAOd;QACC,OAAO,IAAI,cAAc,CACvB,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EACxB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CAChB,CAAC;IACJ,CAAC;CACF;AAvCD,wCAuCC"}
+51
View File
@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoleData = void 0;
class RoleData {
id;
code;
name;
description;
permissions;
isDefault;
createdAt;
updatedAt;
constructor(id, code, name, description, permissions, isDefault, createdAt, updatedAt) {
this.id = id;
this.code = code;
this.name = name;
this.description = description;
this.permissions = permissions;
this.isDefault = isDefault;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
}
hasPermissions(permissionId) {
return this.permissions.some(x => x.id.toLowerCase() === permissionId.toLowerCase());
}
assignPermission(permissionData) {
if (this.hasPermissions(permissionData.id))
throw new Error("Permission sudah dimiliki.");
this.permissions.push(permissionData);
}
removePermission(permissionId) {
const idx = this.permissions.findIndex(p => p.id.toLowerCase() === permissionId.toLowerCase());
if (idx === -1)
throw new Error('Permission tidak ditemukan pada role.');
this.permissions.splice(idx, 1);
}
changeName(name) {
this.name = name;
}
changeDescription(description) {
this.description = description;
}
setDefault(isDefault) {
this.isDefault = isDefault;
}
static restore(props) {
return new RoleData(props.id, props.code, props.name, props.description, props.permissions || [], props.isDefault ?? false, props.createdAt, props.updatedAt);
}
}
exports.RoleData = RoleData;
//# sourceMappingURL=role.entity.js.map
@@ -0,0 +1 @@
{"version":3,"file":"role.entity.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/entities/role.entity.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IAED;IACT;IACA;IACA;IACA;IACA;IACA;IACA;IART,YACkB,EAAU,EACnB,IAAY,EACZ,IAAY,EACZ,WAAmB,EACnB,WAA6B,EAC7B,SAAkB,EAClB,SAAe,EACf,SAAe;QAPN,OAAE,GAAF,EAAE,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,gBAAW,GAAX,WAAW,CAAkB;QAC7B,cAAS,GAAT,SAAS,CAAS;QAClB,cAAS,GAAT,SAAS,CAAM;QACf,cAAS,GAAT,SAAS,CAAM;IACrB,CAAC;IAEJ,cAAc,CAAC,YAAoB;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,gBAAgB,CAAC,cAA8B;QAC7C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE1F,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB,CAAC,YAAoB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/F,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,iBAAiB,CAAC,WAAmB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,SAAkB;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KASd;QACC,OAAO,IAAI,QAAQ,CACjB,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,IAAI,EAAE,EACvB,KAAK,CAAC,SAAS,IAAI,KAAK,EACxB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CAChB,CAAC;IACJ,CAAC;CACF;AA7DD,4BA6DC"}
+143
View File
@@ -0,0 +1,143 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserData = void 0;
class UserData {
id;
authentikId;
username;
email;
password;
roles;
permissions;
isActive;
deletedAt;
lastSeenAt;
storageQuota;
storageUsed;
constructor(id, authentikId, username, email, password, roles, permissions, isActive, deletedAt, lastSeenAt, storageQuota, storageUsed) {
this.id = id;
this.authentikId = authentikId;
this.username = username;
this.email = email;
this.password = password;
this.roles = roles;
this.permissions = permissions;
this.isActive = isActive;
this.deletedAt = deletedAt;
this.lastSeenAt = lastSeenAt;
this.storageQuota = storageQuota;
this.storageUsed = storageUsed;
}
//#region Create
static create(data) {
const quota = data.storageQuota !== undefined ? data.storageQuota : 10737418240; // 10 GB
const used = data.storageUsed !== undefined ? data.storageUsed : 0;
return new UserData(crypto.randomUUID(), data.authentikId || null, data.username, data.email, data.password ?? null, [], [], true, null, null, quota, used);
}
//#endregion
//#region Read
hasRole(roleId) {
return this.roles.some(x => x.id.toLowerCase() === roleId.toLowerCase());
}
assignRole(roleData) {
if (this.hasRole(roleData.id))
throw new Error("Role Sudah dimiliki.");
this.roles.push(roleData);
}
hasPermissions(permissionId) {
return this.permissions.some(x => x.id.toLowerCase() === permissionId.toLowerCase());
}
hasPermission(permission) {
const byPerm = this.permissions.some(x => x.id.toLowerCase() === permission.toLowerCase() || x.name.toLowerCase() === permission.toLowerCase());
if (byPerm)
return true;
// check roles
return this.roles.some(r => r.permissions.some(p => p.id.toLowerCase() === permission.toLowerCase() || p.name.toLowerCase() === permission.toLowerCase()));
}
assignPermission(permissionData) {
if (this.hasPermissions(permissionData.id))
throw new Error("Permission sudah dimiliki.");
this.permissions.push(permissionData);
}
//#endregion
//#region Update
changeEmail(email) {
this.email = email;
}
changeUsername(username) {
this.username = username;
}
touchLastSeen() {
this.lastSeenAt = new Date();
}
enable() {
this.isActive = true;
}
disable() {
this.isActive = false;
}
//#endregion
//#region Delete
softDelete() {
this.deletedAt = new Date();
this.isActive = false;
}
restoreInstance() {
this.deletedAt = null;
}
//#endregion
static restore(props) {
return new UserData(props.id, props.authentikId || null, props.username, props.email, props.password, props.roles || [], props.permissions || [], props.isActive !== undefined ? props.isActive : true, props.deletedAt || null, props.lastSeenAt || null, props.storageQuota !== undefined && props.storageQuota !== null ? props.storageQuota : 10737418240, props.storageUsed !== undefined && props.storageUsed !== null ? props.storageUsed : 0);
}
removeRole(roleId) {
const idx = this.roles.findIndex(r => r.id.toLowerCase() === roleId.toLowerCase());
if (idx === -1)
throw new Error('Role tidak ditemukan pada user.');
this.roles.splice(idx, 1);
}
removePermission(permissionId) {
const idx = this.permissions.findIndex(p => p.id.toLowerCase() === permissionId.toLowerCase());
if (idx === -1)
throw new Error('Permission tidak ditemukan pada user.');
this.permissions.splice(idx, 1);
}
// Storage helpers
setStorageQuota(bytes) {
if (bytes < 0)
throw new Error('storageQuota must be >= 0');
if (this.storageUsed > bytes)
throw new Error('storageQuota cannot be less than storageUsed');
this.storageQuota = bytes;
}
setStorageUsed(bytes) {
if (bytes < 0)
throw new Error('storageUsed must be >= 0');
if (bytes > this.storageQuota)
throw new Error('storageUsed cannot exceed storageQuota');
this.storageUsed = bytes;
}
// Response helper for API
toResponse() {
const remaining = this.storageQuota - this.storageUsed;
const usagePercentage = this.storageQuota > 0 ? Math.round((this.storageUsed / this.storageQuota) * 100) : 0;
return {
id: this.id,
authentikId: this.authentikId,
username: this.username,
email: this.email,
roles: this.roles,
permissions: this.permissions,
isActive: this.isActive,
deletedAt: this.deletedAt,
lastSeenAt: this.lastSeenAt,
storage: {
quota: this.storageQuota,
used: this.storageUsed,
remaining,
usagePercentage,
},
};
}
}
exports.UserData = UserData;
//# sourceMappingURL=user.entity.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserCreatedEvent = void 0;
class UserCreatedEvent {
payload;
name = 'UserCreated';
occurredAt = new Date();
constructor(payload) {
this.payload = payload;
}
}
exports.UserCreatedEvent = UserCreatedEvent;
//# sourceMappingURL=user-created.event.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user-created.event.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/events/user-created.event.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAGC;IAFnB,IAAI,GAAG,aAAa,CAAC;IACrB,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;IACvC,YAA4B,OAAiF;QAAjF,YAAO,GAAP,OAAO,CAA0E;IAAG,CAAC;CAClH;AAJD,4CAIC"}
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserDisabledEvent = void 0;
class UserDisabledEvent {
payload;
name = 'UserDisabled';
occurredAt = new Date();
constructor(payload) {
this.payload = payload;
}
}
exports.UserDisabledEvent = UserDisabledEvent;
//# sourceMappingURL=user-disabled.event.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user-disabled.event.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/events/user-disabled.event.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAGA;IAFnB,IAAI,GAAG,cAAc,CAAC;IACtB,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;IACvC,YAA4B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;CAC5D;AAJD,8CAIC"}
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserEmailChangedEvent = void 0;
class UserEmailChangedEvent {
payload;
name = 'UserEmailChanged';
occurredAt = new Date();
constructor(payload) {
this.payload = payload;
}
}
exports.UserEmailChangedEvent = UserEmailChangedEvent;
//# sourceMappingURL=user-email-changed.event.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user-email-changed.event.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/events/user-email-changed.event.ts"],"names":[],"mappings":";;;AAEA,MAAa,qBAAqB;IAGJ;IAFnB,IAAI,GAAG,kBAAkB,CAAC;IAC1B,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;IACvC,YAA4B,OAA+D;QAA/D,YAAO,GAAP,OAAO,CAAwD;IAAG,CAAC;CAChG;AAJD,sDAIC"}
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserEnabledEvent = void 0;
class UserEnabledEvent {
payload;
name = 'UserEnabled';
occurredAt = new Date();
constructor(payload) {
this.payload = payload;
}
}
exports.UserEnabledEvent = UserEnabledEvent;
//# sourceMappingURL=user-enabled.event.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user-enabled.event.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/events/user-enabled.event.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAGC;IAFnB,IAAI,GAAG,aAAa,CAAC;IACrB,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;IACvC,YAA4B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;CAC5D;AAJD,4CAIC"}
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserUsernameChangedEvent = void 0;
class UserUsernameChangedEvent {
payload;
name = 'UserUsernameChanged';
occurredAt = new Date();
constructor(payload) {
this.payload = payload;
}
}
exports.UserUsernameChangedEvent = UserUsernameChangedEvent;
//# sourceMappingURL=user-username-changed.event.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user-username-changed.event.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/events/user-username-changed.event.ts"],"names":[],"mappings":";;;AAEA,MAAa,wBAAwB;IAGP;IAFnB,IAAI,GAAG,qBAAqB,CAAC;IAC7B,UAAU,GAAS,IAAI,IAAI,EAAE,CAAC;IACvC,YAA4B,OAAqE;QAArE,YAAO,GAAP,OAAO,CAA8D;IAAG,CAAC;CACtG;AAJD,4DAIC"}
@@ -0,0 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IPermission = void 0;
class IPermission {
}
exports.IPermission = IPermission;
//# sourceMappingURL=permission.interface.js.map
@@ -0,0 +1 @@
{"version":3,"file":"permission.interface.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/repositories/permission.interface.ts"],"names":[],"mappings":";;;AAEA,MAAsB,WAAW;CAShC;AATD,kCASC"}
@@ -0,0 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IRole = void 0;
class IRole {
}
exports.IRole = IRole;
//# sourceMappingURL=role.interface.js.map
@@ -0,0 +1 @@
{"version":3,"file":"role.interface.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/repositories/role.interface.ts"],"names":[],"mappings":";;;AAEA,MAAsB,KAAK;CAY1B;AAZD,sBAYC"}
@@ -0,0 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IUser = void 0;
class IUser {
}
exports.IUser = IUser;
//# sourceMappingURL=user.interface.js.map
@@ -0,0 +1 @@
{"version":3,"file":"user.interface.js","sourceRoot":"","sources":["../../../../../src/modules/identity/domain/repositories/user.interface.ts"],"names":[],"mappings":";;;AAEA,MAAsB,KAAK;CA0B1B;AA1BD,sBA0BC"}
+113
View File
@@ -0,0 +1,113 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IdentityModule = void 0;
const common_1 = require("@nestjs/common");
const users_controller_1 = require("./presentation/controllers/users.controller");
const roles_controller_1 = require("./presentation/controllers/roles.controller");
const permissions_controller_1 = require("./presentation/controllers/permissions.controller");
const prisma_service_1 = require("../../shared/prisma.service");
const user_service_1 = require("./application/services/user.service");
const prisma_user_repository_1 = require("./infrastructure/repositories/prisma-user.repository");
const user_interface_1 = require("./domain/repositories/user.interface");
const jwt_auth_guard_1 = require("../../core/auth/guards/jwt-auth.guard");
const permission_guard_1 = require("../authorization/presentation/guards/permission.guard");
const core_1 = require("@nestjs/core");
const sync_identity_handler_1 = require("./application/handlers/user/sync-identity.handler");
const current_user_guard_1 = require("./presentation/guards/current-user.guard");
const prisma_role_repository_1 = require("./infrastructure/repositories/prisma-role.repository");
const prisma_permission_repository_1 = require("./infrastructure/repositories/prisma-permission.repository");
const role_interface_1 = require("./domain/repositories/role.interface");
const permission_interface_1 = require("./domain/repositories/permission.interface");
const i_auth_config_1 = require("./application/config/i-auth-config");
const env_auth_config_1 = require("./application/config/env-auth-config");
const auth_module_1 = require("../auth/auth.module");
const authorization_module_1 = require("../authorization/authorization.module");
const get_users_handler_1 = require("./application/handlers/user/get-users.handler");
const get_user_handler_1 = require("./application/handlers/user/get-user.handler");
const get_current_user_handler_1 = require("./application/handlers/user/get-current-user.handler");
const enable_user_handler_1 = require("./application/handlers/user/enable-user.handler");
const disable_user_handler_1 = require("./application/handlers/user/disable-user.handler");
const delete_user_handler_1 = require("./application/handlers/user/delete-user.handler");
const restore_user_handler_1 = require("./application/handlers/user/restore-user.handler");
const update_user_handler_1 = require("./application/handlers/user/update-user.handler");
const get_roles_handler_1 = require("./application/handlers/role/get-roles.handler");
const get_role_handler_1 = require("./application/handlers/role/get-role.handler");
const create_role_handler_1 = require("./application/handlers/role/create-role.handler");
const update_role_handler_1 = require("./application/handlers/role/update-role.handler");
const delete_role_handler_1 = require("./application/handlers/role/delete-role.handler");
const assign_permission_handler_1 = require("./application/handlers/role/assign-permission.handler");
const remove_permission_handler_1 = require("./application/handlers/role/remove-permission.handler");
const get_permissions_handler_1 = require("./application/handlers/permission/get-permissions.handler");
const get_permission_handler_1 = require("./application/handlers/permission/get-permission.handler");
const create_permission_handler_1 = require("./application/handlers/permission/create-permission.handler");
const update_permission_handler_1 = require("./application/handlers/permission/update-permission.handler");
const delete_permission_handler_1 = require("./application/handlers/permission/delete-permission.handler");
let IdentityModule = class IdentityModule {
};
exports.IdentityModule = IdentityModule;
exports.IdentityModule = IdentityModule = __decorate([
(0, common_1.Module)({
imports: [auth_module_1.AuthModule, authorization_module_1.AuthorizationModule],
providers: [
//#region User
// CreateUserHandler has been removed: provisioning disabled; users must be created in Authentik.
sync_identity_handler_1.SyncIdentityHandler,
get_users_handler_1.GetUsersHandler,
get_user_handler_1.GetUserHandler,
get_current_user_handler_1.GetCurrentUserHandler,
enable_user_handler_1.EnableUserHandler,
disable_user_handler_1.DisableUserHandler,
delete_user_handler_1.DeleteUserHandler,
restore_user_handler_1.RestoreUserHandler,
update_user_handler_1.UpdateUserHandler,
//#endregion
// role & permission handlers
get_roles_handler_1.GetRolesHandler,
get_role_handler_1.GetRoleHandler,
create_role_handler_1.CreateRoleHandler,
update_role_handler_1.UpdateRoleHandler,
delete_role_handler_1.DeleteRoleHandler,
assign_permission_handler_1.RoleAssignPermissionHandler,
remove_permission_handler_1.RoleRemovePermissionHandler,
get_permissions_handler_1.GetPermissionsHandler,
get_permission_handler_1.GetPermissionHandler,
create_permission_handler_1.CreatePermissionHandler,
update_permission_handler_1.UpdatePermissionHandler,
delete_permission_handler_1.DeletePermissionHandler,
jwt_auth_guard_1.JwtAuthGuard,
current_user_guard_1.CurrentUserGuard,
permission_guard_1.PermissionGuard,
core_1.Reflector,
prisma_service_1.PrismaService,
prisma_user_repository_1.PrismaUserRepository,
prisma_role_repository_1.PrismaRoleRepository,
prisma_permission_repository_1.PrismaPermissionRepository,
user_service_1.UserService,
update_user_handler_1.UpdateUserHandler,
{
provide: user_interface_1.IUser,
useClass: prisma_user_repository_1.PrismaUserRepository,
},
{
provide: role_interface_1.IRole,
useClass: prisma_role_repository_1.PrismaRoleRepository,
},
{
provide: permission_interface_1.IPermission,
useClass: prisma_permission_repository_1.PrismaPermissionRepository,
},
{
provide: i_auth_config_1.IAuthConfig,
useClass: env_auth_config_1.EnvAuthConfig,
},
],
controllers: [users_controller_1.UsersController, roles_controller_1.RolesController, permissions_controller_1.PermissionsController],
})
], IdentityModule);
//# sourceMappingURL=identity.module.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"identity.module.js","sourceRoot":"","sources":["../../../src/modules/identity/identity.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,kFAA8E;AAC9E,kFAA8E;AAC9E,8FAA0F;AAC1F,gEAA4D;AAC5D,sEAAkE;AAClE,iGAA4F;AAC5F,yEAA6D;AAG7D,0EAAqE;AAErE,4FAAwF;AACxF,uCAAyC;AACzC,6FAAwF;AACxF,iFAA4E;AAC5E,iGAA4F;AAC5F,6GAAwG;AACxG,yEAA6D;AAC7D,qFAAyE;AACzE,sEAAiE;AACjE,0EAAqE;AACrE,qDAAiD;AACjD,gFAA4E;AAG5E,qFAAgF;AAChF,mFAA8E;AAC9E,mGAA6F;AAC7F,yFAAoF;AACpF,2FAAsF;AACtF,yFAAoF;AACpF,2FAAsF;AACtF,yFAAoF;AAIpF,qFAAgF;AAChF,mFAA8E;AAC9E,yFAAoF;AACpF,yFAAoF;AACpF,yFAAoF;AACpF,qGAAoG;AACpG,qGAAoG;AAEpG,uGAAkG;AAClG,qGAAgG;AAChG,2GAAsG;AACtG,2GAAsG;AACtG,2GAAsG;AAmE/F,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAjE1B,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE,CAAC,wBAAU,EAAE,0CAAmB,CAAC;QAC5C,SAAS,EAAE;YAEL,eAAe;YACnB,iGAAiG;YACjG,2CAAmB;YACnB,mCAAe;YAEf,iCAAc;YACd,gDAAqB;YACrB,uCAAiB;YACjB,yCAAkB;YAClB,uCAAiB;YACb,yCAAkB;YACtB,uCAAiB;YAEjB,YAAY;YAEZ,6BAA6B;YAC7B,mCAAe;YACf,iCAAc;YACd,uCAAiB;YACjB,uCAAiB;YACjB,uCAAiB;YACjB,uDAA2B;YAC3B,uDAA2B;YAEvB,+CAAqB;YACzB,6CAAoB;YACpB,mDAAuB;YACvB,mDAAuB;YACvB,mDAAuB;YAEvB,6BAAY;YAEZ,qCAAgB;YAChB,kCAAe;YACf,gBAAS;YACT,8BAAa;YACb,6CAAoB;YACpB,6CAAoB;YACpB,yDAA0B;YACtB,0BAAW;YACf,uCAAiB;YAEjB;gBACE,OAAO,EAAE,sBAAK;gBACd,QAAQ,EAAE,6CAAoB;aAC/B;YACD;gBACE,OAAO,EAAE,sBAAK;gBACd,QAAQ,EAAE,6CAAoB;aAC/B;YACD;gBACE,OAAO,EAAE,kCAAW;gBACpB,QAAQ,EAAE,yDAA0B;aACrC;YACD;gBACE,OAAO,EAAE,2BAAW;gBACpB,QAAQ,EAAE,+BAAa;aACxB;SACI;QACP,WAAW,EAAE,CAAC,kCAAe,EAAE,kCAAe,EAAE,8CAAqB,CAAC;KACvE,CAAC;GACW,cAAc,CAAG"}
@@ -0,0 +1,26 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaPermissionMapper = void 0;
const permission_entity_1 = require("../../domain/entities/permission.entity");
class PrismaPermissionMapper {
static toDomain(model) {
return permission_entity_1.PermissionData.restore({
id: model.id,
code: model.code || model.name,
name: model.name,
description: model.description,
createdAt: model.createdAt,
updatedAt: model.updatedAt,
});
}
static toPersistence(permission) {
return {
id: permission.id,
code: permission.code,
name: permission.name,
description: permission.description,
};
}
}
exports.PrismaPermissionMapper = PrismaPermissionMapper;
//# sourceMappingURL=prisma-permission.mapper.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-permission.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-permission.mapper.ts"],"names":[],"mappings":";;;AAAA,+EAAyE;AAEzE,MAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,OAAO,kCAAc,CAAC,OAAO,CAAC;YAC5B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,UAA0B;QAC7C,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC;IACJ,CAAC;CACF;AApBD,wDAoBC"}
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaRoleMapper = void 0;
const role_entity_1 = require("../../domain/entities/role.entity");
const permission_entity_1 = require("../../domain/entities/permission.entity");
class PrismaRoleMapper {
static toDomain(model) {
const permissions = (model.permissions || []).map((p) => {
const perm = p.permission || p; // p may be RolePermission with nested permission or permission itself
return permission_entity_1.PermissionData.restore({
id: perm.id,
name: perm.name,
description: perm.description,
createdAt: perm.createdAt,
updatedAt: perm.updatedAt,
});
});
return role_entity_1.RoleData.restore({
id: model.id,
code: model.code,
name: model.name,
description: model.description,
permissions,
isDefault: model.isDefault ?? false,
createdAt: model.createdAt,
updatedAt: model.updatedAt,
});
}
}
exports.PrismaRoleMapper = PrismaRoleMapper;
//# sourceMappingURL=prisma-role.mapper.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-role.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-role.mapper.ts"],"names":[],"mappings":";;;AAAA,mEAA6D;AAC7D,+EAAyE;AAEzE,MAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,MAAM,WAAW,GAAqB,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC7E,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,sEAAsE;YACtG,OAAO,kCAAc,CAAC,OAAO,CAAC;gBAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAQ,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW;YACX,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAxBD,4CAwBC"}
@@ -0,0 +1,69 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaUserMapper = void 0;
const user_entity_1 = require("../../domain/entities/user.entity");
const role_entity_1 = require("../../domain/entities/role.entity");
const permission_entity_1 = require("../../domain/entities/permission.entity");
class PrismaUserMapper {
static toDomain(model) {
const roles = (model.roles || []).map((ur) => {
const r = ur.role;
const permissions = (r?.permissions || []).map((rp) => permission_entity_1.PermissionData.restore({
id: rp.permission.id,
name: rp.permission.name,
description: rp.permission.description,
createdAt: rp.permission.createdAt,
updatedAt: rp.permission.updatedAt,
}));
return role_entity_1.RoleData.restore({
id: r.id,
code: r.code,
name: r.name,
description: r.description,
permissions,
createdAt: r.createdAt,
updatedAt: r.updatedAt,
});
});
const permissions = (model.permissions || []).map((up) => permission_entity_1.PermissionData.restore({
id: up.permission.id,
name: up.permission.name,
description: up.permission.description,
createdAt: up.permission.createdAt,
updatedAt: up.permission.updatedAt,
}));
return user_entity_1.UserData.restore({
id: model.id,
authentikId: model.authentikUserId || model.authentikId || null,
username: model.username || model.name || model.username,
email: model.email,
password: model.password ?? null,
roles,
permissions,
isActive: model.isActive ?? true,
deletedAt: model.deletedAt || null,
lastSeenAt: model.lastSeenAt || null,
storageQuota: model.storageQuota !== undefined && model.storageQuota !== null ? Number(model.storageQuota) : undefined,
storageUsed: model.storageUsed !== undefined && model.storageUsed !== null ? Number(model.storageUsed) : undefined,
});
}
static toPersistence(userData) {
return {
id: userData.id,
authentikUserId: userData.authentikUserId || userData.authentikId,
authentikId: userData.authentikId,
username: userData.username,
email: userData.email,
password: userData.password ?? null,
isActive: userData.isActive,
deletedAt: userData.deletedAt,
lastSeenAt: userData.lastSeenAt,
lastSyncedAt: userData.lastSyncedAt,
syncStatus: userData.syncStatus,
storageQuota: userData.storageQuota,
storageUsed: userData.storageUsed,
};
}
}
exports.PrismaUserMapper = PrismaUserMapper;
//# sourceMappingURL=prisma-user.mapper.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-user.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-user.mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaPermissionRepository = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const prisma_permission_mapper_1 = require("../mappers/prisma-permission.mapper");
let PrismaPermissionRepository = class PrismaPermissionRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 10;
const where = {};
if (params.search) {
where.OR = [
{ name: { contains: params.search, mode: 'insensitive' } },
{ code: { contains: params.search, mode: 'insensitive' } },
{ description: { contains: params.search, mode: 'insensitive' } },
];
}
const [total, items] = await Promise.all([
this.prisma.permission.count({ where }),
this.prisma.permission.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' } }),
]);
return { data: items.map(i => prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(i)), total };
}
async getById(id) {
const p = await this.prisma.permission.findUnique({ where: { id } });
if (!p)
throw new Error('Permission not found.');
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(p);
}
async create(permission) {
const base = prisma_permission_mapper_1.PrismaPermissionMapper.toPersistence(permission);
const created = await this.prisma.permission.create({ data: base });
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(created);
}
async update(permission) {
const base = prisma_permission_mapper_1.PrismaPermissionMapper.toPersistence(permission);
const updated = await this.prisma.permission.update({ where: { id: permission.id }, data: base });
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(updated);
}
async delete(id) {
await this.prisma.permission.delete({ where: { id } });
}
async findRoleIdsByPermission(permissionId) {
const rows = await this.prisma.rolePermission.findMany({ where: { permissionId }, select: { roleId: true } });
return rows.map(r => r.roleId);
}
};
exports.PrismaPermissionRepository = PrismaPermissionRepository;
exports.PrismaPermissionRepository = PrismaPermissionRepository = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
], PrismaPermissionRepository);
//# sourceMappingURL=prisma-permission.repository.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-permission.repository.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/repositories/prisma-permission.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaRoleRepository = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const prisma_role_mapper_1 = require("../mappers/prisma-role.mapper");
let PrismaRoleRepository = class PrismaRoleRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async getDefaultRole() {
const role = await this.prisma.role.findFirst({
where: { isDefault: true },
include: { permissions: { include: { permission: true } } },
});
if (!role)
return null;
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(role);
}
async findById(roleId) {
const role = await this.prisma.role.findUnique({
where: { id: roleId },
include: { permissions: { include: { permission: true } } },
});
if (!role)
throw new Error('Role not found.');
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(role);
}
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 10;
const where = {};
if (params.search) {
where.OR = [
{ name: { contains: params.search, mode: 'insensitive' } },
{ code: { contains: params.search, mode: 'insensitive' } },
{ description: { contains: params.search, mode: 'insensitive' } },
];
}
const [total, items] = await Promise.all([
this.prisma.role.count({ where }),
this.prisma.role.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' }, include: { permissions: { include: { permission: true } } } }),
]);
return { data: items.map(i => prisma_role_mapper_1.PrismaRoleMapper.toDomain(i)), total };
}
async create(role) {
const base = {
id: role.id,
code: role.code,
name: role.name,
description: role.description,
isDefault: role.isDefault,
};
if (role.permissions && role.permissions.length > 0) {
base.permissions = {
create: role.permissions.map(p => ({ permission: { connect: { id: p.id } }, assignedBy: 'system' })),
};
}
const created = await this.prisma.role.create({ data: base, include: { permissions: { include: { permission: true } } } });
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(created);
}
async update(role) {
const base = {
code: role.code,
name: role.name,
description: role.description,
isDefault: role.isDefault,
};
// sync permissions via transaction
const permIds = role.permissions ? role.permissions.map(p => p.id) : [];
await this.prisma.$transaction(async (prisma) => {
const currentPerms = await prisma.rolePermission.findMany({ where: { roleId: role.id } });
const currentIds = currentPerms.map(p => p.permissionId);
const toAdd = permIds.filter(id => !currentIds.includes(id));
const toRemove = currentIds.filter(id => !permIds.includes(id));
if (toRemove.length > 0) {
await prisma.rolePermission.deleteMany({ where: { roleId: role.id, permissionId: { in: toRemove } } });
}
if (toAdd.length > 0) {
await prisma.rolePermission.createMany({ data: toAdd.map(pid => ({ roleId: role.id, permissionId: pid, assignedBy: 'system' })), skipDuplicates: true });
}
await prisma.role.update({ where: { id: role.id }, data: base });
});
const updated = await this.prisma.role.findUnique({ where: { id: role.id }, include: { permissions: { include: { permission: true } } } });
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(updated);
}
async delete(roleId) {
await this.prisma.role.delete({ where: { id: roleId } });
}
async getAssignedUserIds(roleId) {
const rows = await this.prisma.userRole.findMany({ where: { roleId }, select: { userId: true } });
return rows.map(r => r.userId);
}
};
exports.PrismaRoleRepository = PrismaRoleRepository;
exports.PrismaRoleRepository = PrismaRoleRepository = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
], PrismaRoleRepository);
//# sourceMappingURL=prisma-role.repository.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,216 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaUserRepository = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const prisma_user_mapper_1 = require("../mappers/prisma-user.mapper");
let PrismaUserRepository = class PrismaUserRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
//#region Create
async create(userData) {
const base = prisma_user_mapper_1.PrismaUserMapper.toPersistence(userData);
const data = { ...base };
if (userData.roles && userData.roles.length > 0) {
data.roles = {
create: userData.roles.map(r => ({ role: { connect: { id: r.id } }, assignedBy: 'system' })),
};
}
const created = await this.prisma.user.create({
data,
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(created);
}
//#endregion
//#region Read
async existsById(userId) {
return ((await this.prisma.user.findUnique({
where: { id: userId },
select: { id: true },
})) !== null);
}
async existByEmail(userEmail) {
return ((await this.prisma.user.findUnique({
where: { email: userEmail },
select: { email: true },
})) !== null);
}
async getById(userId) {
const userData = await this.prisma.user.findUnique({
where: { id: userId },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
if (userData === null)
throw new Error('User tidak ditemukan.');
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
}
async getByEmail(userEmail) {
const userData = await this.prisma.user.findUnique({
where: { email: userEmail },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
if (userData === null)
throw new Error('User tidak ditemukan.');
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
}
async findByAuthentikId(authentikId) {
const userData = await this.prisma.user.findUnique({
where: { authentikId },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
if (!userData)
return null;
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
}
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 10;
const where = {};
if (params.search) {
where.OR = [
{ username: { contains: params.search, mode: 'insensitive' } },
{ email: { contains: params.search, mode: 'insensitive' } },
];
}
if (params.isActive !== undefined && params.isActive !== null) {
where.isActive = params.isActive;
}
if (params.deleted !== undefined && params.deleted !== null) {
if (params.deleted)
where.deletedAt = { not: null };
else
where.deletedAt = null;
}
if (params.roleId) {
where.roles = { some: { roleId: params.roleId } };
}
const [total, items] = await Promise.all([
this.prisma.user.count({ where }),
this.prisma.user.findMany({
where,
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
skip: (page - 1) * limit,
take: limit,
orderBy: { createdAt: 'desc' },
}),
]);
return { data: items.map(i => prisma_user_mapper_1.PrismaUserMapper.toDomain(i)), total };
}
async softDelete(userId) {
await this.prisma.user.update({ where: { id: userId }, data: { deletedAt: new Date(), isActive: false } });
}
async restore(userId) {
const updated = await this.prisma.user.update({
where: { id: userId },
data: { deletedAt: null },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async enable(userId) {
const updated = await this.prisma.user.update({
where: { id: userId },
data: { isActive: true },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async disable(userId) {
const updated = await this.prisma.user.update({
where: { id: userId },
data: { isActive: false },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async update(userData) {
const base = prisma_user_mapper_1.PrismaUserMapper.toPersistence(userData);
const data = { ...base };
// sync roles and permissions using transaction
const roleIds = userData.roles ? userData.roles.map(r => r.id) : [];
const permissionIds = userData.permissions ? userData.permissions.map(p => p.id) : [];
// perform transaction: delete removed relations, create missing ones, update user
await this.prisma.$transaction(async (prisma) => {
// current roles
const currentRoles = await prisma.userRole.findMany({ where: { userId: userData.id } });
const currentRoleIds = currentRoles.map(r => r.roleId);
const toAddRoles = roleIds.filter(id => !currentRoleIds.includes(id));
const toRemoveRoles = currentRoleIds.filter(id => !roleIds.includes(id));
if (toRemoveRoles.length > 0) {
await prisma.userRole.deleteMany({ where: { userId: userData.id, roleId: { in: toRemoveRoles } } });
}
if (toAddRoles.length > 0) {
await prisma.userRole.createMany({
data: toAddRoles.map(rid => ({ userId: userData.id, roleId: rid, assignedBy: 'system' })),
skipDuplicates: true,
});
}
// permissions
const currentPerms = await prisma.userPermission.findMany({ where: { userId: userData.id } });
const currentPermIds = currentPerms.map(p => p.permissionId);
const toAddPerms = permissionIds.filter(id => !currentPermIds.includes(id));
const toRemovePerms = currentPermIds.filter(id => !permissionIds.includes(id));
if (toRemovePerms.length > 0) {
await prisma.userPermission.deleteMany({ where: { userId: userData.id, permissionId: { in: toRemovePerms } } });
}
if (toAddPerms.length > 0) {
await prisma.userPermission.createMany({
data: toAddPerms.map(pid => ({ userId: userData.id, permissionId: pid, assignedBy: 'system' })),
skipDuplicates: true,
});
}
// update base user fields
await prisma.user.update({ where: { id: userData.id }, data });
});
const updated = await this.prisma.user.findUnique({
where: { id: userData.id },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
};
exports.PrismaUserRepository = PrismaUserRepository;
exports.PrismaUserRepository = PrismaUserRepository = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
], PrismaUserRepository);
//# sourceMappingURL=prisma-user.repository.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,119 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PermissionsController = void 0;
const common_1 = require("@nestjs/common");
const swagger_1 = require("@nestjs/swagger");
const jwt_auth_guard_1 = require("../../../../core/auth/guards/jwt-auth.guard");
const permission_guard_1 = require("../../../authorization/presentation/guards/permission.guard");
const current_user_guard_1 = require("../guards/current-user.guard");
const permission_decorator_1 = require("../../../authorization/presentation/decorators/permission.decorator");
const permission_constants_1 = require("../../../../common/constants/permission.constants");
const get_permissions_handler_1 = require("../../application/handlers/permission/get-permissions.handler");
const get_permission_handler_1 = require("../../application/handlers/permission/get-permission.handler");
const create_permission_handler_1 = require("../../application/handlers/permission/create-permission.handler");
const update_permission_handler_1 = require("../../application/handlers/permission/update-permission.handler");
const delete_permission_handler_1 = require("../../application/handlers/permission/delete-permission.handler");
let PermissionsController = class PermissionsController {
getPermissionsHandler;
getPermissionHandler;
createPermissionHandler;
updatePermissionHandler;
deletePermissionHandler;
constructor(getPermissionsHandler, getPermissionHandler, createPermissionHandler, updatePermissionHandler, deletePermissionHandler) {
this.getPermissionsHandler = getPermissionsHandler;
this.getPermissionHandler = getPermissionHandler;
this.createPermissionHandler = createPermissionHandler;
this.updatePermissionHandler = updatePermissionHandler;
this.deletePermissionHandler = deletePermissionHandler;
}
async findAll(query) {
const res = await this.getPermissionsHandler.execute(query);
return { success: true, data: res.data, meta: { total: res.total } };
}
async findOne(id) {
const p = await this.getPermissionHandler.execute(id);
return { success: true, data: p, meta: {} };
}
async create(body) {
const created = await this.createPermissionHandler.execute(body);
return { success: true, data: created, meta: {} };
}
async update(id, body) {
const updated = await this.updatePermissionHandler.execute(id, body);
return { success: true, data: updated, meta: {} };
}
async remove(id) {
await this.deletePermissionHandler.execute(id);
return { success: true, data: null, meta: {} };
}
};
exports.PermissionsController = PermissionsController;
__decorate([
(0, common_1.Get)(),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.PERMISSION_READ),
(0, swagger_1.ApiOperation)({ summary: 'List permissions' }),
__param(0, (0, common_1.Query)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], PermissionsController.prototype, "findAll", null);
__decorate([
(0, common_1.Get)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.PERMISSION_READ),
(0, swagger_1.ApiOperation)({ summary: 'Get permission' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], PermissionsController.prototype, "findOne", null);
__decorate([
(0, common_1.Post)(),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.PERMISSION_CREATE),
(0, swagger_1.ApiOperation)({ summary: 'Create permission' }),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], PermissionsController.prototype, "create", null);
__decorate([
(0, common_1.Patch)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.PERMISSION_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Update permission' }),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, Object]),
__metadata("design:returntype", Promise)
], PermissionsController.prototype, "update", null);
__decorate([
(0, common_1.Delete)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.PERMISSION_DELETE),
(0, swagger_1.ApiOperation)({ summary: 'Delete permission' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], PermissionsController.prototype, "remove", null);
exports.PermissionsController = PermissionsController = __decorate([
(0, swagger_1.ApiTags)('Permissions'),
(0, common_1.Controller)('permissions'),
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, current_user_guard_1.CurrentUserGuard, permission_guard_1.PermissionGuard),
__metadata("design:paramtypes", [get_permissions_handler_1.GetPermissionsHandler,
get_permission_handler_1.GetPermissionHandler,
create_permission_handler_1.CreatePermissionHandler,
update_permission_handler_1.UpdatePermissionHandler,
delete_permission_handler_1.DeletePermissionHandler])
], PermissionsController);
//# sourceMappingURL=permissions.controller.js.map
@@ -0,0 +1 @@
{"version":3,"file":"permissions.controller.js","sourceRoot":"","sources":["../../../../../src/modules/identity/presentation/controllers/permissions.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RolesController = void 0;
const common_1 = require("@nestjs/common");
const swagger_1 = require("@nestjs/swagger");
const jwt_auth_guard_1 = require("../../../../core/auth/guards/jwt-auth.guard");
const permission_guard_1 = require("../../../authorization/presentation/guards/permission.guard");
const current_user_guard_1 = require("../guards/current-user.guard");
const permission_decorator_1 = require("../../../authorization/presentation/decorators/permission.decorator");
const permission_constants_1 = require("../../../../common/constants/permission.constants");
const get_roles_handler_1 = require("../../application/handlers/role/get-roles.handler");
const get_role_handler_1 = require("../../application/handlers/role/get-role.handler");
const create_role_handler_1 = require("../../application/handlers/role/create-role.handler");
const update_role_handler_1 = require("../../application/handlers/role/update-role.handler");
const delete_role_handler_1 = require("../../application/handlers/role/delete-role.handler");
const assign_permission_handler_1 = require("../../application/handlers/role/assign-permission.handler");
const remove_permission_handler_1 = require("../../application/handlers/role/remove-permission.handler");
let RolesController = class RolesController {
getRolesHandler;
getRoleHandler;
createRoleHandler;
updateRoleHandler;
deleteRoleHandler;
roleAssignPermissionHandler;
roleRemovePermissionHandler;
constructor(getRolesHandler, getRoleHandler, createRoleHandler, updateRoleHandler, deleteRoleHandler, roleAssignPermissionHandler, roleRemovePermissionHandler) {
this.getRolesHandler = getRolesHandler;
this.getRoleHandler = getRoleHandler;
this.createRoleHandler = createRoleHandler;
this.updateRoleHandler = updateRoleHandler;
this.deleteRoleHandler = deleteRoleHandler;
this.roleAssignPermissionHandler = roleAssignPermissionHandler;
this.roleRemovePermissionHandler = roleRemovePermissionHandler;
}
async findAll(query) {
const res = await this.getRolesHandler.execute(query);
return { success: true, data: res.data, meta: { total: res.total } };
}
async findOne(id) {
const role = await this.getRoleHandler.execute(id);
return { success: true, data: role, meta: {} };
}
async create(body) {
const created = await this.createRoleHandler.execute(body);
return { success: true, data: created, meta: {} };
}
async update(id, body) {
const updated = await this.updateRoleHandler.execute(id, body);
return { success: true, data: updated, meta: {} };
}
async remove(id) {
await this.deleteRoleHandler.execute(id);
return { success: true, data: null, meta: {} };
}
async assignPermission(id, body) {
const permissionId = body.permissionId;
const updated = await this.roleAssignPermissionHandler.execute(id, permissionId);
return { success: true, data: updated, meta: {} };
}
async removePermission(id, permissionId) {
const updated = await this.roleRemovePermissionHandler.execute(id, permissionId);
return { success: true, data: updated, meta: {} };
}
};
exports.RolesController = RolesController;
__decorate([
(0, common_1.Get)(),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_READ),
(0, swagger_1.ApiOperation)({ summary: 'List roles' }),
__param(0, (0, common_1.Query)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "findAll", null);
__decorate([
(0, common_1.Get)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_READ),
(0, swagger_1.ApiOperation)({ summary: 'Get role' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "findOne", null);
__decorate([
(0, common_1.Post)(),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_CREATE),
(0, swagger_1.ApiOperation)({ summary: 'Create role' }),
__param(0, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "create", null);
__decorate([
(0, common_1.Patch)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Update role' }),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, Object]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "update", null);
__decorate([
(0, common_1.Delete)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_DELETE),
(0, swagger_1.ApiOperation)({ summary: 'Delete role' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "remove", null);
__decorate([
(0, common_1.Post)(':id/permissions'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Assign permission to role' }),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, Object]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "assignPermission", null);
__decorate([
(0, common_1.Delete)(':id/permissions/:permissionId'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.ROLE_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Remove permission from role' }),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Param)('permissionId')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, String]),
__metadata("design:returntype", Promise)
], RolesController.prototype, "removePermission", null);
exports.RolesController = RolesController = __decorate([
(0, swagger_1.ApiTags)('Roles'),
(0, common_1.Controller)('roles'),
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, current_user_guard_1.CurrentUserGuard, permission_guard_1.PermissionGuard),
__metadata("design:paramtypes", [get_roles_handler_1.GetRolesHandler,
get_role_handler_1.GetRoleHandler,
create_role_handler_1.CreateRoleHandler,
update_role_handler_1.UpdateRoleHandler,
delete_role_handler_1.DeleteRoleHandler,
assign_permission_handler_1.RoleAssignPermissionHandler,
remove_permission_handler_1.RoleRemovePermissionHandler])
], RolesController);
//# sourceMappingURL=roles.controller.js.map
@@ -0,0 +1 @@
{"version":3,"file":"roles.controller.js","sourceRoot":"","sources":["../../../../../src/modules/identity/presentation/controllers/roles.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqG;AACrG,6CAAwD;AAExD,gFAA2E;AAC3E,kGAA8F;AAC9F,qEAAgE;AAChE,8GAAkG;AAClG,4FAAmF;AAEnF,yFAAoF;AACpF,uFAAkF;AAClF,6FAAwF;AACxF,6FAAwF;AACxF,6FAAwF;AACxF,yGAAwG;AACxG,yGAAwG;AAKjG,IAAM,eAAe,GAArB,MAAM,eAAe;IAEP;IACA;IACA;IACA;IACA;IACA;IACA;IAPnB,YACmB,eAAgC,EAChC,cAA8B,EAC9B,iBAAoC,EACpC,iBAAoC,EACpC,iBAAoC,EACpC,2BAAwD,EACxD,2BAAwD;QANxD,oBAAe,GAAf,eAAe,CAAiB;QAChC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,gCAA2B,GAA3B,2BAA2B,CAA6B;QACxD,gCAA2B,GAA3B,2BAA2B,CAA6B;IACxE,CAAC;IAKE,AAAN,KAAK,CAAC,OAAO,CAAU,KAAU;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IACvE,CAAC;IAKK,AAAN,KAAK,CAAC,OAAO,CAAc,EAAU;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAKK,AAAN,KAAK,CAAC,MAAM,CAAS,IAAS;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;IAKK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU,EAAU,IAAS;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;IAKK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU;QAClC,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAKK,AAAN,KAAK,CAAC,gBAAgB,CAAc,EAAU,EAAU,IAAS;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;IAKK,AAAN,KAAK,CAAC,gBAAgB,CAAc,EAAU,EAAyB,YAAoB;QACzF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC;CACF,CAAA;AAnEY,0CAAe;AAcpB;IAHL,IAAA,YAAG,GAAE;IACL,IAAA,kCAAW,EAAC,qCAAc,CAAC,SAAS,CAAC;IACrC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IACzB,WAAA,IAAA,cAAK,GAAE,CAAA;;;;8CAGrB;AAKK;IAHL,IAAA,YAAG,EAAC,KAAK,CAAC;IACV,IAAA,kCAAW,EAAC,qCAAc,CAAC,SAAS,CAAC;IACrC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACvB,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;8CAGzB;AAKK;IAHL,IAAA,aAAI,GAAE;IACN,IAAA,kCAAW,EAAC,qCAAc,CAAC,WAAW,CAAC;IACvC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;6CAGnB;AAKK;IAHL,IAAA,cAAK,EAAC,KAAK,CAAC;IACZ,IAAA,kCAAW,EAAC,qCAAc,CAAC,WAAW,CAAC;IACvC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;6CAG5C;AAKK;IAHL,IAAA,eAAM,EAAC,KAAK,CAAC;IACb,IAAA,kCAAW,EAAC,qCAAc,CAAC,WAAW,CAAC;IACvC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;6CAGxB;AAKK;IAHL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACvB,IAAA,kCAAW,EAAC,qCAAc,CAAC,WAAW,CAAC;IACvC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IAC/B,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;;;;uDAItD;AAKK;IAHL,IAAA,eAAM,EAAC,+BAA+B,CAAC;IACvC,IAAA,kCAAW,EAAC,qCAAc,CAAC,WAAW,CAAC;IACvC,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACjC,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,cAAK,EAAC,cAAc,CAAC,CAAA;;;;uDAGrE;0BAlEU,eAAe;IAH3B,IAAA,iBAAO,EAAC,OAAO,CAAC;IAChB,IAAA,mBAAU,EAAC,OAAO,CAAC;IACnB,IAAA,kBAAS,EAAC,6BAAY,EAAE,qCAAgB,EAAE,kCAAe,CAAC;qCAGrB,mCAAe;QAChB,iCAAc;QACX,uCAAiB;QACjB,uCAAiB;QACjB,uCAAiB;QACP,uDAA2B;QAC3B,uDAA2B;GARhE,eAAe,CAmE3B"}
@@ -0,0 +1,173 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UsersController = void 0;
const common_1 = require("@nestjs/common");
const swagger_1 = require("@nestjs/swagger");
const jwt_auth_guard_1 = require("../../../../core/auth/guards/jwt-auth.guard");
const permission_guard_1 = require("../../../authorization/presentation/guards/permission.guard");
const current_user_guard_1 = require("../guards/current-user.guard");
const permission_decorator_1 = require("../../../authorization/presentation/decorators/permission.decorator");
const permission_constants_1 = require("../../../../common/constants/permission.constants");
const get_users_handler_1 = require("../../application/handlers/user/get-users.handler");
const get_user_handler_1 = require("../../application/handlers/user/get-user.handler");
const get_current_user_handler_1 = require("../../application/handlers/user/get-current-user.handler");
const enable_user_handler_1 = require("../../application/handlers/user/enable-user.handler");
const disable_user_handler_1 = require("../../application/handlers/user/disable-user.handler");
const delete_user_handler_1 = require("../../application/handlers/user/delete-user.handler");
const restore_user_handler_1 = require("../../application/handlers/user/restore-user.handler");
const update_user_handler_1 = require("../../application/handlers/user/update-user.handler");
let UsersController = class UsersController {
getUsersHandler;
getUserHandler;
getCurrentUserHandler;
enableUserHandler;
disableUserHandler;
deleteUserHandler;
restoreUserHandler;
updateUserHandler;
constructor(getUsersHandler, getUserHandler, getCurrentUserHandler, enableUserHandler, disableUserHandler, deleteUserHandler, restoreUserHandler, updateUserHandler) {
this.getUsersHandler = getUsersHandler;
this.getUserHandler = getUserHandler;
this.getCurrentUserHandler = getCurrentUserHandler;
this.enableUserHandler = enableUserHandler;
this.disableUserHandler = disableUserHandler;
this.deleteUserHandler = deleteUserHandler;
this.restoreUserHandler = restoreUserHandler;
this.updateUserHandler = updateUserHandler;
}
async findAll(query) {
const res = await this.getUsersHandler.execute(query);
return {
success: true,
data: res.data.map(u => u.toResponse ? u.toResponse() : u),
meta: { total: res.total },
};
}
async me(req) {
const user = await this.getCurrentUserHandler.execute(req.currentUser);
return { success: true, data: user.toResponse ? user.toResponse() : user, meta: {} };
}
async findOne(id) {
const user = await this.getUserHandler.execute(id);
return { success: true, data: user.toResponse ? user.toResponse() : user, meta: {} };
}
async enable(id) {
const updated = await this.enableUserHandler.execute(id);
return { success: true, data: updated.toResponse ? updated.toResponse() : updated, meta: {} };
}
async disable(id) {
const updated = await this.disableUserHandler.execute(id);
return { success: true, data: updated.toResponse ? updated.toResponse() : updated, meta: {} };
}
async update(id, body) {
const updated = await this.updateUserHandler.execute(id, body);
return { success: true, data: updated.toResponse ? updated.toResponse() : updated, meta: {} };
}
async remove(id) {
await this.deleteUserHandler.execute(id);
return { success: true, data: null, meta: {} };
}
async restore(id) {
const restored = await this.restoreUserHandler.execute(id);
return { success: true, data: restored.toResponse ? restored.toResponse() : restored, meta: {} };
}
};
exports.UsersController = UsersController;
__decorate([
(0, common_1.Get)(),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_READ),
(0, swagger_1.ApiOperation)({ summary: 'List users' }),
__param(0, (0, common_1.Query)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "findAll", null);
__decorate([
(0, common_1.Get)('me'),
(0, swagger_1.ApiOperation)({ summary: 'Get current user' }),
__param(0, (0, common_1.Req)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "me", null);
__decorate([
(0, common_1.Get)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_READ),
(0, swagger_1.ApiOperation)({ summary: 'Get user by id' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "findOne", null);
__decorate([
(0, common_1.Patch)(':id/enable'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Enable user' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "enable", null);
__decorate([
(0, common_1.Patch)(':id/disable'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Disable user' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "disable", null);
__decorate([
(0, common_1.Patch)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Update user profile' }),
__param(0, (0, common_1.Param)('id')),
__param(1, (0, common_1.Body)()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String, Object]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "update", null);
__decorate([
(0, common_1.Delete)(':id'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_DELETE),
(0, swagger_1.ApiOperation)({ summary: 'Soft delete user' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "remove", null);
__decorate([
(0, common_1.Post)(':id/restore'),
(0, permission_decorator_1.Permissions)(permission_constants_1.PermissionType.USER_UPDATE),
(0, swagger_1.ApiOperation)({ summary: 'Restore user' }),
__param(0, (0, common_1.Param)('id')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [String]),
__metadata("design:returntype", Promise)
], UsersController.prototype, "restore", null);
exports.UsersController = UsersController = __decorate([
(0, swagger_1.ApiTags)('Users'),
(0, common_1.Controller)('users'),
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, current_user_guard_1.CurrentUserGuard, permission_guard_1.PermissionGuard),
__metadata("design:paramtypes", [get_users_handler_1.GetUsersHandler,
get_user_handler_1.GetUserHandler,
get_current_user_handler_1.GetCurrentUserHandler,
enable_user_handler_1.EnableUserHandler,
disable_user_handler_1.DisableUserHandler,
delete_user_handler_1.DeleteUserHandler,
restore_user_handler_1.RestoreUserHandler,
update_user_handler_1.UpdateUserHandler])
], UsersController);
//# sourceMappingURL=users.controller.js.map
@@ -0,0 +1 @@
{"version":3,"file":"users.controller.js","sourceRoot":"","sources":["../../../../../src/modules/identity/presentation/controllers/users.controller.ts"],"names":[],"mappings":"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"}

Some files were not shown because too many files have changed in this diff Show More