From c597369baaa174fd6f0cd4c684871e06a6315c4a Mon Sep 17 00:00:00 2001 From: niladic Date: Mon, 10 Feb 2025 16:49:36 +0100 Subject: [PATCH] handle user without groups case --- app/controllers/ApplicationController.scala | 6 ++++-- app/models/Authorization.scala | 3 +++ app/views/application.scala | 5 ++++- app/views/createApplication.scala.html | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/controllers/ApplicationController.scala b/app/controllers/ApplicationController.scala index e73676441..7eafb73db 100644 --- a/app/controllers/ApplicationController.scala +++ b/app/controllers/ApplicationController.scala @@ -149,7 +149,8 @@ case class ApplicationController @Inject() ( rights: Authorization.UserRights, currentUserGroups: List[UserGroup] ): Future[(List[UserGroup], List[User], List[User])] = { - val hasFranceServicesAccess = currentUserGroups.exists(_.isInFranceServicesNetwork) + val hasFranceServicesAccess = + Authorization.hasAccessToFranceServicesNetwork(currentUserGroups)(rights) val groupsOfAreaFuture = userGroupService.byArea(areaId, excludeFranceServicesNetwork = !hasFranceServicesAccess) groupsOfAreaFuture.map { groupsOfArea => @@ -377,7 +378,8 @@ case class ApplicationController @Inject() ( infoName.trim -> infoValue.trim } - val isInFranceServicesNetwork = creatorGroup.exists(_.isInFranceServicesNetwork) + val isInFranceServicesNetwork = Authorization + .hasAccessToFranceServicesNetwork(creatorGroup.toList)(request.rights) val application = Application( applicationId, Time.nowParis(), diff --git a/app/models/Authorization.scala b/app/models/Authorization.scala index 298424b31..2808cdff0 100644 --- a/app/models/Authorization.scala +++ b/app/models/Authorization.scala @@ -208,6 +208,9 @@ object Authorization { def canSeeStats: Check = atLeastOneIsAuthorized(isAdmin, isAreaManager, isManager, isObserver) + def hasAccessToFranceServicesNetwork(userGroups: List[UserGroup]): Check = + _ => userGroups.isEmpty || userGroups.exists(_.isInFranceServicesNetwork) + // // Authorizations concerning User/UserGroup // diff --git a/app/views/application.scala b/app/views/application.scala index d40f0d01c..2b0628035 100644 --- a/app/views/application.scala +++ b/app/views/application.scala @@ -549,7 +549,10 @@ object application { readonly := true, value := selectedArea.id.toString ), - if (currentUser.admin || userGroups.exists(group => group.isInFranceServicesNetwork)) { + if ( + currentUser.admin || Authorization + .hasAccessToFranceServicesNetwork(userGroups)(currentUserRights) + ) { div( "Territoire concerné : ", views.helpers diff --git a/app/views/createApplication.scala.html b/app/views/createApplication.scala.html index 4ee2a1fdd..1f8a17b88 100644 --- a/app/views/createApplication.scala.html +++ b/app/views/createApplication.scala.html @@ -32,7 +32,7 @@

Nouvelle demande

* sont obligatoires - @if(userGroups.exists(group => group.isInFranceServicesNetwork)) { + @if(Authorization.hasAccessToFranceServicesNetwork(userGroups)(currentUserRights)) { @if(mainInfos.config.featureCanSendApplicationsAnywhere) {
Territoire concerné