From 4c63525a6be72dacb8dc90afd4d69f401c0108c9 Mon Sep 17 00:00:00 2001 From: "Yassine R." Date: Tue, 9 Jul 2024 13:38:22 +0200 Subject: [PATCH 1/2] refactor(portail-usagers): refactor mon-domifa, add landing page --- .talismanrc | 6 +- packages/backend/src/_common/model/index.ts | 1 - .../STRUCTURE_PORTAIL_ATTRIBUTES.const.ts | 8 -- .../model/structure/constants/index.ts | 1 - .../services/usager/constants/index.ts | 2 +- .../usager/usagerRepository.service.ts | 5 +- .../const/USER_USAGER_ATTRIBUTES.const.ts} | 4 +- .../modules/portail-usagers/const/index.ts | 2 + .../portail-usagers-manager.controller.ts | 70 +++++++++++++++- .../src/modules/portail-usagers/dto/index.ts | 3 +- .../dto/structure-edit-portail-usager.dto.ts | 0 ... => update-portail-usagers-options.dto.ts} | 0 .../types}/PortailUsagerAuthPayload.type.ts | 0 .../types}/PortailUsagerStructure.type.ts | 0 .../types}/PortailUsagerUsager.type.ts | 2 +- .../portail-usagers/types}/index.ts | 0 .../controllers/structures.controller.ts | 43 +--------- packages/backend/src/structures/dto/index.ts | 2 +- packages/backend/src/usagers/dto/index.ts | 2 +- .../frontend/src/app/app-routing.module.ts | 10 ++- .../guards/can-edit-portail-usager.guard.ts | 36 -------- .../src/app/guards/can-edit-sms.guard.ts | 33 -------- packages/frontend/src/app/guards/index.ts | 2 - .../admin-portail-usagers-routing.module.ts | 20 +++++ .../admin-portail-usagers.module.ts | 30 +++++++ .../admin-portail-usagers-menu.component.css} | 0 .../admin-portail-usagers-menu.component.html | 64 ++++++++++++++ ...min-portail-usagers-menu.component.spec.ts | 22 +++++ .../admin-portail-usagers-menu.component.ts | 13 +++ .../manage-temp-messages.component.css | 0 .../manage-temp-messages.component.html | 20 +++++ .../manage-temp-messages.component.spec.ts | 22 +++++ .../manage-temp-messages.component.ts | 8 ++ .../portail-usagers-params.component.css | 0 .../portail-usagers-params.component.html} | 83 +++++++++++++------ .../portail-usagers-params.component.spec.ts} | 34 ++++---- .../portail-usagers-params.component.ts} | 70 +++++++--------- .../manage-portail-usagers.service.spec.ts | 17 ++++ .../manage-portail-usagers.service.ts | 26 ++++++ .../components/home/home.component.html | 2 +- .../components/navbar/navbar.component.html | 33 +++----- .../plan-site/plan-site.component.ts | 2 +- .../landing-page-portail.component.html | 53 +++++++++--- .../landing-page-portail.component.spec.ts | 3 +- .../landing-page-portail.component.ts | 6 +- .../structures/services/structure.service.ts | 16 ---- .../structures/structures-routing.module.ts | 14 +--- .../modules/structures/structures.module.ts | 2 - packages/frontend/src/assets/css/main.scss | 10 ++- packages/frontend/src/assets/files/news.json | 35 ++++++++ 50 files changed, 549 insertions(+), 288 deletions(-) delete mode 100644 packages/backend/src/_common/model/structure/constants/STRUCTURE_PORTAIL_ATTRIBUTES.const.ts rename packages/backend/src/{database/services/usager/constants/USAGER_PORTAIL_ATTRIBUTES.const.ts => modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const.ts} (68%) create mode 100644 packages/backend/src/modules/portail-usagers/const/index.ts rename packages/backend/src/{structures => modules/portail-usagers}/dto/structure-edit-portail-usager.dto.ts (100%) rename packages/backend/src/modules/portail-usagers/dto/{update-portail-usager-options.dto.ts => update-portail-usagers-options.dto.ts} (100%) rename packages/backend/src/{_common/model/_portail-usager => modules/portail-usagers/types}/PortailUsagerAuthPayload.type.ts (100%) rename packages/backend/src/{_common/model/_portail-usager => modules/portail-usagers/types}/PortailUsagerStructure.type.ts (100%) rename packages/backend/src/{_common/model/_portail-usager => modules/portail-usagers/types}/PortailUsagerUsager.type.ts (92%) rename packages/backend/src/{_common/model/_portail-usager => modules/portail-usagers/types}/index.ts (100%) delete mode 100644 packages/frontend/src/app/guards/can-edit-portail-usager.guard.ts delete mode 100644 packages/frontend/src/app/guards/can-edit-sms.guard.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers-routing.module.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers.module.ts rename packages/frontend/src/app/modules/{structures/components/structures-portail-usager-form/structures-portail-usager-form.component.scss => admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.css} (100%) create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.html create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.spec.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.css create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.html create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.spec.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.css rename packages/frontend/src/app/modules/{structures/components/structures-portail-usager-form/structures-portail-usager-form.component.html => admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.html} (61%) rename packages/frontend/src/app/modules/{structures/components/structures-portail-usager-form/structures-portail-usager-form.component.spec.ts => admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.spec.ts} (55%) rename packages/frontend/src/app/modules/{structures/components/structures-portail-usager-form/structures-portail-usager-form.component.ts => admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.ts} (51%) create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.spec.ts create mode 100644 packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.ts diff --git a/.talismanrc b/.talismanrc index 441393d1d0..290df18c1e 100644 --- a/.talismanrc +++ b/.talismanrc @@ -47,8 +47,12 @@ fileignoreconfig: checksum: fab1dab2ad003174730bbdc703d59af49e65db3297415c0a1ac98a95e9f64280 - filename: packages/backend/src/util/expressResponseExcelRenderer.service.ts checksum: 74fc4a9067af6f823ddcbbed150444cc1db78402ae265082a2114e64c0f459cb +- filename: packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.html + checksum: 6c8166fdecdf0d9ab56fb12390ca2ed5bd98c8ba91b6c6bc976cdf659dde9263 +- filename: packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.html + checksum: f5bc2bd3820b5f982b8d3c36360ed20764e408b4f59d65f470e503e66d1b3282 - filename: packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.html - checksum: 3d322a43adaf91648b9f7d42071e3e17d833648c9ac1f0579515a071ebf3fd2e + checksum: 8040e47846a6f36cbd66e06d7c92172f38fb854187dd61cdd08560ac7c1f3a81 - filename: packages/frontend/src/app/modules/structure-stats/components/reporting-form/reporting-form.component.ts checksum: 8570ed88e0e872bc32eac27d37abc1bf8198816dcb27427efb7b6f8e751582b0 - filename: packages/frontend/src/app/modules/structures/components/structures-custom-docs/structures-custom-docs.component.html diff --git a/packages/backend/src/_common/model/index.ts b/packages/backend/src/_common/model/index.ts index 53f00ada0b..17bc66147e 100644 --- a/packages/backend/src/_common/model/index.ts +++ b/packages/backend/src/_common/model/index.ts @@ -1,7 +1,6 @@ // @index('./*', f => `export * from '${f.path}'`) export * from "./_core"; export * from "./_portail-admin"; -export * from "./_portail-usager"; export * from "./app-log"; export * from "./contact-support"; export * from "./interaction"; diff --git a/packages/backend/src/_common/model/structure/constants/STRUCTURE_PORTAIL_ATTRIBUTES.const.ts b/packages/backend/src/_common/model/structure/constants/STRUCTURE_PORTAIL_ATTRIBUTES.const.ts deleted file mode 100644 index b65917568f..0000000000 --- a/packages/backend/src/_common/model/structure/constants/STRUCTURE_PORTAIL_ATTRIBUTES.const.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PortailUsagerStructure } from "../.."; - -export const STRUCTURE_PORTAIL_ATTRIBUTES: (keyof PortailUsagerStructure)[] = [ - "uuid", - "id", - "nom", - "ville", -]; diff --git a/packages/backend/src/_common/model/structure/constants/index.ts b/packages/backend/src/_common/model/structure/constants/index.ts index 1d2deea65a..1ac8aa45d2 100644 --- a/packages/backend/src/_common/model/structure/constants/index.ts +++ b/packages/backend/src/_common/model/structure/constants/index.ts @@ -1,4 +1,3 @@ //@index('./*', f => `export * from '${f.path}'`) export * from "./STRUCTURE_COMMON_ATTRIBUTES.const"; export * from "./STRUCTURE_LIGHT_ATTRIBUTES.const"; -export * from "./STRUCTURE_PORTAIL_ATTRIBUTES.const"; diff --git a/packages/backend/src/database/services/usager/constants/index.ts b/packages/backend/src/database/services/usager/constants/index.ts index d86cc79104..9afa00f1ec 100644 --- a/packages/backend/src/database/services/usager/constants/index.ts +++ b/packages/backend/src/database/services/usager/constants/index.ts @@ -1,3 +1,3 @@ // @index('./*', f => `export * from '${f.path}'`) export * from "./USAGER_LIGHT_ATTRIBUTES.const"; -export * from "./USAGER_PORTAIL_ATTRIBUTES.const"; +export * from "../../../../modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const"; diff --git a/packages/backend/src/database/services/usager/usagerRepository.service.ts b/packages/backend/src/database/services/usager/usagerRepository.service.ts index 1ebc81ce11..a4ac6be937 100644 --- a/packages/backend/src/database/services/usager/usagerRepository.service.ts +++ b/packages/backend/src/database/services/usager/usagerRepository.service.ts @@ -1,10 +1,11 @@ -import { USAGER_PORTAIL_ATTRIBUTES, myDataSource } from ".."; +import { myDataSource } from ".."; import { UsagerTable } from "../../entities"; import { joinSelectFields, pgRepository } from "../_postgres"; import { getDateForMonthInterval } from "../../../stats/services"; import { PortailUsagerPublic, Usager } from "@domifa/common"; +import { USER_USAGER_ATTRIBUTES } from "../../../modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const"; const baseRepository = pgRepository.get(UsagerTable); @@ -38,7 +39,7 @@ export async function getUserUsagerData({ where: { uuid: usagerUUID, }, - select: USAGER_PORTAIL_ATTRIBUTES, + select: USER_USAGER_ATTRIBUTES, }); } diff --git a/packages/backend/src/database/services/usager/constants/USAGER_PORTAIL_ATTRIBUTES.const.ts b/packages/backend/src/modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const.ts similarity index 68% rename from packages/backend/src/database/services/usager/constants/USAGER_PORTAIL_ATTRIBUTES.const.ts rename to packages/backend/src/modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const.ts index 52721508c7..95f00f19a9 100644 --- a/packages/backend/src/database/services/usager/constants/USAGER_PORTAIL_ATTRIBUTES.const.ts +++ b/packages/backend/src/modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const.ts @@ -1,6 +1,6 @@ -import { PortailUsagerUsager } from "../../../../_common/model"; +import { PortailUsagerUsager } from "../types"; -export const USAGER_PORTAIL_ATTRIBUTES: (keyof PortailUsagerUsager)[] = [ +export const USER_USAGER_ATTRIBUTES: (keyof PortailUsagerUsager)[] = [ "uuid", "ref", "customRef", diff --git a/packages/backend/src/modules/portail-usagers/const/index.ts b/packages/backend/src/modules/portail-usagers/const/index.ts new file mode 100644 index 0000000000..5d77972718 --- /dev/null +++ b/packages/backend/src/modules/portail-usagers/const/index.ts @@ -0,0 +1,2 @@ +//@index('./*', f => `export * from '${f.path}'`) +export * from "./USER_USAGER_ATTRIBUTES.const"; diff --git a/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts b/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts index 1a3845b033..e9fb7cdfd7 100644 --- a/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts +++ b/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts @@ -6,6 +6,7 @@ import { HttpStatus, Param, ParseIntPipe, + Patch, Post, Res, UseGuards, @@ -20,17 +21,22 @@ import { CurrentUser, } from "../../../../auth/decorators"; import { AppUserGuard, UsagerAccessGuard } from "../../../../auth/guards"; -import { usagerRepository, userUsagerRepository } from "../../../../database"; +import { + structureRepository, + usagerRepository, + userUsagerRepository, +} from "../../../../database"; import { userUsagerCreator, userUsagerUpdator, } from "../../../../users/services"; -import { appLogger } from "../../../../util"; -import { UpdatePortailUsagerOptionsDto } from "../../dto"; +import { appLogger, ExpressResponse } from "../../../../util"; import { Response } from "express"; import { AppLogsService } from "../../../app-logs/app-logs.service"; import { AuthGuard } from "@nestjs/passport"; import { ApiTags, ApiBearerAuth } from "@nestjs/swagger"; +import { StructureEditPortailUsagerDto } from "../../dto"; +import { UpdatePortailUsagerOptionsDto } from "../../dto/update-portail-usagers-options.dto"; @Controller("portail-usagers-manager") @ApiTags("portail-usagers-manager") @@ -39,6 +45,64 @@ import { ApiTags, ApiBearerAuth } from "@nestjs/swagger"; export class PortailUsagersManagerController { constructor(private readonly appLogsService: AppLogsService) {} + @ApiBearerAuth() + @AllowUserStructureRoles("admin") + @Patch("configure-structure") + public async toggleEnablePortailUsagerByStructure( + @CurrentUser() user: UserStructureAuthenticated, + @Body() structurePortailUsagerDto: StructureEditPortailUsagerDto, + @Res() res: ExpressResponse + ) { + const portailUsager = user.structure.portailUsager; + + if (!portailUsager.enabledByDomifa) { + return res + .status(HttpStatus.BAD_REQUEST) + .json({ message: "PORTAIL_NOT_ENABLED_BY_DOMIFA" }); + } + + try { + await structureRepository.update( + { id: user.structureId }, + { + portailUsager: { + enabledByDomifa: true, + enabledByStructure: structurePortailUsagerDto.enabledByStructure, + usagerLoginUpdateLastInteraction: + structurePortailUsagerDto.usagerLoginUpdateLastInteraction, + }, + } + ); + + if ( + user.structure.sms.enabledByStructure !== + structurePortailUsagerDto.enabledByStructure + ) { + const action = + structurePortailUsagerDto.enabledByStructure === true + ? "ENABLE_PORTAIL_BY_STRUCTURE" + : "DISABLE_PORTAIL_BY_STRUCTURE"; + + await this.appLogsService.create({ + userId: user._userId, + usagerRef: null, + structureId: user.structureId, + action, + }); + } + + const structure = await structureRepository.findOneBy({ + id: user.structureId, + }); + return res.status(HttpStatus.OK).json(structure); + } catch (e) { + appLogger.error("PORTAIL_UPDATE_FAIL", { error: e, sentry: true }); + return res + .status(HttpStatus.INTERNAL_SERVER_ERROR) + .json({ message: "PORTAIL_UPDATE_FAIL" }); + } + } + @UseGuards(UsagerAccessGuard) @AllowUserStructureRoles(...USER_STRUCTURE_ROLE_ALL) @Get(":usagerRef") diff --git a/packages/backend/src/modules/portail-usagers/dto/index.ts b/packages/backend/src/modules/portail-usagers/dto/index.ts index 42cc94cbbb..b588c75dc2 100644 --- a/packages/backend/src/modules/portail-usagers/dto/index.ts +++ b/packages/backend/src/modules/portail-usagers/dto/index.ts @@ -1,2 +1,3 @@ // @index('./*', f => `export * from '${f.path}'`) -export * from "./update-portail-usager-options.dto"; +export * from "./structure-edit-portail-usager.dto"; +export * from "./update-portail-usagers-options.dto"; diff --git a/packages/backend/src/structures/dto/structure-edit-portail-usager.dto.ts b/packages/backend/src/modules/portail-usagers/dto/structure-edit-portail-usager.dto.ts similarity index 100% rename from packages/backend/src/structures/dto/structure-edit-portail-usager.dto.ts rename to packages/backend/src/modules/portail-usagers/dto/structure-edit-portail-usager.dto.ts diff --git a/packages/backend/src/modules/portail-usagers/dto/update-portail-usager-options.dto.ts b/packages/backend/src/modules/portail-usagers/dto/update-portail-usagers-options.dto.ts similarity index 100% rename from packages/backend/src/modules/portail-usagers/dto/update-portail-usager-options.dto.ts rename to packages/backend/src/modules/portail-usagers/dto/update-portail-usagers-options.dto.ts diff --git a/packages/backend/src/_common/model/_portail-usager/PortailUsagerAuthPayload.type.ts b/packages/backend/src/modules/portail-usagers/types/PortailUsagerAuthPayload.type.ts similarity index 100% rename from packages/backend/src/_common/model/_portail-usager/PortailUsagerAuthPayload.type.ts rename to packages/backend/src/modules/portail-usagers/types/PortailUsagerAuthPayload.type.ts diff --git a/packages/backend/src/_common/model/_portail-usager/PortailUsagerStructure.type.ts b/packages/backend/src/modules/portail-usagers/types/PortailUsagerStructure.type.ts similarity index 100% rename from packages/backend/src/_common/model/_portail-usager/PortailUsagerStructure.type.ts rename to packages/backend/src/modules/portail-usagers/types/PortailUsagerStructure.type.ts diff --git a/packages/backend/src/_common/model/_portail-usager/PortailUsagerUsager.type.ts b/packages/backend/src/modules/portail-usagers/types/PortailUsagerUsager.type.ts similarity index 92% rename from packages/backend/src/_common/model/_portail-usager/PortailUsagerUsager.type.ts rename to packages/backend/src/modules/portail-usagers/types/PortailUsagerUsager.type.ts index 86ff0ed383..6ebb64e196 100644 --- a/packages/backend/src/_common/model/_portail-usager/PortailUsagerUsager.type.ts +++ b/packages/backend/src/modules/portail-usagers/types/PortailUsagerUsager.type.ts @@ -2,7 +2,7 @@ import { Usager } from "@domifa/common"; // PortailUsagerStructure: attributs publics (retournés au Portail Usager via UserStructureAuthenticated) export type PortailUsagerUsager = Pick< - Usager, // @see USAGER_PORTAIL_ATTRIBUTES + Usager, // @see USER_USAGER_ATTRIBUTES | "uuid" | "ref" | "customRef" diff --git a/packages/backend/src/_common/model/_portail-usager/index.ts b/packages/backend/src/modules/portail-usagers/types/index.ts similarity index 100% rename from packages/backend/src/_common/model/_portail-usager/index.ts rename to packages/backend/src/modules/portail-usagers/types/index.ts diff --git a/packages/backend/src/structures/controllers/structures.controller.ts b/packages/backend/src/structures/controllers/structures.controller.ts index 341b3d9174..ec5f257601 100644 --- a/packages/backend/src/structures/controllers/structures.controller.ts +++ b/packages/backend/src/structures/controllers/structures.controller.ts @@ -1,4 +1,3 @@ -import { appLogger } from "./../../util/AppLogger.service"; import { Body, Controller, @@ -19,7 +18,7 @@ import { UserStructureAuthenticated, USER_STRUCTURE_ROLE_ALL, } from "../../_common/model"; -import { StructureDto, StructureEditPortailUsagerDto } from "../dto"; +import { StructureDto } from "../dto"; import { StructureEditSmsDto } from "../dto/structure-edit-sms.dto"; import { resetUsagers } from "../services/structure-deletor.service"; @@ -52,46 +51,6 @@ export class StructuresController { private readonly fileManagerService: FileManagerService ) {} - @ApiBearerAuth() - @AllowUserStructureRoles("admin") - @Patch("portail-usager/configure-structure") - public async toggleEnablePortailUsagerByStructure( - @CurrentUser() user: UserStructureAuthenticated, - @Body() structurePortailUsagerDto: StructureEditPortailUsagerDto, - @Res() res: ExpressResponse - ) { - const portailUsager = user.structure.portailUsager; - - if (!portailUsager.enabledByDomifa) { - return res - .status(HttpStatus.BAD_REQUEST) - .json({ message: "PORTAIL_NOT_ENABLED_BY_DOMIFA" }); - } - - try { - await structureRepository.update( - { id: user.structureId }, - { - portailUsager: { - enabledByDomifa: true, - enabledByStructure: structurePortailUsagerDto.enabledByStructure, - usagerLoginUpdateLastInteraction: - structurePortailUsagerDto.usagerLoginUpdateLastInteraction, - }, - } - ); - const retour = await structureRepository.findOneBy({ - id: user.structureId, - }); - return res.status(HttpStatus.OK).json(retour); - } catch (e) { - appLogger.error("PORTAIL_UPDATE_FAIL", { error: e, sentry: true }); - return res - .status(HttpStatus.INTERNAL_SERVER_ERROR) - .json({ message: "PORTAIL_UPDATE_FAIL" }); - } - } - @ApiBearerAuth() @AllowUserStructureRoles("admin") @Patch() diff --git a/packages/backend/src/structures/dto/index.ts b/packages/backend/src/structures/dto/index.ts index daa7a9b9a6..eb505cf56a 100644 --- a/packages/backend/src/structures/dto/index.ts +++ b/packages/backend/src/structures/dto/index.ts @@ -1,8 +1,8 @@ //@index('./*', f => `export * from '${f.path}'`) export * from "./code-postal.dto"; +export * from "./schedule.dto"; export * from "./structure-adresse-courrier.dto"; export * from "./structure-doc.dto"; -export * from "./structure-edit-portail-usager.dto"; export * from "./structure-edit-sms.dto"; export * from "./structure-options.dto"; export * from "./structure-responsable.dto"; diff --git a/packages/backend/src/usagers/dto/index.ts b/packages/backend/src/usagers/dto/index.ts index f15664a1da..4b89f47d12 100644 --- a/packages/backend/src/usagers/dto/index.ts +++ b/packages/backend/src/usagers/dto/index.ts @@ -11,6 +11,6 @@ export * from "./procuration.dto"; export * from "./rdv.dto"; export * from "./search-usager.dto"; export * from "./transfert.dto"; -export * from "../../modules/portail-usagers/dto/update-portail-usager-options.dto"; +export * from "../../modules/portail-usagers/dto/update-portail-usagers-options.dto"; export * from "./UploadUsagerDoc.dto"; export * from "./UsagerAyantDroitDto"; diff --git a/packages/frontend/src/app/app-routing.module.ts b/packages/frontend/src/app/app-routing.module.ts index 5c5b59cb40..a5cfd8739d 100644 --- a/packages/frontend/src/app/app-routing.module.ts +++ b/packages/frontend/src/app/app-routing.module.ts @@ -15,7 +15,7 @@ import { NewsComponent } from "./modules/general/components/news/news.component" import { PlanSiteComponent } from "./modules/general/components/plan-site/plan-site.component"; import { CguResponsableComponent } from "./modules/general/components/static-pages/cgu-responsable/cgu-responsable.component"; import { RgaaComponent } from "./modules/general/components/static-pages/rgaa/rgaa.component"; -import { AuthGuard, FacteurGuard } from "./guards"; +import { AdminGuard, AuthGuard, FacteurGuard } from "./guards"; import { LandingPagePortailComponent } from "./modules/general/components/static-pages/landing-page-portail/landing-page-portail.component"; export const routes: Routes = [ @@ -79,6 +79,14 @@ export const routes: Routes = [ ), path: "import", }, + { + canActivate: [AuthGuard, AdminGuard], + loadChildren: () => + import( + "./modules/admin-portail-usagers/admin-portail-usagers.module" + ).then((m) => m.AdminPortailUsagersModule), + path: "portail-usagers", + }, { loadChildren: () => import("./modules/users/users.module").then((m) => m.UsersModule), diff --git a/packages/frontend/src/app/guards/can-edit-portail-usager.guard.ts b/packages/frontend/src/app/guards/can-edit-portail-usager.guard.ts deleted file mode 100644 index 4efde45255..0000000000 --- a/packages/frontend/src/app/guards/can-edit-portail-usager.guard.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Injectable } from "@angular/core"; -import { Router } from "@angular/router"; -import { CustomToastService } from "../modules/shared/services/custom-toast.service"; -import { Observable } from "rxjs"; -import { AuthService } from "../modules/shared/services/auth.service"; - -@Injectable({ providedIn: "root" }) -export class CanEditPortailUsagerGuard { - constructor( - private readonly router: Router, - private readonly authService: AuthService, - private readonly toastService: CustomToastService - ) {} - - public canActivate(): Observable | boolean { - if (this.authService.currentUserValue !== null) { - if ( - this.authService.currentUserValue.structure.portailUsager - .enabledByDomifa - ) { - return true; - } else { - this.toastService.error( - "L'accès au portail 'Mon DomiFa' n'est pas encore ouvert à votre structure" - ); - this.router.navigate(["/manage"]); - return false; - } - } - this.toastService.error( - "Vos droits ne vous permettent pas d'accéder à cette page" - ); - this.router.navigate(["/manage"]); - return false; - } -} diff --git a/packages/frontend/src/app/guards/can-edit-sms.guard.ts b/packages/frontend/src/app/guards/can-edit-sms.guard.ts deleted file mode 100644 index 66e12e481f..0000000000 --- a/packages/frontend/src/app/guards/can-edit-sms.guard.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Injectable } from "@angular/core"; -import { Router } from "@angular/router"; -import { Observable } from "rxjs"; -import { AuthService } from "../modules/shared/services/auth.service"; -import { CustomToastService } from "../modules/shared/services/custom-toast.service"; - -@Injectable({ providedIn: "root" }) -export class CanEditSmsGuard { - constructor( - private readonly router: Router, - private readonly authService: AuthService, - private readonly toastService: CustomToastService - ) {} - - public canActivate(): Observable | boolean { - if (this.authService.currentUserValue !== null) { - if (this.authService.currentUserValue.structure.sms.enabledByDomifa) { - return true; - } else { - this.toastService.error( - "L'accès aux SMS n'est pas encore ouvert à votre structure" - ); - this.router.navigate(["/manage"]); - return false; - } - } - this.toastService.error( - "Vos droits ne vous permettent pas d'accéder à cette page" - ); - this.router.navigate(["/manage"]); - return false; - } -} diff --git a/packages/frontend/src/app/guards/index.ts b/packages/frontend/src/app/guards/index.ts index ddb3debaa1..56d40d7a2b 100644 --- a/packages/frontend/src/app/guards/index.ts +++ b/packages/frontend/src/app/guards/index.ts @@ -1,8 +1,6 @@ // @index('./*', f => `export * from '${f.path}'`) export * from "./admin.guard"; export * from "./auth.guard"; -export * from "./can-edit-portail-usager.guard"; -export * from "./can-edit-sms.guard"; export * from "./facteur.guard"; export * from "./logged.guard"; export * from "./responsable.guard"; diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers-routing.module.ts b/packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers-routing.module.ts new file mode 100644 index 0000000000..b8c22af8db --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers-routing.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; +import { PortailUsagersParamsComponent } from "./components/portail-usagers-params/portail-usagers-params.component"; + +const routes: Routes = [ + { + path: "", + component: PortailUsagersParamsComponent, + }, + { + path: ":section", + component: PortailUsagersParamsComponent, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class AdminPortailUsagersRoutingModule {} diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers.module.ts b/packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers.module.ts new file mode 100644 index 0000000000..6fec5b23ef --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/admin-portail-usagers.module.ts @@ -0,0 +1,30 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { AdminPortailUsagersRoutingModule } from "./admin-portail-usagers-routing.module"; +import { ManageTempMessagesComponent } from "./components/manage-temp-messages/manage-temp-messages.component"; +import { HttpClientModule } from "@angular/common/http"; +import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; +import { GeneralModule } from "../general/general.module"; +import { SharedModule } from "../shared/shared.module"; +import { AdminPortailUsagersMenuComponent } from "./components/admin-portail-usagers-menu/admin-portail-usagers-menu.component"; +import { PortailUsagersParamsComponent } from "./components/portail-usagers-params/portail-usagers-params.component"; + +@NgModule({ + declarations: [ + ManageTempMessagesComponent, + AdminPortailUsagersMenuComponent, + PortailUsagersParamsComponent, + ], + imports: [ + CommonModule, + AdminPortailUsagersRoutingModule, + FormsModule, + HttpClientModule, + NgbModule, + ReactiveFormsModule, + SharedModule, + GeneralModule, + ], +}) +export class AdminPortailUsagersModule {} diff --git a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.scss b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.css similarity index 100% rename from packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.scss rename to packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.css diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.html b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.html new file mode 100644 index 0000000000..fb9dff3b88 --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.html @@ -0,0 +1,64 @@ + diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.spec.ts b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.spec.ts new file mode 100644 index 0000000000..cf5d8b94fa --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { AdminPortailUsagersMenuComponent } from "./admin-portail-usagers-menu.component"; + +describe("AdminPortailUsagersMenuComponent", () => { + let component: AdminPortailUsagersMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [AdminPortailUsagersMenuComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(AdminPortailUsagersMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.ts b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.ts new file mode 100644 index 0000000000..7663268673 --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/admin-portail-usagers-menu/admin-portail-usagers-menu.component.ts @@ -0,0 +1,13 @@ +import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { UserStructure } from "@domifa/common"; + +@Component({ + selector: "app-admin-portail-usagers-menu", + templateUrl: "./admin-portail-usagers-menu.component.html", + styleUrls: ["./admin-portail-usagers-menu.component.css"], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class AdminPortailUsagersMenuComponent { + @Input() public section: "" | "parametres" | "informations-temporaires"; + @Input() public me!: UserStructure; +} diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.css b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.html b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.html new file mode 100644 index 0000000000..ed44808c27 --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.html @@ -0,0 +1,20 @@ +
+
+
+
+

