From a0b8983c4fd2031cea100feb511108a524a1f3cb Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Sat, 31 Aug 2024 23:54:48 -0600 Subject: [PATCH] Allowing for public list pages and scoped individual pages --- .../computate/frFR/java/EcrireApiClasse.java | 254 +++++++++++++----- .../computate/frFR/java/EcrireGenClasse.java | 1 + .../computate/frFR/java/EcrirePageClasse.java | 61 +++-- .../frFR/java/EcrireToutesClasses.java | 1 + .../java/org/computate/frFR/java/I18n.java | 1 + .../computate/frFR/java/IndexerClasse.java | 2 + .../org/computate/i18n/i18n_enUS.yaml | 1 + .../org/computate/i18n/i18n_frFR.yaml | 1 + 8 files changed, 224 insertions(+), 98 deletions(-) diff --git a/src/main/java/org/computate/frFR/java/EcrireApiClasse.java b/src/main/java/org/computate/frFR/java/EcrireApiClasse.java index 6159c8d8..cc90fe7c 100644 --- a/src/main/java/org/computate/frFR/java/EcrireApiClasse.java +++ b/src/main/java/org/computate/frFR/java/EcrireApiClasse.java @@ -1931,7 +1931,13 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception { String classeApiTypeMedia200Methode = classeDoc.getString("classeApiTypeMedia200" + classeApiMethode + "_" + classeLangueNom + "_stored_string"); String classeApiTypeMediaRequeteMethode = classeDoc.getString("classeApiTypeMediaRequete" + classeApiMethode + "_" + classeLangueNom + "_stored_string"); String classePageLangueNom = classeDoc.getString("classePageLangueNom" + classeApiMethode + "_" + classeLangueNom + "_stored_string"); + if(classePageLangueNom == null || classePageLangueNom.equals(classeLangueNom)) { + + /////////////////// + // /modele/{id}: // + /////////////////// + l(); tl(1, "// ", classeApiMethode, " //"); if(classePageNomCanoniqueMethode != null) { @@ -1941,7 +1947,178 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception { if(StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE")) s("JsonObject body, "); l("ServiceRequest ", i18nGlobale.getString(I18n.var_requeteService), ", Handler> ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ") {"); - tl(2, classeApiOperationIdMethode, "(", i18nGlobale.getString(I18n.var_requeteService), ", ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ");"); + tl(2, i18nGlobale.getString(I18n.var_utilisateur), "(", i18nGlobale.getString(I18n.var_requeteService), ", ", classePartsRequeteSite.nomSimple(classeLangueNom), ".class, ", classePartsUtilisateurSite.nomSimple(classeLangueNom), ".class, ", classePartsUtilisateurSite.nomSimple(classeLangueNom), ".get", i18nGlobale.getString(I18n.var_ClasseApiAddresse), "(), \"post", classePartsUtilisateurSite.nomSimple(classeLangueNom), "Future\", \"patch", classePartsUtilisateurSite.nomSimple(classeLangueNom), "Future\").onSuccess(", i18nGlobale.getString(I18n.var_requeteSite), " -> {"); + if( + StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") + && !(classeRoleSession || classeRoleUtilisateur || classeRoleChacun) + && ( + classeRoles.size() > 0 + ) + || !StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") && ( + BooleanUtils.isNotTrue(classeRoleSession) + && BooleanUtils.isNotTrue(classePublicLire) + && BooleanUtils.isNotTrue(classeRoleUtilisateur) + && BooleanUtils.isNotTrue(classeRoleChacun) + && ( classeRoles.size() > 0 || classeRoleLires.size() > 0) + ) + ) { + if(authPolitiqueGranulee) { + tl(3, "webClient.post("); + tl(5, "config.getInteger(ComputateConfigKeys.AUTH_PORT)"); + tl(5, ", config.getString(ComputateConfigKeys.AUTH_HOST_NAME)"); + tl(5, ", config.getString(ComputateConfigKeys.AUTH_TOKEN_URI)"); + tl(5, ")"); + tl(5, ".ssl(config.getBoolean(ComputateConfigKeys.AUTH_SSL))"); + tl(5, ".putHeader(\"Authorization\", String.format(\"Bearer %s\", siteRequest.getUser().principal().getString(\"access_token\")))"); + tl(5, ".expect(ResponsePredicate.status(200))"); + tl(5, ".sendForm(MultiMap.caseInsensitiveMultiMap()"); + tl(7, ".add(\"grant_type\", \"urn:ietf:params:oauth:grant-type:uma-ticket\")"); + tl(7, ".add(\"audience\", config.getString(ComputateConfigKeys.AUTH_CLIENT))"); + tl(7, ".add(\"response_mode\", \"permissions\")"); + if(classeApiMethode.equals(classeApiMethodeMethode)) { + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"", classeApiMethode, "\"))"); + } else { + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_PORTEE_ADMIN), ")))"); + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_PORTEE_SUPER_ADMIN), ")))"); + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"GET\"))"); + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"POST\"))"); + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"DELETE\"))"); + tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"PATCH\"))"); + } + tl(3, ").onFailure(ex -> {"); + tl(4, "String msg = String.format(\"403 FORBIDDEN user %s to %s %s\", siteRequest.getUser().attributes().getJsonObject(\"accessToken\").getString(\"preferred_username\"), serviceRequest.getExtra().getString(\"method\"), serviceRequest.getExtra().getString(\"uri\"));"); + tl(4, "eventHandler.handle(Future.succeededFuture("); + tl(5, "new ServiceResponse(403, \"FORBIDDEN\","); + tl(6, "Buffer.buffer().appendString("); + tl(7, "new JsonObject()"); + tl(8, ".put(\"errorCode\", \"403\")"); + tl(8, ".put(\"errorMessage\", msg)"); + tl(8, ".encodePrettily()"); + tl(7, "), MultiMap.caseInsensitiveMultiMap()"); + tl(5, ")"); + tl(4, "));"); + tl(3, "}).onSuccess(authorizationDecision -> {"); + tl(4, "try {"); + tl(5, "JsonArray scopes = authorizationDecision.bodyAsJsonArray().stream().findFirst().map(decision -> ((JsonObject)decision).getJsonArray(\"scopes\")).orElse(new JsonArray());"); + tl(5, "if(!scopes.contains(\"", classeApiMethodeMethode, "\")) {"); + tl(6, "String msg = String.format(\"403 FORBIDDEN user %s to %s %s\", siteRequest.getUser().attributes().getJsonObject(\"accessToken\").getString(\"preferred_username\"), serviceRequest.getExtra().getString(\"method\"), serviceRequest.getExtra().getString(\"uri\"));"); + tl(6, "eventHandler.handle(Future.succeededFuture("); + tl(7, "new ServiceResponse(403, \"FORBIDDEN\","); + tl(8, "Buffer.buffer().appendString("); + tl(9, "new JsonObject()"); + tl(10, ".put(\"errorCode\", \"403\")"); + tl(10, ".put(\"errorMessage\", msg)"); + tl(10, ".encodePrettily()"); + tl(9, "), MultiMap.caseInsensitiveMultiMap()"); + tl(7, ")"); + tl(6, "));"); + tl(5, "} else {"); + tl(6, i18nGlobale.getString(I18n.var_requeteSite), ".setScopes(scopes.stream().map(o -> o.toString()).collect(Collectors.toList()));"); + } else { + tl(3, "authorizationProvider.getAuthorizations(", i18nGlobale.getString(I18n.var_requeteSite), ".get", i18nGlobale.getString(I18n.var_Utilisateur), "()).onFailure(ex -> {"); + tl(4, "String msg = String.format(\"403 FORBIDDEN user %s to %s %s\", siteRequest.getUser().attributes().getJsonObject(\"accessToken\").getString(\"preferred_username\"), serviceRequest.getExtra().getString(\"method\"), serviceRequest.getExtra().getString(\"uri\"));"); + tl(4, "eventHandler.handle(Future.succeededFuture("); + tl(5, "new ServiceResponse(403, \"FORBIDDEN\","); + tl(6, "Buffer.buffer().appendString("); + tl(7, "new JsonObject()"); + tl(8, ".put(\"errorCode\", \"403\")"); + tl(8, ".put(\"errorMessage\", msg)"); + tl(8, ".encodePrettily()"); + tl(7, "), MultiMap.caseInsensitiveMultiMap()"); + tl(5, ")"); + tl(4, "));"); + tl(3, "}).onSuccess(b -> {"); + tl(4, "if("); + tl(6, "!Optional.ofNullable(config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_ROLE_REQUIS), " + \"_", classeNomSimple, "\")).map(v -> RoleBasedAuthorization.create(v).match(", i18nGlobale.getString(I18n.var_requeteSite), ".get", i18nGlobale.getString(I18n.var_Utilisateur), "())).orElse(false)"); + tl(6, StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") ? "||" : "&&", " !Optional.ofNullable(Optional.ofNullable(config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_ROLE_LIRE_REQUIS), " + \"_", classeNomSimple, "\")).orElse(config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_ROLE_REQUIS), " + \"_", classeNomSimple, "\"))).map(v -> RoleBasedAuthorization.create(v).match(", i18nGlobale.getString(I18n.var_requeteSite), ".get", i18nGlobale.getString(I18n.var_Utilisateur), "())).orElse(false)"); + tl(6, ") {"); + tl(5, "String msg = String.format(\"403 FORBIDDEN user %s to %s %s\", siteRequest.getUser().attributes().getJsonObject(\"accessToken\").getString(\"preferred_username\"), serviceRequest.getExtra().getString(\"method\"), serviceRequest.getExtra().getString(\"uri\"));"); + tl(5, "eventHandler.handle(Future.succeededFuture("); + tl(6, "new ServiceResponse(403, \"FORBIDDEN\","); + tl(7, "Buffer.buffer().appendString("); + tl(8, "new JsonObject()"); + tl(9, ".put(\"errorCode\", \"403\")"); + tl(9, ".put(\"errorMessage\", msg)"); + tl(9, ".encodePrettily()"); + tl(8, "), MultiMap.caseInsensitiveMultiMap()"); + tl(6, ")"); + tl(5, "));"); + tl(4, "} else {"); + tl(5, "try {"); + } + } + tl(6, i18nGlobale.getString(I18n.var_rechercher), classeApiClasseNomSimple, i18nGlobale.getString(I18n.var_Liste), "(", i18nGlobale.getString(I18n.var_requeteSite), ", false, true, false).onSuccess(", i18nGlobale.getString(I18n.var_liste), classeNomSimple, " -> {"); + tl(7, i18nGlobale.getString(I18n.var_reponse), "200", classeApiMethode, classeNomSimple, "(", i18nGlobale.getString(I18n.var_liste), classeNomSimple, ").onSuccess(", i18nGlobale.getString(I18n.var_reponse), " -> {"); + tl(8, i18nGlobale.getString(I18n.var_gestionnaireEvenements), ".handle(Future.succeededFuture(", i18nGlobale.getString(I18n.var_reponse), "));"); + tl(8, "LOG.debug(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_réussi), ". \"));"); + tl(7, "}).onFailure(ex -> {"); + tl(8, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \"), ex);"); + tl(8, i18nGlobale.getString(I18n.var_erreur), "(", i18nGlobale.getString(I18n.var_requeteSite), ", ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex);"); + tl(7, "});"); + tl(6, "}).onFailure(ex -> {"); + tl(7, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \"), ex);"); + tl(7, i18nGlobale.getString(I18n.var_erreur), "(", i18nGlobale.getString(I18n.var_requeteSite), ", ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex);"); + tl(6, "});"); + + if( + StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") + && !(classeRoleSession || classeRoleUtilisateur || classeRoleChacun) + && ( + classeRoles.size() > 0 + ) + || !StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") && ( + BooleanUtils.isNotTrue(classeRoleSession) + && BooleanUtils.isNotTrue(classePublicLire) + && BooleanUtils.isNotTrue(classeRoleUtilisateur) + && BooleanUtils.isNotTrue(classeRoleChacun) + && ( classeRoles.size() > 0 || classeRoleLires.size() > 0) + ) + ) { + if(authPolitiqueGranulee) { + tl(5, "}"); + tl(4, "} catch(Exception ex) {"); + tl(5, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \"), ex);"); + tl(5, i18nGlobale.getString(I18n.var_erreur), "(null, ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex);"); + tl(4, "}"); + } else { + tl(5, "} catch(Exception ex) {"); + tl(6, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \"), ex);"); + tl(6, i18nGlobale.getString(I18n.var_erreur), "(null, ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex);"); + tl(5, "}"); + tl(4, "}"); + } + tl(3, "});"); + } + + tl(2, "}).onFailure(ex -> {"); + if(activerOpenIdConnect) { + tl(3, "if(\"Inactive Token\".equals(ex.getMessage()) || StringUtils.startsWith(ex.getMessage(), \"invalid_grant:\")) {"); + tl(4, "try {"); + tl(5, i18nGlobale.getString(I18n.var_gestionnaireEvenements), ".handle(Future.succeededFuture(new ServiceResponse(302, \"Found\", null, MultiMap.caseInsensitiveMultiMap().add(HttpHeaders.LOCATION, \"/", i18nGlobale.getString(I18n.var_deconnexion), "?redirect_uri=\" + URLEncoder.encode(serviceRequest.getExtra().getString(\"uri\"), \"UTF-8\")))));"); + tl(4, "} catch(Exception ex2) {"); + tl(5, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \", ex2));"); + tl(5, i18nGlobale.getString(I18n.var_erreur), "(null, ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex2);"); + tl(4, "}"); + tl(3, "} else if(StringUtils.startsWith(ex.getMessage(), \"401 UNAUTHORIZED \")) {"); + tl(4, "eventHandler.handle(Future.succeededFuture("); + tl(5, "new ServiceResponse(401, \"UNAUTHORIZED\","); + tl(6, "Buffer.buffer().appendString("); + tl(7, "new JsonObject()"); + tl(8, ".put(\"errorCode\", \"401\")"); + tl(8, ".put(\"errorMessage\", \"SSO Resource Permission check returned DENY\")"); + tl(8, ".encodePrettily()"); + tl(7, "), MultiMap.caseInsensitiveMultiMap()"); + tl(7, ")"); + tl(5, "));"); + tl(3, "} else {"); + tl(4, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \"), ex);"); + tl(4, i18nGlobale.getString(I18n.var_erreur), "(null, ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex);"); + tl(3, "}"); + } else { + tl(3, "LOG.error(String.format(\"", classeApiOperationIdMethode, " ", i18nGlobale.getString(I18n.str_a_échoué), ". \"), ex);"); + tl(3, i18nGlobale.getString(I18n.var_erreur), "(null, ", i18nGlobale.getString(I18n.var_gestionnaireEvenements), ", ex);"); + } + tl(2, "});"); tl(1, "}"); } @@ -1967,12 +2144,12 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception { || !StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") && ( BooleanUtils.isNotTrue(classeRoleSession) && BooleanUtils.isNotTrue(classePublicLire) + && BooleanUtils.isNotTrue(classePageRecherchePublicLire && classeApiMethode.equals(i18nGlobale.getString(I18n.var_PageRecherche))) && BooleanUtils.isNotTrue(classeRoleUtilisateur) && BooleanUtils.isNotTrue(classeRoleChacun) && ( classeRoles.size() > 0 || classeRoleLires.size() > 0) ) ) { - l(); if(authPolitiqueGranulee) { tl(3, "webClient.post("); tl(5, "config.getInteger(ComputateConfigKeys.AUTH_PORT)"); @@ -2058,66 +2235,13 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception { tl(5, "try {"); } } - // else { - // if(authPolitiqueGranulee) { - // tl(3, "webClient.post("); - // tl(5, "config.getInteger(ComputateConfigKeys.AUTH_PORT)"); - // tl(5, ", config.getString(ComputateConfigKeys.AUTH_HOST_NAME)"); - // tl(5, ", config.getString(ComputateConfigKeys.AUTH_TOKEN_URI)"); - // tl(5, ")"); - // tl(5, ".ssl(config.getBoolean(ComputateConfigKeys.AUTH_SSL))"); - // tl(5, ".putHeader(\"Authorization\", String.format(\"Bearer %s\", siteRequest.getUser().principal().getString(\"access_token\")))"); - // tl(5, ".expect(ResponsePredicate.status(200))"); - // tl(5, ".sendForm(MultiMap.caseInsensitiveMultiMap()"); - // tl(7, ".add(\"grant_type\", \"urn:ietf:params:oauth:grant-type:uma-ticket\")"); - // tl(7, ".add(\"audience\", config.getString(ComputateConfigKeys.AUTH_CLIENT))"); - // tl(7, ".add(\"response_mode\", \"permissions\")"); - // if(classeApiMethode.equals(classeApiMethodeMethode)) { - // tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"", classeApiMethode, "\"))"); - // } else { - // tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_PORTEE_ADMIN), ")))"); - // tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", i18nGlobale.getString(I18n.var_AUTH_PORTEE_SUPER_ADMIN), ")))"); - // tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"GET\"))"); - // tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"POST\"))"); - // tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"PATCH\"))"); - // } - // tl(3, ").onFailure(ex -> {"); - // tl(4, "String msg = String.format(\"403 FORBIDDEN user %s to %s %s\", siteRequest.getUser().attributes().getJsonObject(\"accessToken\").getString(\"preferred_username\"), serviceRequest.getExtra().getString(\"method\"), serviceRequest.getExtra().getString(\"uri\"));"); - // tl(4, "eventHandler.handle(Future.succeededFuture("); - // tl(5, "new ServiceResponse(403, \"FORBIDDEN\","); - // tl(6, "Buffer.buffer().appendString("); - // tl(7, "new JsonObject()"); - // tl(8, ".put(\"errorCode\", \"403\")"); - // tl(8, ".put(\"errorMessage\", msg)"); - // tl(8, ".encodePrettily()"); - // tl(7, "), MultiMap.caseInsensitiveMultiMap()"); - // tl(5, ")"); - // tl(4, "));"); - // tl(3, "}).onSuccess(authorizationDecision -> {"); - // tl(4, "try {"); - // tl(5, "JsonArray scopes = authorizationDecision.bodyAsJsonArray().stream().findFirst().map(decision -> ((JsonObject)decision).getJsonArray(\"scopes\")).orElse(new JsonArray());"); - // tl(5, "if(!scopes.contains(\"", classeApiMethodeMethode, "\")) {"); - // tl(6, "String msg = String.format(\"403 FORBIDDEN user %s to %s %s\", siteRequest.getUser().attributes().getJsonObject(\"accessToken\").getString(\"preferred_username\"), serviceRequest.getExtra().getString(\"method\"), serviceRequest.getExtra().getString(\"uri\"));"); - // tl(6, "eventHandler.handle(Future.succeededFuture("); - // tl(7, "new ServiceResponse(403, \"FORBIDDEN\","); - // tl(8, "Buffer.buffer().appendString("); - // tl(9, "new JsonObject()"); - // tl(10, ".put(\"errorCode\", \"403\")"); - // tl(10, ".put(\"errorMessage\", msg)"); - // tl(10, ".encodePrettily()"); - // tl(9, "), MultiMap.caseInsensitiveMultiMap()"); - // tl(7, ")"); - // tl(6, "));"); - // tl(5, "} else {"); - // tl(6, i18nGlobale.getString(I18n.var_requeteSite), ".setScopes(scopes.stream().map(o -> o.toString()).collect(Collectors.toList()));"); - // } else { - // tl(4, "{"); - // tl(5, "try {"); - // } - // } if(classeApiMethode.contains("POST")) { + ////////////// + // /modele: // + ////////////// + tl(6, classePartsRequeteApi.nomSimple(classeLangueNom), " ", i18nGlobale.getString(I18n.var_requeteApi), " = new ", classePartsRequeteApi.nomSimple(classeLangueNom), "();"); tl(6, i18nGlobale.getString(I18n.var_requeteApi), ".setRows(1L);"); tl(6, i18nGlobale.getString(I18n.var_requeteApi), ".setNumFound(1L);"); @@ -2322,7 +2446,6 @@ else if(classeApiMethode.equals(i18nGlobale.getString(I18n.var_PUTFusion)) || cl tl(6, "});"); } - if( StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") && !(classeRoleSession || classeRoleUtilisateur || classeRoleChacun) @@ -2332,6 +2455,7 @@ else if(classeApiMethode.equals(i18nGlobale.getString(I18n.var_PUTFusion)) || cl || !StringUtils.containsAny(classeApiMethode, "POST", "PUT", "PATCH", "DELETE") && ( BooleanUtils.isNotTrue(classeRoleSession) && BooleanUtils.isNotTrue(classePublicLire) + && BooleanUtils.isNotTrue(classePageRecherchePublicLire && classeApiMethode.equals(i18nGlobale.getString(I18n.var_PageRecherche))) && BooleanUtils.isNotTrue(classeRoleUtilisateur) && BooleanUtils.isNotTrue(classeRoleChacun) && ( classeRoles.size() > 0 || classeRoleLires.size() > 0) @@ -2351,10 +2475,6 @@ else if(classeApiMethode.equals(i18nGlobale.getString(I18n.var_PUTFusion)) || cl tl(4, "}"); } tl(3, "});"); - // } else { - // if(authPolitiqueGranulee) { - // tl(3, "});"); - // } } tl(2, "}).onFailure(ex -> {"); @@ -2723,8 +2843,6 @@ else if(StringUtils.containsAny(classeApiMethode, i18nGlobale.getString(I18n.var tl(4, i18nGlobale.getString(I18n.var_listeRecherche), ".set", i18nGlobale.getString(I18n.var_Stocker), "(true);"); tl(4, i18nGlobale.getString(I18n.var_listeRecherche), ".q(\"*:*\");"); tl(4, i18nGlobale.getString(I18n.var_listeRecherche), ".setC(", classeNomSimple, ".class);"); - if(activerSupprime) - tl(4, i18nGlobale.getString(I18n.var_listeRecherche), ".fq(\"", i18nGlobale.getString(I18n.var_supprime), "_docvalues_boolean:false\");"); if(activerArchive) tl(4, i18nGlobale.getString(I18n.var_listeRecherche), ".fq(\"", i18nGlobale.getString(I18n.var_archive), "_docvalues_boolean:false\");"); tl(4, i18nGlobale.getString(I18n.var_listeRecherche), ".fq(\"", classeApiMethode.equals("PUTImport") ? classeVarInheritClePrimaire + "_docvalues_string" : classeVarClePrimaire + "_docvalues_long", ":\" + SearchTool.escapeQueryChars(", classeVarInheritClePrimaire, "));"); @@ -4463,7 +4581,9 @@ public void ecrireGenApiServiceImpl3(String classeLangueNom) throws Exception { l(); tl(3, "page.promiseDeepForClass((", i18nGlobale.getString(I18n.var_RequeteSite), ")", i18nGlobale.getString(I18n.var_requeteSite), ").onSuccess(a -> {"); tl(4, "try {"); - tl(5, "promise.complete(JsonObject.mapFrom(page));"); + tl(5, "JsonObject data = JsonObject.mapFrom(page);"); + tl(5, "data.put(", classeNomSimple, ".VAR_", classeModele ? classeVarClePrimaire : classeVarCleUnique, ", uri);"); + tl(5, "promise.complete(data);"); tl(4, "} catch(Exception ex) {"); tl(5, "LOG.error(String.format(importModelFail, classSimpleName), ex);"); tl(5, "promise.fail(ex);"); diff --git a/src/main/java/org/computate/frFR/java/EcrireGenClasse.java b/src/main/java/org/computate/frFR/java/EcrireGenClasse.java index e1629418..a7aef30a 100644 --- a/src/main/java/org/computate/frFR/java/EcrireGenClasse.java +++ b/src/main/java/org/computate/frFR/java/EcrireGenClasse.java @@ -362,6 +362,7 @@ public class EcrireGenClasse extends EcrireClasse { protected Boolean classeSessionLire; protected Boolean classeUtilisateurLire; protected Boolean classePublicLire; + protected Boolean classePageRecherchePublicLire; /** * Var.enUS: classRolesFound diff --git a/src/main/java/org/computate/frFR/java/EcrirePageClasse.java b/src/main/java/org/computate/frFR/java/EcrirePageClasse.java index 58f77061..686c5154 100644 --- a/src/main/java/org/computate/frFR/java/EcrirePageClasse.java +++ b/src/main/java/org/computate/frFR/java/EcrirePageClasse.java @@ -655,36 +655,36 @@ else if(BooleanUtils.isTrue(entiteSignature)) { tl(8, ""); tl(1, "{%- endif %}"); - if(entiteAttribuer) { - // tl(1, "{%- else %}"); - } - else if(classeUtilisateurEcrire && classeSessionEcrire || classePublicLire) { - // tl(1, "{%- else %}"); - tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}", (entiteVarUrl == null ? "" : "")); - } - else if(classeUtilisateurEcrire) { - if(classeRolesTrouves || classeRoleLiresTrouves) { - // tl(1, "{%- else %}"); - tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); - } - else { - // tl(1, "{%- else %}"); - tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); - } - } - else if(classeSessionEcrire) { - // tl(1, "{%- else %}"); - tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); - } - else if(classeRolesTrouves || classeRoleLiresTrouves) { - // tl(1, "{%- else %}"); - tl(1, "{%- if ", langueConfig.getString(I18n.var_utilisateur), langueConfig.getString(I18n.var_Cle), " in ", uncapitalizeClasseNomSimple, "_.", langueConfig.getString(I18n.var_utilisateur), langueConfig.getString(I18n.var_Cle), "s %}"); - tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); - tl(1, "{%- endif %}"); - } - else { -// tl(3, "sx(htm", entiteVarCapitalise, "());"); - } +// if(entiteAttribuer) { +// // tl(1, "{%- else %}"); +// } +// else if(classeUtilisateurEcrire && classeSessionEcrire || classePublicLire) { +// // tl(1, "{%- else %}"); +// tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}", (entiteVarUrl == null ? "" : "")); +// } +// else if(classeUtilisateurEcrire) { +// if(classeRolesTrouves || classeRoleLiresTrouves) { +// // tl(1, "{%- else %}"); +// tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); +// } +// else { +// // tl(1, "{%- else %}"); +// tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); +// } +// } +// else if(classeSessionEcrire) { +// // tl(1, "{%- else %}"); +// tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); +// } +// else if(classeRolesTrouves || classeRoleLiresTrouves) { +// // tl(1, "{%- else %}"); +// tl(1, "{%- if ", langueConfig.getString(I18n.var_utilisateur), langueConfig.getString(I18n.var_Cle), " in ", uncapitalizeClasseNomSimple, "_.", langueConfig.getString(I18n.var_utilisateur), langueConfig.getString(I18n.var_Cle), "s %}"); +// tl(8, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); +// tl(1, "{%- endif %}"); +// } +// else { +// // tl(3, "sx(htm", entiteVarCapitalise, "());"); +// } // tl(0, "{%- else %}"); // tl(6, "{{", uncapitalizeClasseNomSimple, "_.", entiteVar, "}}"); @@ -4564,7 +4564,6 @@ else if(classeApiMethode.contains(i18nPage.getString(I18n.var_PUTCopie))) tl(4, "{%- endblock htm", i18nPage.getString(I18n.var_Formulaire), classePageNomSimple, " %}"); } - tl(4, ""); tl(3, "{%- endblock htmBody", i18nPage.getString(I18n.var_Milieu), classePageNomSimple, " %}"); tl(3, "{%- endblock htmBody", i18nPage.getString(I18n.var_Milieu), classePageSuperNomSimple, " %}"); l(); diff --git a/src/main/java/org/computate/frFR/java/EcrireToutesClasses.java b/src/main/java/org/computate/frFR/java/EcrireToutesClasses.java index 3eeb507e..5ecf770f 100644 --- a/src/main/java/org/computate/frFR/java/EcrireToutesClasses.java +++ b/src/main/java/org/computate/frFR/java/EcrireToutesClasses.java @@ -316,6 +316,7 @@ public void ecrireGenClasse(JsonObject doc, String langueNom) throws Exception { classeSessionLire = (Boolean)doc.getBoolean("classeSessionLire_stored_boolean"); classeUtilisateurLire = (Boolean)doc.getBoolean("classeUtilisateurLire_stored_boolean"); classePublicLire = (Boolean)doc.getBoolean("classePublicLire_stored_boolean"); + classePageRecherchePublicLire = (Boolean)doc.getBoolean("classePageRecherchePublicLire_stored_boolean"); classeRolesTrouves = BooleanUtils.isTrue((Boolean)doc.getBoolean("classeRolesTrouves_stored_boolean")); List classeRolesTemp = Optional.ofNullable(doc.getJsonArray("classeRoles_stored_strings")).orElse(new JsonArray()).stream().map(v -> (String)v).collect(Collectors.toList()); diff --git a/src/main/java/org/computate/frFR/java/I18n.java b/src/main/java/org/computate/frFR/java/I18n.java index 65c30ad8..43bec462 100644 --- a/src/main/java/org/computate/frFR/java/I18n.java +++ b/src/main/java/org/computate/frFR/java/I18n.java @@ -396,6 +396,7 @@ public class I18n { public static final String var_PageBase = "var_PageBase"; public static final String var_PagePart = "var_PagePart"; public static final String var_PageRecherche = "var_PageRecherche"; + public static final String var_PageRecherchePublicLire = "var_PageRecherchePublicLire"; public static final String var_PageSimple = "var_PageSimple"; public static final String var_PageSuper = "var_PageSuper"; public static final String var_PageTemplates = "var_PageTemplates"; diff --git a/src/main/java/org/computate/frFR/java/IndexerClasse.java b/src/main/java/org/computate/frFR/java/IndexerClasse.java index dbdb740d..411900e0 100644 --- a/src/main/java/org/computate/frFR/java/IndexerClasse.java +++ b/src/main/java/org/computate/frFR/java/IndexerClasse.java @@ -2423,6 +2423,7 @@ else if(classeEstBase) { classePartsGenAjouter(ClasseParts.initClasseParts(this, Map.class.getCanonicalName(), classeLangueNom), classeLangueNom); Boolean classePublicLire = false; + Boolean classePageRecherchePublicLire = false; Boolean classeRoleSession = false; Boolean classeRoleUtilisateur = false; Boolean classeRoleChacun = false; @@ -2447,6 +2448,7 @@ else if(classeEstBase) { } classePublicLire = indexerStockerSolr(classeDoc, "classePublicLire", regexTrouve("^" + i18nGlobale.getString(I18n.var_PublicLire) + ":\\s*(true)$", classeCommentaire)); + classePageRecherchePublicLire = indexerStockerSolr(classeDoc, "classePageRecherchePublicLire", regexTrouve("^" + i18nGlobale.getString(I18n.var_PageRecherchePublicLire) + ":\\s*(true)$", classeCommentaire)); classeRoleSession = indexerStockerSolr(classeDoc, "classeRoleSession", regexTrouve("^" + i18nGlobale.getString(I18n.var_RoleSession) + ":\\s*(true)$", classeCommentaire)); classeRoleUtilisateur = indexerStockerSolr(classeDoc, "classeRoleUtilisateur", regexTrouve("^" + i18nGlobale.getString(I18n.var_RoleUtilisateur) + ":\\s*(true)$", classeCommentaire)); classeRoleChacun = indexerStockerSolr(classeDoc, "classeRoleChacun", regexTrouve("^" + i18nGlobale.getString(I18n.var_RoleChacun) + ":\\s*(true)$", classeCommentaire)); diff --git a/src/main/resources/org/computate/i18n/i18n_enUS.yaml b/src/main/resources/org/computate/i18n/i18n_enUS.yaml index 516a4f4a..c87a4a52 100644 --- a/src/main/resources/org/computate/i18n/i18n_enUS.yaml +++ b/src/main/resources/org/computate/i18n/i18n_enUS.yaml @@ -611,6 +611,7 @@ var_page: "page" var_Page: "Page" var_PagePart: "PagePart" var_PageRecherche: "SearchPage" +var_PageRecherchePublicLire: "SearchPagePublicRead" var_PageSimple: "SimplePage" var_PageSuper: "SuperPage" var_PageTemplates: "PageTemplates" diff --git a/src/main/resources/org/computate/i18n/i18n_frFR.yaml b/src/main/resources/org/computate/i18n/i18n_frFR.yaml index 465b76db..edf38478 100644 --- a/src/main/resources/org/computate/i18n/i18n_frFR.yaml +++ b/src/main/resources/org/computate/i18n/i18n_frFR.yaml @@ -380,6 +380,7 @@ var_Page: "Page" var_PageBase: "PageBase" var_PagePart: "PagePart" var_PageRecherche: "PageRecherche" +var_PageRecherchePublicLire: "PageRecherchePublicLire" var_PageSimple: "PageSimple" var_PageSuper: "PageSuper" var_PageTemplates: "PageTemplates"