Skip to content

Commit 7eec33e

Browse files
committed
Convert handlebars to Jinja, and Fine-grained auth permissions
1 parent 43fbdb9 commit 7eec33e

File tree

6 files changed

+1581
-1723
lines changed

6 files changed

+1581
-1723
lines changed

src/main/java/org/computate/frFR/java/ConfigCles.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,12 @@ public class ConfigCles {
101101
public static final String var_attribuer = "var_attribuer";
102102
public static final String var_Attribuer = "var_Attribuer";
103103
public static final String var_AucunNomTrouve = "var_AucunNomTrouve";
104+
public static final String var_authPorteeAdmin = "var_authPorteeAdmin";
105+
public static final String var_authPorteeSuperAdmin = "var_authPorteeSuperAdmin";
104106
public static final String var_authRoleAdmin = "var_authRoleAdmin";
105107
public static final String var_authRoleSuperAdmin = "var_authRoleSuperAdmin";
106-
public static final String var_AUTH_ROLE_ADMIN = "var_AUTH_ROLE_ADMIN";
108+
public static final String var_AUTH_PORTEE_ADMIN = "var_AUTH_PORTEE_ADMIN";
109+
public static final String var_AUTH_PORTEE_SUPER_ADMIN = "var_AUTH_PORTEE_SUPER_ADMIN";
107110
public static final String var_AUTH_ROLE_LIRE_REQUIS = "var_AUTH_ROLE_LIRE_REQUIS";
108111
public static final String var_AUTH_ROLE_REQUIS = "var_AUTH_ROLE_REQUIS";
109112
public static final String var_AUTH_POLITIQUE_GRANULEE = "var_AUTH_POLITIQUE_GRANULEE";
@@ -370,6 +373,7 @@ public class ConfigCles {
370373
public static final String var_Peupler = "var_Peupler";
371374
public static final String var_pivot = "var_pivot";
372375
public static final String var_Pivot = "var_Pivot";
376+
public static final String var_portees = "var_portees";
373377
public static final String var_PourClasse = "var_PourClasse";
374378
public static final String var_Pour = "var_Pour";
375379
public static final String var_Precedent = "var_Precedent";
@@ -447,6 +451,7 @@ public class ConfigCles {
447451
public static final String var_SITE_JAVA_ENSEMBLE = "var_SITE_JAVA_ENSEMBLE";
448452
public static final String var_siteNom = "var_siteNom";
449453
public static final String var_SITE_NOM = "var_SITE_NOM";
454+
public static final String var_SITE_THEME = "var_SITE_THEME";
450455
public static final String var_siteUrlBase = "var_siteUrlBase";
451456
public static final String var_SiteUrlBase = "var_SiteUrlBase";
452457
public static final String var_SITE_URL_BASE = "var_SITE_URL_BASE";

src/main/java/org/computate/frFR/java/ConfigSite.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -761,12 +761,6 @@ protected void _siteEcrireMethodes() throws Exception {
761761
siteEcrireMethodes.addAll(o);
762762
}
763763

764-
public String authRoleAdmin = null;
765-
766-
protected void _authRoleAdmin() throws Exception {
767-
authRoleAdmin = langueConfigGlobale.getString(ConfigCles.var_AUTH_ROLE_ADMIN);
768-
}
769-
770764
public Boolean authPolitiqueGranulee;
771765
/**
772766
**/
@@ -928,7 +922,6 @@ public void initConfigSite() throws Exception {
928922
_customerProfileId9();
929923
_customerProfileId10();
930924
_siteEcrireMethodes();
931-
_authRoleAdmin();
932925
_authPolitiqueGranulee();
933926
_ecrireApi();
934927
_ecrireCommentaire();

src/main/java/org/computate/frFR/java/EcrireApiClasse.java

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ public void ecrireGenApiService(String classeLangueNom) throws Exception {
249249
auteurGenApiService.l("import io.vertx.ext.web.api.service.WebApiServiceGen;");
250250
auteurGenApiService.l("import io.vertx.ext.web.api.service.ServiceRequest;");
251251
auteurGenApiService.l("import io.vertx.ext.web.api.service.ServiceResponse;");
252-
auteurGenApiService.l("import io.vertx.ext.web.templ.handlebars.HandlebarsTemplateEngine;");
252+
auteurGenApiService.l("import com.hubspot.jinjava.Jinjava;");
253253
auteurGenApiService.l("import io.vertx.core.WorkerExecutor;");
254254
auteurGenApiService.l("import io.vertx.pgclient.PgPool;");
255255
auteurGenApiService.l("import io.vertx.kafka.client.producer.KafkaProducer;");
@@ -373,7 +373,7 @@ public void ecrireApiServiceImpl(String classeLangueNom) throws Exception {
373373
auteurApiServiceImpl.l("import io.vertx.pgclient.PgPool;");
374374
auteurApiServiceImpl.l("import io.vertx.kafka.client.producer.KafkaProducer;");
375375
if(classePage)
376-
auteurApiServiceImpl.l("import io.vertx.ext.web.templ.handlebars.HandlebarsTemplateEngine;");
376+
auteurApiServiceImpl.l("import com.hubspot.jinjava.Jinjava;");
377377
// auteurGenApiService.l("import ", classeNomEnsemble, ".", classeNomSimple, "ApiServiceVertxEBProxy;");
378378
auteurApiServiceImpl.l();
379379
auteurApiServiceImpl.l("/**");
@@ -1751,6 +1751,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
17511751
String classePageNomSimpleMethode = classeDoc.getString("classePageNomSimple" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
17521752
String classeApiOperationIdMethode = classeDoc.getString("classeApiOperationId" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
17531753
String classeApiUriMethode = classeDoc.getString("classeApiUri" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
1754+
String classeApiMethodeMethode = classeDoc.getString("classeApiMethode" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
17541755
String classeApiTypeMedia200Methode = classeDoc.getString("classeApiTypeMedia200" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
17551756
String classeApiTypeMediaRequeteMethode = classeDoc.getString("classeApiTypeMediaRequete" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
17561757
String classePageLangueNom = classeDoc.getString("classePageLangueNom" + classeApiMethode + "_" + classeLangueNom + "_stored_string");
@@ -1808,8 +1809,16 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
18081809
tl(5, ".sendForm(MultiMap.caseInsensitiveMultiMap()");
18091810
tl(7, ".add(\"grant_type\", \"urn:ietf:params:oauth:grant-type:uma-ticket\")");
18101811
tl(7, ".add(\"audience\", config.getString(ComputateConfigKeys.AUTH_CLIENT))");
1811-
tl(7, ".add(\"response_mode\", \"decision\")");
1812-
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"", classeApiMethode, "\"))");
1812+
tl(7, ".add(\"response_mode\", \"permissions\")");
1813+
if(classeApiMethode.equals(classeApiMethodeMethode)) {
1814+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"", classeApiMethode, "\"))");
1815+
} else {
1816+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", classeLangueConfig.getString(ConfigCles.var_AUTH_PORTEE_ADMIN), ")))");
1817+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", classeLangueConfig.getString(ConfigCles.var_AUTH_PORTEE_SUPER_ADMIN), ")))");
1818+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"GET\"))");
1819+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"POST\"))");
1820+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"PATCH\"))");
1821+
}
18131822
tl(3, ").onFailure(ex -> {");
18141823
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\"));");
18151824
tl(4, "eventHandler.handle(Future.succeededFuture(");
@@ -1824,7 +1833,8 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
18241833
tl(4, "));");
18251834
tl(3, "}).onSuccess(authorizationDecision -> {");
18261835
tl(4, "try {");
1827-
tl(5, "if(!authorizationDecision.bodyAsJsonObject().getBoolean(\"result\")) {");
1836+
tl(5, "JsonArray scopes = authorizationDecision.bodyAsJsonArray().stream().findFirst().map(decision -> ((JsonObject)decision).getJsonArray(\"scopes\")).orElse(new JsonArray());");
1837+
tl(5, "if(!scopes.contains(\"", classeApiMethodeMethode, "\")) {");
18281838
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\"));");
18291839
tl(6, "eventHandler.handle(Future.succeededFuture(");
18301840
tl(7, "new ServiceResponse(403, \"FORBIDDEN\",");
@@ -1837,6 +1847,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
18371847
tl(7, ")");
18381848
tl(6, "));");
18391849
tl(5, "} else {");
1850+
tl(6, classeLangueConfig.getString(ConfigCles.var_requeteSite), ".setScopes(scopes.stream().map(o -> o.toString()).collect(Collectors.toList()));");
18401851
} else {
18411852
tl(3, "authorizationProvider.getAuthorizations(", classeLangueConfig.getString(ConfigCles.var_requeteSite), ".get", classeLangueConfig.getString(ConfigCles.var_Utilisateur), "()).onFailure(ex -> {");
18421853
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\"));");
@@ -1883,8 +1894,16 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
18831894
tl(5, ".sendForm(MultiMap.caseInsensitiveMultiMap()");
18841895
tl(7, ".add(\"grant_type\", \"urn:ietf:params:oauth:grant-type:uma-ticket\")");
18851896
tl(7, ".add(\"audience\", config.getString(ComputateConfigKeys.AUTH_CLIENT))");
1886-
tl(7, ".add(\"response_mode\", \"decision\")");
1887-
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"", classeApiMethode, "\"))");
1897+
tl(7, ".add(\"response_mode\", \"permissions\")");
1898+
if(classeApiMethode.equals(classeApiMethodeMethode)) {
1899+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"", classeApiMethode, "\"))");
1900+
} else {
1901+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", classeLangueConfig.getString(ConfigCles.var_AUTH_PORTEE_ADMIN), ")))");
1902+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, config.getString(ComputateConfigKeys.", classeLangueConfig.getString(ConfigCles.var_AUTH_PORTEE_SUPER_ADMIN), ")))");
1903+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"GET\"))");
1904+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"POST\"))");
1905+
tl(7, ".add(\"permission\", String.format(\"%s#%s\", ", classeNomSimple, ".CLASS_SIMPLE_NAME, \"PATCH\"))");
1906+
}
18881907
tl(3, ").onFailure(ex -> {");
18891908
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\"));");
18901909
tl(4, "eventHandler.handle(Future.succeededFuture(");
@@ -1899,7 +1918,8 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
18991918
tl(4, "));");
19001919
tl(3, "}).onSuccess(authorizationDecision -> {");
19011920
tl(4, "try {");
1902-
tl(5, "if(!authorizationDecision.bodyAsJsonObject().getBoolean(\"result\")) {");
1921+
tl(5, "JsonArray scopes = authorizationDecision.bodyAsJsonArray().stream().findFirst().map(decision -> ((JsonObject)decision).getJsonArray(\"scopes\")).orElse(new JsonArray());");
1922+
tl(5, "if(!scopes.contains(\"", classeApiMethodeMethode, "\")) {");
19031923
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\"));");
19041924
tl(6, "eventHandler.handle(Future.succeededFuture(");
19051925
tl(7, "new ServiceResponse(403, \"FORBIDDEN\",");
@@ -1912,6 +1932,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception {
19121932
tl(7, ")");
19131933
tl(6, "));");
19141934
tl(5, "} else {");
1935+
tl(6, classeLangueConfig.getString(ConfigCles.var_requeteSite), ".setScopes(scopes.stream().map(o -> o.toString()).collect(Collectors.toList()));");
19151936
} else {
19161937
tl(4, "{");
19171938
tl(5, "try {");
@@ -3123,7 +3144,7 @@ else if(classeApiMethode.equals(classeLangueConfig.getString(ConfigCles.var_PUTC
31233144
if(classePageNomCanoniqueMethode != null) {
31243145
l();
31253146
tl(1, "public String ", classeLangueConfig.getString(ConfigCles.var_template), classeApiMethode, classeNomSimple, "() {");
3126-
tl(2, "return Optional.ofNullable(config.getString(", classePartsConfigCles.nomSimple(classeLangueNom), ".TEMPLATE_PATH)).orElse(\"templates\") + \"/", classeLangueNom, "/", classePageNomSimpleMethode, "\";");
3147+
tl(2, "return \"/", classeLangueNom, "/", classePageNomSimpleMethode, ".htm\";");
31273148
t(1, "}");
31283149
}
31293150
l();
@@ -3167,7 +3188,7 @@ else if(classeApiMethode.contains(classeLangueConfig.getString(ConfigCles.var_Re
31673188
tl(3, "String pageTemplateUri = ", classeLangueConfig.getString(ConfigCles.var_template), classeApiMethode, classeNomSimple, "();");
31683189
tl(3, "String siteTemplatePath = config.getString(ComputateConfigKeys.TEMPLATE_PATH);");
31693190
tl(3, "Path resourceTemplatePath = Path.of(siteTemplatePath, pageTemplateUri);");
3170-
tl(3, "String template = siteTemplatePath == null ? Files.readString(resourceTemplatePath, Charset.forName(\"UTF-8\")) : Resources.toString(Resources.getResource(resourceTemplatePath.toString()), StandardCharsets.UTF_8);");
3191+
tl(3, "String template = siteTemplatePath == null ? Resources.toString(Resources.getResource(resourceTemplatePath.toString()), StandardCharsets.UTF_8) : Files.readString(resourceTemplatePath, Charset.forName(\"UTF-8\"));");
31713192
tl(3, classePageNomSimpleMethode, " page = new ", classePageNomSimpleMethode, "();");
31723193
tl(3, "MultiMap ", classeLangueConfig.getString(ConfigCles.var_requeteEnTetes), " = MultiMap.caseInsensitiveMultiMap();");
31733194
tl(3, classeLangueConfig.getString(ConfigCles.var_requeteSite), ".set", classeLangueConfig.getString(ConfigCles.var_RequeteEnTetes), "(", classeLangueConfig.getString(ConfigCles.var_requeteEnTetes), ");");
@@ -3180,14 +3201,8 @@ else if(classeApiMethode.contains(classeLangueConfig.getString(ConfigCles.var_Re
31803201
tl(3, "page.set", classeLangueConfig.getString(ConfigCles.var_ListeRecherche), classeApiClasseNomSimple, "_(", classeLangueConfig.getString(ConfigCles.var_liste), classeApiClasseNomSimple, ");");
31813202
tl(3, "page.set", classeLangueConfig.getString(ConfigCles.var_RequeteSite), "_(", classeLangueConfig.getString(ConfigCles.var_requeteSite), ");");
31823203
tl(3, "page.", classeLangueConfig.getString(ConfigCles.var_promesseLoin), classePageNomSimpleMethode, "(", classeLangueConfig.getString(ConfigCles.var_requeteSite), ").onSuccess(a -> {");
3183-
tl(4, "JsonObject ctx = JsonObject.mapFrom(page);");
3184-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".STATIC_BASE_URL, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".STATIC_BASE_URL));");
3185-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".GITHUB_ORG, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".GITHUB_ORG));");
3186-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".SITE_NAME, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".SITE_NAME));");
3187-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".SITE_DISPLAY_NAME, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".SITE_DISPLAY_NAME));");
3188-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".SITE_POWERED_BY_URL, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".SITE_POWERED_BY_URL));");
3189-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".SITE_POWERED_BY_NAME, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".SITE_POWERED_BY_NAME));");
3190-
tl(4, "ctx.put(", classePartsConfigCles.nomSimple(langueNom), ".SITE_POWERED_BY_IMAGE_URI, config.getString(", classePartsConfigCles.nomSimple(langueNom), ".SITE_POWERED_BY_IMAGE_URI));");
3204+
tl(4, "JsonObject ctx = ComputateConfigKeys.getPageContext(config);");
3205+
tl(4, "ctx.mergeIn(JsonObject.mapFrom(page));");
31913206
tl(4, "String renderedTemplate = jinjava.render(template, ctx.getMap());");
31923207
tl(4, "Buffer buffer = Buffer.buffer(renderedTemplate);");
31933208
}

0 commit comments

Comments
 (0)