Le portail Mon DomiFa, consulter son courrier en ligne

+
+ +
+
+
diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.spec.ts b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.spec.ts new file mode 100644 index 0000000000..fa2de8c1a6 --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { ManageTempMessagesComponent } from "./manage-temp-messages.component"; + +describe("ManageTempMessagesComponent", () => { + let component: ManageTempMessagesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ManageTempMessagesComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(ManageTempMessagesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.ts b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.ts new file mode 100644 index 0000000000..a41c545973 --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/manage-temp-messages/manage-temp-messages.component.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: "app-manage-temp-messages", + templateUrl: "./manage-temp-messages.component.html", + styleUrls: ["./manage-temp-messages.component.css"], +}) +export class ManageTempMessagesComponent {} diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.css b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.html b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.html similarity index 61% rename from packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.html rename to packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.html index 2b688c5ddd..5b5b9f4401 100644 --- a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.html +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.html @@ -1,35 +1,16 @@ -
-
-
-
-

- Paramètres d'accès au portail usager pour votre structure -

-
- -
-
-
+ -
+

@@ -39,6 +20,54 @@

+
+
+
+ + Activer l'accès au portail usager pour les domiciliés + +
+
+
+ + + +
+
+
+
diff --git a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.spec.ts b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.spec.ts similarity index 55% rename from packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.spec.ts rename to packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.spec.ts index 84cb912b2c..ce5d7a6df2 100644 --- a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.spec.ts +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.spec.ts @@ -1,22 +1,23 @@ -import { MockAuthService } from "./../../../../../_common/mocks/AuthServiceMock"; +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { PortailUsagersParamsComponent } from "./portail-usagers-params.component"; import { APP_BASE_HREF } from "@angular/common"; import { HttpClientTestingModule } from "@angular/common/http/testing"; import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; -import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; -import { FormsModule, ReactiveFormsModule } from "@angular/forms"; +import { ReactiveFormsModule, FormsModule } from "@angular/forms"; import { RouterTestingModule } from "@angular/router/testing"; import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; -import { USER_STRUCTURE_MOCK } from "../../../../../_common/mocks"; +import { + MockAuthService, + USER_STRUCTURE_MOCK, +} from "../../../../../_common/mocks"; +import { AuthService } from "../../../shared/services"; -import { StructuresPortailUsagerFormComponent } from "./structures-portail-usager-form.component"; -import { AuthService } from "../../../shared/services/auth.service"; +describe("PortailUsagersParamsComponent", () => { + let component: PortailUsagersParamsComponent; + let fixture: ComponentFixture; -describe("StructuresPortailUsagerFormComponent", () => { - let component: StructuresPortailUsagerFormComponent; - let fixture: ComponentFixture; - - beforeEach(waitForAsync(() => { + beforeEach(async () => { TestBed.configureTestingModule({ imports: [ NgbModule, @@ -30,12 +31,17 @@ describe("StructuresPortailUsagerFormComponent", () => { { provide: AuthService, useClass: MockAuthService }, ], schemas: [CUSTOM_ELEMENTS_SCHEMA], - declarations: [StructuresPortailUsagerFormComponent], + + declarations: [PortailUsagersParamsComponent], }).compileComponents(); - })); + + fixture = TestBed.createComponent(PortailUsagersParamsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); beforeEach(() => { - fixture = TestBed.createComponent(StructuresPortailUsagerFormComponent); + fixture = TestBed.createComponent(PortailUsagersParamsComponent); component = fixture.componentInstance; component.me = USER_STRUCTURE_MOCK; component.me.structure = USER_STRUCTURE_MOCK.structure; diff --git a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.ts b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.ts similarity index 51% rename from packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.ts rename to packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.ts index 03dd26891f..dda37a5de9 100644 --- a/packages/frontend/src/app/modules/structures/components/structures-portail-usager-form/structures-portail-usager-form.component.ts +++ b/packages/frontend/src/app/modules/admin-portail-usagers/components/portail-usagers-params/portail-usagers-params.component.ts @@ -1,33 +1,35 @@ import { Component, OnDestroy, OnInit } from "@angular/core"; -import { Subscription } from "rxjs"; - -import { CustomToastService } from "src/app/modules/shared/services/custom-toast.service"; -import { AuthService } from "../../../shared/services/auth.service"; -import { StructureService } from "../../services/structure.service"; import { Title } from "@angular/platform-browser"; - import { UserStructure, StructureCommon } from "@domifa/common"; +import { Subscription } from "rxjs"; +import { CustomToastService, AuthService } from "../../../shared/services"; +import { ManagePortailUsagersService } from "../../services/manage-portail-usagers.service"; +import { ActivatedRoute, Router } from "@angular/router"; +import { StructureCommonWeb } from "../../../structures/classes"; @Component({ - selector: "app-structures-portail-usager-form", - templateUrl: "./structures-portail-usager-form.component.html", - styleUrls: ["./structures-portail-usager-form.component.scss"], + selector: "app-portail-usagers-params", + templateUrl: "./portail-usagers-params.component.html", + styleUrls: ["./portail-usagers-params.component.css"], }) -export class StructuresPortailUsagerFormComponent implements OnInit, OnDestroy { +export class PortailUsagersParamsComponent implements OnInit, OnDestroy { public me!: UserStructure | null; public structure!: StructureCommon; public loading: boolean; private subscription = new Subscription(); + public section: "" | "parametres" | "informations-temporaires" = ""; constructor( - private readonly structureService: StructureService, + private readonly managePortailUsagersService: ManagePortailUsagersService, private readonly toastService: CustomToastService, private readonly authService: AuthService, - private readonly titleService: Title + private readonly titleService: Title, + private readonly route: ActivatedRoute, + private readonly router: Router ) { this.loading = false; - this.titleService.setTitle("Modifier le portail Mon DomiFa"); + this.titleService.setTitle("Paramètres du portail Mon DomiFa"); } public ngOnInit(): void { @@ -35,45 +37,35 @@ export class StructuresPortailUsagerFormComponent implements OnInit, OnDestroy { if (this.me) { this.structure = this.me.structure; } + const section = this.route.snapshot.params?.section ?? ""; + + if (section !== "" && section !== "parametres") { + this.toastService.error("La page recherchée n'existe pas"); + this.router.navigate(["404"]); + return; + } + this.section = section; } public activatePortail() { - this.subscription.add( - this.structureService - .patchPortailUsagerParams({ - enabledByStructure: true, - usagerLoginUpdateLastInteraction: true, - }) - .subscribe({ - next: () => { - this.loading = false; - this.toastService.success("Portail Mon DomiFa activé avec succès"); - }, - error: () => { - this.loading = false; - this.toastService.error( - "Impossible de mettre à jour les paramètres" - ); - }, - }) - ); + this.structure.portailUsager.enabledByStructure = true; + this.structure.portailUsager.usagerLoginUpdateLastInteraction = true; + this.submitStructurePortailForm(); } - public submitStructurePortailForm() { - this.loading = true; - if (this.structure.portailUsager.enabledByStructure === false) { - this.structure.portailUsager.usagerLoginUpdateLastInteraction = false; - } + public submitStructurePortailForm() { this.subscription.add( - this.structureService + this.managePortailUsagersService .patchPortailUsagerParams({ enabledByStructure: this.structure.portailUsager.enabledByStructure, usagerLoginUpdateLastInteraction: this.structure.portailUsager.usagerLoginUpdateLastInteraction, }) .subscribe({ - next: () => { + next: (structure: StructureCommonWeb) => { this.loading = false; + this.me.structure = structure; + this.toastService.success( "Paramètres du portail usager mis à jour avec succès" ); diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.spec.ts b/packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.spec.ts new file mode 100644 index 0000000000..32631e9f55 --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from "@angular/core/testing"; + +import { ManagePortailUsagersService } from "./manage-portail-usagers.service"; +import { HttpClientTestingModule } from "@angular/common/http/testing"; + +describe("ManagePortailUsagersService", () => { + let service: ManagePortailUsagersService; + + beforeEach(() => { + TestBed.configureTestingModule({ imports: [HttpClientTestingModule] }); + service = TestBed.inject(ManagePortailUsagersService); + }); + + it("should be created", () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.ts b/packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.ts new file mode 100644 index 0000000000..ad0360824b --- /dev/null +++ b/packages/frontend/src/app/modules/admin-portail-usagers/services/manage-portail-usagers.service.ts @@ -0,0 +1,26 @@ +import { HttpClient } from "@angular/common/http"; +import { Injectable } from "@angular/core"; +import { StructureCommon } from "@domifa/common"; +import { Observable, map } from "rxjs"; +import { environment } from "../../../../environments/environment"; +import { StructureCommonWeb } from "../../structures/classes"; + +@Injectable({ + providedIn: "root", +}) +export class ManagePortailUsagersService { + private endPoint = `${environment.apiUrl}portail-usagers-manager/configure-structure`; + + constructor(private readonly http: HttpClient) {} + + public patchPortailUsagerParams(formData: { + enabledByStructure: boolean; + usagerLoginUpdateLastInteraction: boolean; + }): Observable { + return this.http.patch(this.endPoint, formData).pipe( + map((apiResponse: StructureCommon) => { + return new StructureCommonWeb(apiResponse); + }) + ); + } +} diff --git a/packages/frontend/src/app/modules/general/components/home/home.component.html b/packages/frontend/src/app/modules/general/components/home/home.component.html index 590e8cfeb6..ad1afb7d30 100644 --- a/packages/frontend/src/app/modules/general/components/home/home.component.html +++ b/packages/frontend/src/app/modules/general/components/home/home.component.html @@ -13,7 +13,7 @@

routerLink="/structures/inscription" class="btn btn-white-primary" (click)=" - matomo.trackEvent('HOME', 'HP_Découvrir_Plateforme', 'null', 1) + matomo.trackEvent('HOME', 'INSCRIRE_MA_STRUCTURE', 'null', 1) " > Inscrire ma structure sur DomiFa → diff --git a/packages/frontend/src/app/modules/general/components/navbar/navbar.component.html b/packages/frontend/src/app/modules/general/components/navbar/navbar.component.html index 08797e6988..ecf0610393 100644 --- a/packages/frontend/src/app/modules/general/components/navbar/navbar.component.html +++ b/packages/frontend/src/app/modules/general/components/navbar/navbar.component.html @@ -91,18 +91,7 @@ > En savoir plus - + Me connecter Domiciliés @@ -272,6 +253,11 @@ [icon]="['fas', 'sms']" > Gérer l'envoi des SMS + À activer - Gérer le portail domiciliés + Gérer le portail domicilié + À activer +
@@ -14,7 +37,7 @@

Vérifier son courrier sans se déplacer !



- Télécharger le guide + Consulter le guide
@@ -91,7 +112,7 @@

Favoriser l’autonomie des domiciliés et réduire les radiations

- Télécharger le guide + Consulter le guide diff --git a/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.spec.ts b/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.spec.ts index be02c9e72d..cb79317454 100644 --- a/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.spec.ts +++ b/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.spec.ts @@ -5,6 +5,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { RouterTestingModule } from "@angular/router/testing"; import { APP_BASE_HREF } from "@angular/common"; import { NoopAnimationsModule } from "@angular/platform-browser/animations"; +import { MATOMO_INJECTORS } from "../../../../../shared"; describe("LandingPagePortailComponent", () => { let component: LandingPagePortailComponent; @@ -13,7 +14,7 @@ describe("LandingPagePortailComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [LandingPagePortailComponent], - imports: [RouterTestingModule, NoopAnimationsModule], + imports: [RouterTestingModule, NoopAnimationsModule, ...MATOMO_INJECTORS], providers: [{ provide: APP_BASE_HREF, useValue: "/" }], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); diff --git a/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.ts b/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.ts index 4eac2270ef..32fd448586 100644 --- a/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.ts +++ b/packages/frontend/src/app/modules/general/components/static-pages/landing-page-portail/landing-page-portail.component.ts @@ -1,5 +1,6 @@ import { Component, EventEmitter, Input, Output } from "@angular/core"; import { fadeIn } from "../../../../../shared"; +import { MatomoTracker } from "ngx-matomo-client"; @Component({ animations: [fadeIn], @@ -8,6 +9,9 @@ import { fadeIn } from "../../../../../shared"; styleUrls: ["./landing-page-portail.component.scss"], }) export class LandingPagePortailComponent { - @Input() public isLandingPage: boolean; + @Input() public isLandingPage: boolean = true; + @Input() public displayMenu: boolean = true; @Output() public activatePortail = new EventEmitter(); + + constructor(protected readonly matomo: MatomoTracker) {} } diff --git a/packages/frontend/src/app/modules/structures/services/structure.service.ts b/packages/frontend/src/app/modules/structures/services/structure.service.ts index c5d432c83f..193f6d90cd 100644 --- a/packages/frontend/src/app/modules/structures/services/structure.service.ts +++ b/packages/frontend/src/app/modules/structures/services/structure.service.ts @@ -86,22 +86,6 @@ export class StructureService { ); } - public patchPortailUsagerParams(formData: { - enabledByStructure: boolean; - usagerLoginUpdateLastInteraction: boolean; - }): Observable { - return this.http - .patch( - environment.apiUrl + "structures/portail-usager/configure-structure", - formData - ) - .pipe( - map((response) => { - return new StructureCommonWeb(response); - }) - ); - } - public validateEmail(email: string): Observable { return this.http.post(`${this.endPoint}/validate-email`, { email, diff --git a/packages/frontend/src/app/modules/structures/structures-routing.module.ts b/packages/frontend/src/app/modules/structures/structures-routing.module.ts index c0005d8aa6..dc92bcd422 100644 --- a/packages/frontend/src/app/modules/structures/structures-routing.module.ts +++ b/packages/frontend/src/app/modules/structures/structures-routing.module.ts @@ -1,17 +1,10 @@ import { ResponsableGuard } from "../../guards/responsable.guard"; import { NgModule } from "@angular/core"; import { RouterModule, Routes } from "@angular/router"; -import { - AdminGuard, - AuthGuard, - CanEditPortailUsagerGuard, - CanEditSmsGuard, - LoggedGuard, -} from "../../guards"; +import { AdminGuard, AuthGuard, LoggedGuard } from "../../guards"; import { StructuresCustomDocsComponent } from "./components/structures-custom-docs/structures-custom-docs.component"; import { StructuresEditComponent } from "./components/structures-edit/structures-edit.component"; import { StructuresFormComponent } from "./components/structures-form/structures-form.component"; -import { StructuresPortailUsagerFormComponent } from "./components/structures-portail-usager-form/structures-portail-usager-form.component"; import { StructuresSearchComponent } from "./components/structures-search/structures-search.component"; import { StructuresSmsFormComponent } from "./components/structures-sms-form/structures-sms-form.component"; @@ -32,7 +25,7 @@ const routes: Routes = [ component: StructuresSearchComponent, }, { - canActivate: [AuthGuard, AdminGuard, CanEditSmsGuard], + canActivate: [AuthGuard, AdminGuard], path: "sms", component: StructuresSmsFormComponent, }, @@ -42,9 +35,8 @@ const routes: Routes = [ component: StructuresEditComponent, }, { - canActivate: [AuthGuard, AdminGuard, CanEditPortailUsagerGuard], path: "portail-usager", - component: StructuresPortailUsagerFormComponent, + redirectTo: "/portail-usagers", }, ]; diff --git a/packages/frontend/src/app/modules/structures/structures.module.ts b/packages/frontend/src/app/modules/structures/structures.module.ts index 3dc5e3db3b..59e362b961 100644 --- a/packages/frontend/src/app/modules/structures/structures.module.ts +++ b/packages/frontend/src/app/modules/structures/structures.module.ts @@ -13,7 +13,6 @@ import { StructuresCustomDocsTableComponent } from "./components/structures-cust import { StructuresCustomDocsComponent } from "./components/structures-custom-docs/structures-custom-docs.component"; import { StructuresEditComponent } from "./components/structures-edit/structures-edit.component"; import { StructuresFormComponent } from "./components/structures-form/structures-form.component"; -import { StructuresPortailUsagerFormComponent } from "./components/structures-portail-usager-form/structures-portail-usager-form.component"; import { StructuresSearchComponent } from "./components/structures-search/structures-search.component"; import { StructuresSmsFormComponent } from "./components/structures-sms-form/structures-sms-form.component"; import { StructuresUploadDocsComponent } from "./components/structures-upload-docs/structures-upload-docs.component"; @@ -29,7 +28,6 @@ import { GeneralModule } from "../general/general.module"; StructureEditFormComponent, StructuresUploadDocsComponent, StructuresSmsFormComponent, - StructuresPortailUsagerFormComponent, RegisterUserComponent, StructuresCustomDocsComponent, StructuresCustomDocsTableComponent, diff --git a/packages/frontend/src/assets/css/main.scss b/packages/frontend/src/assets/css/main.scss index 54fde21f4c..4fe9783a5c 100644 --- a/packages/frontend/src/assets/css/main.scss +++ b/packages/frontend/src/assets/css/main.scss @@ -230,12 +230,14 @@ legend { #statut-selector { box-shadow: 0 1px 3px rgba(50, 66, 124, 0.1); - .col:first-child { - border-radius: 5px 0 0 0; + .col:first-child, + [class*="col-"]:first-child { + border-radius: 5px 0 0 0 !important; } - .col:last-child { - border-radius: 0 5px 0 0; + .col:last-child, + [class*="col-"]:last-child { + border-radius: 0 5px 0 0 !important; } button, diff --git a/packages/frontend/src/assets/files/news.json b/packages/frontend/src/assets/files/news.json index 67726aaedd..d3a0b5f0f5 100644 --- a/packages/frontend/src/assets/files/news.json +++ b/packages/frontend/src/assets/files/news.json @@ -1,4 +1,39 @@ [ + { + "date": "2024-07-08", + "description": "Nouveautés et améliorations diverses sur DomiFa", + "content": [ + { + "type": "new", + "categorie": "Activation du portail domicilié Mon DomiFa au niveau de la structure", + "message": [ + "Une nouvelle page d'activation du portail domicilié est disponible sur le lien suivant et vous donne davantage d'informations sur le contenu du portal : https://domifa.fabrique.social.gouv.fr/structures/portail-usager" + ] + }, + { + "type": "new", + "categorie": "Activation du portail domicilié Mon DomiFa dans le dossiers domiciliés", + "message": [ + "Un nouvel onglet 'SMS et Mon DomiFa' a été créé dans les dossiers domiciliés afin d'apporter plus d'informations sur ces deux fonctionnalités (activation du compte par le domicilié, identifiant de connexion au portail, date de dernière connexion)" + ] + }, + { + "type": "bug", + "categorie": "Export global des données", + "message": [ + "À la demande des structures, certaines informations ont été de nouveau ajoutées dans l'export global des domiciliés (ID personnalisés, usagers ayant réalisés une décision sur un dossier, commentaires, etc.)" + ] + }, + { + "type": "bug", + "categorie": "Documents personnalisés", + "message": [ + "Une nouvelle version du guide pour l'ajout des documents personnalisés est disponible afin de vous accompagner dans l'utilisation de cette fonctionnalité.", + "L'identifiant de connexion au portail domicilié a été ajouté à la liste des champs paramétrables et peut être ajouté dans vos documents personnalisés tel que des cartes domiciliés." + ] + } + ] + }, { "date": "2024-06-24", "description": "Des nouveautés dans les statistiques et l'export", From 3f672954fe22a699799466e41d21f2fc0e113d08 Mon Sep 17 00:00:00 2001 From: "Yassine R." Date: Tue, 9 Jul 2024 13:56:35 +0200 Subject: [PATCH 2/2] fix(backend): fix imports paths --- .../src/database/services/usager/constants/index.ts | 1 - .../database/services/usager/usagerRepository.service.ts | 7 +++---- .../portail-usagers-manager.controller.ts | 6 ++++-- packages/backend/src/usagers/dto/index.ts | 3 +-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/backend/src/database/services/usager/constants/index.ts b/packages/backend/src/database/services/usager/constants/index.ts index 9afa00f1ec..6c3a1a7cff 100644 --- a/packages/backend/src/database/services/usager/constants/index.ts +++ b/packages/backend/src/database/services/usager/constants/index.ts @@ -1,3 +1,2 @@ // @index('./*', f => `export * from '${f.path}'`) export * from "./USAGER_LIGHT_ATTRIBUTES.const"; -export * from "../../../../modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const"; diff --git a/packages/backend/src/database/services/usager/usagerRepository.service.ts b/packages/backend/src/database/services/usager/usagerRepository.service.ts index a4ac6be937..708cfa21b6 100644 --- a/packages/backend/src/database/services/usager/usagerRepository.service.ts +++ b/packages/backend/src/database/services/usager/usagerRepository.service.ts @@ -1,11 +1,10 @@ -import { myDataSource } from ".."; +import { PortailUsagerPublic, Usager } from "@domifa/common"; +import { myDataSource } from ".."; import { UsagerTable } from "../../entities"; import { joinSelectFields, pgRepository } from "../_postgres"; - import { getDateForMonthInterval } from "../../../stats/services"; -import { PortailUsagerPublic, Usager } from "@domifa/common"; -import { USER_USAGER_ATTRIBUTES } from "../../../modules/portail-usagers/const/USER_USAGER_ATTRIBUTES.const"; +import { USER_USAGER_ATTRIBUTES } from "../../../modules/portail-usagers/const"; const baseRepository = pgRepository.get(UsagerTable); diff --git a/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts b/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts index e9fb7cdfd7..04f05c93e3 100644 --- a/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts +++ b/packages/backend/src/modules/portail-usagers/controllers/portail-usagers-manager/portail-usagers-manager.controller.ts @@ -35,8 +35,10 @@ import { Response } from "express"; import { AppLogsService } from "../../../app-logs/app-logs.service"; import { AuthGuard } from "@nestjs/passport"; import { ApiTags, ApiBearerAuth } from "@nestjs/swagger"; -import { StructureEditPortailUsagerDto } from "../../dto"; -import { UpdatePortailUsagerOptionsDto } from "../../dto/update-portail-usagers-options.dto"; +import { + StructureEditPortailUsagerDto, + UpdatePortailUsagerOptionsDto, +} from "../../dto"; @Controller("portail-usagers-manager") @ApiTags("portail-usagers-manager") diff --git a/packages/backend/src/usagers/dto/index.ts b/packages/backend/src/usagers/dto/index.ts index 4b89f47d12..2c36b70a17 100644 --- a/packages/backend/src/usagers/dto/index.ts +++ b/packages/backend/src/usagers/dto/index.ts @@ -1,16 +1,15 @@ // @index('./*', f => `export * from '${f.path}'`) export * from "./check-duplicate-usager-ref.dto"; export * from "./check-duplicate-usager.dto"; +export * from "./contact-details.dto"; export * from "./create-note.dto"; export * from "./create-usager.dto"; export * from "./decision.dto"; export * from "./entretien.dto"; -export * from "./contact-details.dto"; export * from "./pagination"; export * from "./procuration.dto"; export * from "./rdv.dto"; export * from "./search-usager.dto"; export * from "./transfert.dto"; -export * from "../../modules/portail-usagers/dto/update-portail-usagers-options.dto"; export * from "./UploadUsagerDoc.dto"; export * from "./UsagerAyantDroitDto";