@@ -2103,6 +2103,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
21032103 || classeApiMethode .contains (i18nGlobale .getString (I18n .var_PageUtilisateur ))
21042104 || classeApiMethode .contains (i18nGlobale .getString (I18n .var_Telechargement ))
21052105 ) {
2106+ // EditPage, DisplayPage, UserPage, Download
21062107 l ();
21072108 tl (1 , "@Override" );
21082109 t (1 , "public void " , classeApiOperationIdMethode , "(" );
@@ -2137,7 +2138,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
21372138 tl (4 , "form.add(\" permission\" , String.format(\" %s#%s\" , " , classeNomSimple , "." , i18nGlobale .getString (I18n .var_CLASSE_AUTH_RESSOURCE ), ", \" " , classeAuthPortee , "\" ));" );
21382139 }
21392140 tl (4 , "if(" , classeVarId , " != null)" );
2140- if (classeAuthRessource == null ) {
2141+ if (classeAuthRessource == null || ! classeRessourcesAutorisation . contains ( String . format ( "%s-%s" , classeAuthRessource , classeVarId )) ) {
21412142 tl (5 , "form.add(\" permission\" , String.format(\" %s-%s#%s\" , " , classeNomSimple , "." , i18nGlobale .getString (I18n .var_CLASSE_AUTH_RESSOURCE ), ", " , classeVarId , ", \" " , classeApiPortee , "\" ));" );
21422143 } else {
21432144 tl (5 , "form.add(\" permission\" , String.format(\" %s#%s\" , " , classeVarId , ", \" " , classeApiPortee , "\" ));" );
@@ -2170,7 +2171,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
21702171 tl (6 , "JsonArray authorizationDecisionBody = authorizationDecisionResponse.failed() ? new JsonArray() : authorizationDecision.bodyAsJsonArray();" );
21712172 tl (6 , "JsonArray scopes = authorizationDecisionBody.stream().map(o -> (JsonObject)o).filter(o -> \" " , classeAuthRessource , "\" .equals(o.getString(\" rsname\" ))).findFirst().map(decision -> ((JsonObject)decision).getJsonArray(\" scopes\" )).orElse(new JsonArray());" );
21722173 if (classeRessourcesAutorisation .size () > 0 ) {
2173- tl (6 , "if(!scopes.contains(\" " , classeApiPortee , "\" ) && !" , i18nGlobale . getString ( I18n . var_classe ), i18nGlobale . getString ( I18n . var_PublicLire ), " ) {" );
2174+ tl (6 , "if(!scopes.contains(\" " , classeApiPortee , "\" )) {" );
21742175 tl (7 , "List<String> fqs = new ArrayList<>();" );
21752176 for (String classeRessourceAutorisation : classeRessourcesAutorisation ) {
21762177
@@ -2181,27 +2182,37 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
21812182 tl (9 , "}).forEach(permission -> {" );
21822183 tl (10 , "fqs.add(String.format(\" %s:%s\" , \" " , StringUtils .substringAfter (classeRessourceAutorisation , "-" ), "\" , permission.getString(\" rsname\" )));" );
21832184 tl (10 , "permission.getJsonArray(\" scopes\" ).stream().map(s -> (String)s).forEach(scope -> {" );
2184- tl (11 , "if(!scopes.contains(scope))" );
2185+ if (classePublicLire ) {
2186+ if (classeAuthRessource == null || !classeRessourcesAutorisation .contains (String .format ("%s-%s" , classeAuthRessource , classeVarId ))) {
2187+ tl (11 , "if(!scopes.contains(scope) && String.format(\" %s-%s\" , " , classeNomSimple , "." , i18nGlobale .getString (I18n .var_CLASSE_AUTH_RESSOURCE ), ", " , classeVarId , ").equals(permission.getString(\" rsname\" )))" );
2188+ } else {
2189+ tl (11 , "if(!scopes.contains(scope) && String.format(\" %s\" , " , classeVarId , ").equals(permission.getString(\" rsname\" )))" );
2190+ }
2191+ } else {
2192+ tl (11 , "if(!scopes.contains(scope))" );
2193+ }
21852194 tl (12 , "scopes.add(scope);" );
21862195 tl (10 , "});" );
21872196 tl (9 , "});" );
21882197 }
2189- tl (7 , "JsonObject authParams = " , i18nGlobale .getString (I18n .var_requeteSite ), ".get" , i18nGlobale .getString (I18n .var_RequeteService ), "().getParams();" );
2190- tl (7 , "JsonObject authQuery = authParams.getJsonObject(\" query\" );" );
2191- tl (7 , "if(authQuery == null) {" );
2192- tl (8 , "authQuery = new JsonObject();" );
2193- tl (8 , "authParams.put(\" query\" , authQuery);" );
2194- tl (7 , "}" );
2195- tl (7 , "JsonArray fq = authQuery.getJsonArray(\" fq\" );" );
2196- tl (7 , "if(fq == null) {" );
2197- tl (8 , "fq = new JsonArray();" );
2198- tl (8 , "authQuery.put(\" fq\" , fq);" );
2199- tl (7 , "}" );
2200- tl (7 , "if(fqs.size() > 0) {" );
2201- tl (8 , "fq.add(fqs.stream().collect(Collectors.joining(\" OR \" )));" );
2202- tl (8 , "if(!scopes.contains(\" " , classeApiPortee , "\" ))" );
2203- tl (9 , "scopes.add(\" " , classeApiPortee , "\" );" );
2204- tl (8 , i18nGlobale .getString (I18n .var_requeteSite ), ".setFilteredScope(true);" );
2198+ tl (7 , "if(!" , i18nGlobale .getString (I18n .var_classe ), i18nGlobale .getString (I18n .var_PublicLire ), ") {" );
2199+ tl (8 , "JsonObject authParams = " , i18nGlobale .getString (I18n .var_requeteSite ), ".get" , i18nGlobale .getString (I18n .var_RequeteService ), "().getParams();" );
2200+ tl (8 , "JsonObject authQuery = authParams.getJsonObject(\" query\" );" );
2201+ tl (8 , "if(authQuery == null) {" );
2202+ tl (9 , "authQuery = new JsonObject();" );
2203+ tl (9 , "authParams.put(\" query\" , authQuery);" );
2204+ tl (8 , "}" );
2205+ tl (8 , "JsonArray fq = authQuery.getJsonArray(\" fq\" );" );
2206+ tl (8 , "if(fq == null) {" );
2207+ tl (9 , "fq = new JsonArray();" );
2208+ tl (9 , "authQuery.put(\" fq\" , fq);" );
2209+ tl (8 , "}" );
2210+ tl (8 , "if(fqs.size() > 0) {" );
2211+ tl (9 , "fq.add(fqs.stream().collect(Collectors.joining(\" OR \" )));" );
2212+ tl (9 , "if(!scopes.contains(\" " , classeApiPortee , "\" ))" );
2213+ tl (10 , "scopes.add(\" " , classeApiPortee , "\" );" );
2214+ tl (9 , i18nGlobale .getString (I18n .var_requeteSite ), ".setFilteredScope(true);" );
2215+ tl (8 , "}" );
22052216 tl (7 , "}" );
22062217 tl (6 , "}" );
22072218 tl (6 , "{" );
@@ -2315,6 +2326,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
23152326 tl (2 , "});" );
23162327 tl (1 , "}" );
23172328 } else {
2329+ // Not EditPage, DisplayPage, UserPage, Download
23182330
23192331 /////////
23202332 // API //
@@ -2435,7 +2447,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
24352447 }
24362448 if (classeVarId != null ) {
24372449 tl (4 , "if(" , classeVarId , " != null)" );
2438- if (classeAuthRessource == null ) {
2450+ if (classeAuthRessource == null || ! classeRessourcesAutorisation . contains ( String . format ( "%s-%s" , classeAuthRessource , classeVarId )) ) {
24392451 tl (5 , "form.add(\" permission\" , String.format(\" %s-%s#%s\" , " , classeNomSimple , "." , i18nGlobale .getString (I18n .var_CLASSE_AUTH_RESSOURCE ), ", " , classeVarId , ", \" " , classeApiPortee , "\" ));" );
24402452 } else {
24412453 tl (5 , "form.add(\" permission\" , String.format(\" %s#%s\" , " , classeVarId , ", \" " , classeApiPortee , "\" ));" );
@@ -2469,40 +2481,52 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
24692481 tl (6 , "JsonArray authorizationDecisionBody = authorizationDecisionResponse.failed() ? new JsonArray() : authorizationDecision.bodyAsJsonArray();" );
24702482 tl (6 , "JsonArray scopes = authorizationDecisionBody.stream().map(o -> (JsonObject)o).filter(o -> \" " , classeAuthRessource , "\" .equals(o.getString(\" rsname\" ))).findFirst().map(decision -> ((JsonObject)decision).getJsonArray(\" scopes\" )).orElse(new JsonArray());" );
24712483 if (classeRessourcesAutorisation .size () > 0 ) {
2472- tl ( 6 , "if(!scopes.contains( \" " , classeApiMethodeMethode , " \" ) && !" , i18nGlobale . getString ( I18n . var_classe ), i18nGlobale . getString ( I18n . var_PublicLire ), ") {" ) ;
2473- tl (7 , "// " );
2474- tl (7 , "List<String> fqs = new ArrayList<>();" );
2484+ Integer tab = "GET" . equals ( classeApiMethodeMethode ) ? 7 : 6 ;
2485+ tl (6 , "if(!scopes.contains( \" " , classeApiPortee , " \" )) { " );
2486+ tl (tab , "List<String> fqs = new ArrayList<>();" );
24752487 for (String classeRessourceAutorisation : classeRessourcesAutorisation ) {
24762488
2477- tl (7 , "authorizationDecisionBody.stream().map(o -> (JsonObject)o).filter(permission -> {" );
2478- tl (10 , "Matcher mPermission = Pattern.compile(\" ^(" , StringUtils .substringBefore (classeRessourceAutorisation , "-" ), "-([a-z0-9\\ \\ -]+))$\" ).matcher(permission.getString(\" rsname\" ));" );
2479- tl (10 , "return permission.getJsonArray(\" scopes\" ).contains(\" " , classeApiPortee , "\" )" );
2480- tl (12 , "&& mPermission.find();" );
2481- tl (9 , "}).forEach(permission -> {" );
2482- tl (10 , "fqs.add(String.format(\" %s:%s\" , \" " , StringUtils .substringAfter (classeRessourceAutorisation , "-" ), "\" , permission.getString(\" rsname\" )));" );
2483- tl (10 , "permission.getJsonArray(\" scopes\" ).stream().map(s -> (String)s).forEach(scope -> {" );
2484- tl (11 , "if(!scopes.contains(scope))" );
2485- tl (12 , "scopes.add(scope);" );
2486- tl (10 , "});" );
2487- tl (9 , "});" );
2489+ tl (tab , "authorizationDecisionBody.stream().map(o -> (JsonObject)o).filter(permission -> {" );
2490+ tl (tab + 3 , "Matcher mPermission = Pattern.compile(\" ^(" , StringUtils .substringBefore (classeRessourceAutorisation , "-" ), "-([a-z0-9\\ \\ -]+))$\" ).matcher(permission.getString(\" rsname\" ));" );
2491+ tl (tab + 3 , "return permission.getJsonArray(\" scopes\" ).contains(\" " , classeApiPortee , "\" )" );
2492+ tl (tab + 5 , "&& mPermission.find();" );
2493+ tl (tab + 2 , "}).forEach(permission -> {" );
2494+ tl (tab + 3 , "fqs.add(String.format(\" %s:%s\" , \" " , StringUtils .substringAfter (classeRessourceAutorisation , "-" ), "\" , permission.getString(\" rsname\" )));" );
2495+ tl (tab + 3 , "permission.getJsonArray(\" scopes\" ).stream().map(s -> (String)s).forEach(scope -> {" );
2496+ if (classePublicLire ) {
2497+ if (classeAuthRessource == null || !classeRessourcesAutorisation .contains (String .format ("%s-%s" , classeAuthRessource , classeVarId ))) {
2498+ tl (tab + 4 , "if(!scopes.contains(scope) && String.format(\" %s-%s\" , " , classeNomSimple , "." , i18nGlobale .getString (I18n .var_CLASSE_AUTH_RESSOURCE ), ", " , classeVarId , ").equals(permission.getString(\" rsname\" )))" );
2499+ } else {
2500+ tl (tab + 4 , "if(!scopes.contains(scope) && String.format(\" %s\" , " , classeVarId , ").equals(permission.getString(\" rsname\" )))" );
2501+ }
2502+ } else {
2503+ tl (tab + 4 , "if(!scopes.contains(scope))" );
2504+ }
2505+ tl (tab + 5 , "scopes.add(scope);" );
2506+ tl (tab + 3 , "});" );
2507+ tl (tab + 2 , "});" );
24882508 }
2489- tl (7 , "JsonObject authParams = " , i18nGlobale .getString (I18n .var_requeteSite ), ".get" , i18nGlobale .getString (I18n .var_RequeteService ), "().getParams();" );
2490- tl (7 , "JsonObject authQuery = authParams.getJsonObject(\" query\" );" );
2491- tl (7 , "if(authQuery == null) {" );
2492- tl (8 , "authQuery = new JsonObject();" );
2493- tl (8 , "authParams.put(\" query\" , authQuery);" );
2494- tl (7 , "}" );
2495- tl (7 , "JsonArray fq = authQuery.getJsonArray(\" fq\" );" );
2496- tl (7 , "if(fq == null) {" );
2497- tl (8 , "fq = new JsonArray();" );
2498- tl (8 , "authQuery.put(\" fq\" , fq);" );
2499- tl (7 , "}" );
2500- tl (7 , "if(fqs.size() > 0) {" );
2501- tl (8 , "fq.add(fqs.stream().collect(Collectors.joining(\" OR \" )));" );
2502- tl (8 , "if(!scopes.contains(\" " , classeApiPortee , "\" ))" );
2503- tl (9 , "scopes.add(\" " , classeApiPortee , "\" );" );
2504- tl (8 , i18nGlobale .getString (I18n .var_requeteSite ), ".setFilteredScope(true);" );
2505- tl (7 , "}" );
2509+ if ("GET" .equals (classeApiMethodeMethode ))
2510+ tl (tab , "if(!" , i18nGlobale .getString (I18n .var_classe ), i18nGlobale .getString (I18n .var_PublicLire ), ") {" );
2511+ tl (tab + 1 , "JsonObject authParams = " , i18nGlobale .getString (I18n .var_requeteSite ), ".get" , i18nGlobale .getString (I18n .var_RequeteService ), "().getParams();" );
2512+ tl (tab + 1 , "JsonObject authQuery = authParams.getJsonObject(\" query\" );" );
2513+ tl (tab + 1 , "if(authQuery == null) {" );
2514+ tl (tab + 2 , "authQuery = new JsonObject();" );
2515+ tl (tab + 2 , "authParams.put(\" query\" , authQuery);" );
2516+ tl (tab + 1 , "}" );
2517+ tl (tab + 1 , "JsonArray fq = authQuery.getJsonArray(\" fq\" );" );
2518+ tl (tab + 1 , "if(fq == null) {" );
2519+ tl (tab + 2 , "fq = new JsonArray();" );
2520+ tl (tab + 2 , "authQuery.put(\" fq\" , fq);" );
2521+ tl (tab + 1 , "}" );
2522+ tl (tab + 1 , "if(fqs.size() > 0) {" );
2523+ tl (tab + 2 , "fq.add(fqs.stream().collect(Collectors.joining(\" OR \" )));" );
2524+ tl (tab + 2 , "if(!scopes.contains(\" " , classeApiPortee , "\" ))" );
2525+ tl (tab + 3 , "scopes.add(\" " , classeApiPortee , "\" );" );
2526+ tl (tab + 2 , i18nGlobale .getString (I18n .var_requeteSite ), ".setFilteredScope(true);" );
2527+ tl (tab + 1 , "}" );
2528+ if ("GET" .equals (classeApiMethodeMethode ))
2529+ tl (tab , "}" );
25062530 tl (6 , "}" );
25072531 }
25082532 if (StringUtils .equals (classeApiMethodeMethode , "GET" )) {
0 commit comments