Only show rules by namespace (#102)

This commit is contained in:
Arnaud D. Natali 2023-09-29 16:59:20 +02:00 committed by GitHub
commit 005210e201
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 16 deletions

View File

@ -53,7 +53,7 @@
"express": "^4.18.2",
"fp-ts": "^2.16.1",
"jsonwebtoken": "^9.0.0",
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.85",
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.86",
"module-alias": "^2.2.2",
"monocle-ts": "^2.3.13",
"multer": "^1.4.5-lts.1",

View File

@ -10,11 +10,12 @@ import authHandler from "@App/middlewares/AuthHandler";
import ruleHandler from "@App/middlewares/RulesHandler";
import officeRoleHandler from "@App/middlewares/OfficeMembershipHandlers/OfficeRoleHandler";
import roleHandler from "@App/middlewares/RolesHandler";
import RulesService from "@Services/admin/RulesService/RulesService";
@Controller()
@Service()
export default class OfficeRolesController extends ApiController {
constructor(private officeRolesService: OfficeRolesService) {
constructor(private officeRolesService: OfficeRolesService, private rulesService: RulesService) {
super();
}
@ -30,7 +31,7 @@ export default class OfficeRolesController extends ApiController {
query = JSON.parse(req.query["q"] as string);
}
if(req.query["search"] && typeof req.query["search"] === "string") {
if (req.query["search"] && typeof req.query["search"] === "string") {
const filter = req.query["search"];
query = {
where: {
@ -39,7 +40,7 @@ export default class OfficeRolesController extends ApiController {
mode: "insensitive",
},
},
}
};
}
const officeId: string = req.body.user.office_Id;
@ -108,6 +109,18 @@ export default class OfficeRolesController extends ApiController {
return;
}
if (req.body.rules) {
const allRules = await this.rulesService.get({
where: {
namespace: "notary",
},
});
req.body.rules = req.body.rules.filter((rule: any) => {
const ruleFound = allRules.find((r) => r.uid === rule.uid && r.namespace === "notary");
return ruleFound;
});
}
//init IOfficeRole resource with request body values
const officeRoleEntity = OfficeRole.hydrate<OfficeRole>(req.body);

View File

@ -26,6 +26,10 @@ export default class RulesController extends ApiController {
query = JSON.parse(req.query["q"] as string);
}
query.where = {
...query.where,
namespace: "notary",
};
//call service to get prisma entity
const rulesEntities = await this.rulesService.get(query);
@ -57,6 +61,11 @@ export default class RulesController extends ApiController {
query = JSON.parse(req.query["q"] as string);
}
query.where = {
...query.where,
namespace: "notary",
};
const ruleEntity = await this.rulesService.getByUid(uid, query);
if (!ruleEntity) {

View File

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "rules" ADD COLUMN "namespace" VARCHAR(255) NOT NULL DEFAULT 'notary';

View File

@ -299,7 +299,7 @@ model Rules {
updated_at DateTime? @updatedAt
role Roles[] @relation("RolesHasRules")
office_roles OfficeRoles[] @relation("OfficeRolesHasRules")
namespace String @db.VarChar(255) @default("notary")
@@map("rules")
}

View File

@ -527,228 +527,266 @@ export default async function main() {
label: "Lecture des utilisateurs",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET offices",
label: "Lecture des offices",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET customers",
label: "Lecture des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET deeds",
label: "Lecture des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET deed-types",
label: "Lecture des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET documents",
label: "Lecture des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET document-types",
label: "Lecture des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET files",
label: "Lecture des fichiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET folders",
label: "Lecture des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET roles",
label: "Lecture utilisateurs",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET rules",
label: "Lecture des droits",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET office-roles",
label: "Lecture des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST deeds",
label: "Création des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT deeds",
label: "Modification des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE deeds",
label: "Suppression des actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST folders",
label: "Création des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT folders",
label: "Modification des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE folders",
label: "Suppression des dossiers",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST documents",
label: "Création des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT documents",
label: "Modification des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE documents",
label: "Suppression des documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST customers",
label: "Création des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "PUT customers",
label: "Modification des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "DELETE customers",
label: "Suppression des clients",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST anchors",
label: "Ancrer un dossier",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "GET anchors",
label: "Vérifier l'ancrage un dossier",
created_at: new Date(),
updated_at: new Date(),
namespace: "notary",
},
{
name: "POST deed-types",
label: "Création des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT deed-types",
label: "Modification des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE deed-types",
label: "Suppression des types d'actes",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "POST document-types",
label: "Création des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT document-types",
label: "Modification des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE document-types",
label: "Suppression des types de documents",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "POST office-roles",
label: "Création des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT office-roles",
label: "Modification des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE office-roles",
label: "Suppression des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
},
{
name: "DELETE office-roles",
label: "Suppression des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "PUT users",
label: "Modification des utilisateurs",
created_at: new Date(),
updated_at: new Date(),
namespace: "admin",
},
{
name: "DELETE office-roles",
label: "Suppression des rôles d'office",
created_at: new Date(),
updated_at: new Date(),
namespace: "super-admin",
},
{
name: "PUT offices",
label: "Modification des offices",
created_at: new Date(),
updated_at: new Date(),
namespace: "super-admin",
},
];
@ -765,7 +803,7 @@ export default async function main() {
label: "Administrateur",
created_at: new Date(),
updated_at: new Date(),
rules: rules.slice(0, 35),
rules: rules.slice(0, 36),
},
{
name: "notary",
@ -779,7 +817,7 @@ export default async function main() {
label: "Utilisateur",
created_at: new Date(),
updated_at: new Date(),
rules: rules.slice(0,1),
rules: rules.slice(0, 1),
},
];
@ -1317,6 +1355,7 @@ export default async function main() {
data: {
name: rule.name,
label: rule.label,
namespace: rule.namespace,
},
});
rule.uid = ruleCreated.uid;

View File

@ -31,7 +31,8 @@ export default class RulesRepository extends BaseRepository {
const createArgs: Prisma.RulesCreateArgs = {
data: {
name: rule.name,
label: rule.label
label: rule.label,
namespace: rule.namespace,
},
};
@ -48,7 +49,7 @@ export default class RulesRepository extends BaseRepository {
},
data: {
name: rule.name,
label: rule.label
label: rule.label,
},
};