diff --git a/backlib/pom.xml b/backlib/pom.xml
index 914ce6f..b1a2995 100644
--- a/backlib/pom.xml
+++ b/backlib/pom.xml
@@ -4,7 +4,7 @@
4.0.0
net.miarma.api
backlib
- 1.2.0
+ 1.2.1
23
diff --git a/backlib/src/main/java/net/miarma/api/backlib/middlewares/AbstractAuthGuard.java b/backlib/src/main/java/net/miarma/api/backlib/middlewares/AbstractAuthGuard.java
index 3caa063..b6963b2 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/middlewares/AbstractAuthGuard.java
+++ b/backlib/src/main/java/net/miarma/api/backlib/middlewares/AbstractAuthGuard.java
@@ -14,14 +14,14 @@ import net.miarma.api.backlib.util.JsonUtil;
* Maneja extracción de JWT y verificación básica.
* Los microservicios solo implementan getUserEntity y hasPermission.
*/
-@SuppressWarnings("unchecked") // arreglar el warning de heap pollution de los arrays de genéricos
+@SuppressWarnings("unchecked")
public abstract class AbstractAuthGuard & IUserRole> {
- protected abstract R parseRole(String roleStr);
+ protected abstract R parseRole(String roleStr);
protected abstract void getUserEntity(int userId, RoutingContext ctx, Consumer callback);
protected abstract boolean hasPermission(U user, R role);
-
- public Handler check(R... allowedRoles) {
+
+ public Handler check(R... allowedRoles) {
return ctx -> {
String token = extractToken(ctx);
if (token == null || !JWTManager.getInstance().isValid(token)) {
@@ -59,14 +59,14 @@ public abstract class AbstractAuthGuard & IUserRole> {
};
}
- private boolean isRoleAllowed(R role, R... allowedRoles) {
+ protected boolean isRoleAllowed(R role, R... allowedRoles) {
for (R allowed : allowedRoles) {
if (role == allowed) return true;
}
return false;
}
- private String extractToken(RoutingContext ctx) {
+ protected String extractToken(RoutingContext ctx) {
String authHeader = ctx.request().getHeader("Authorization");
if (authHeader != null && authHeader.startsWith("Bearer ")) {
return authHeader.substring(7);
diff --git a/bootstrap/pom.xml b/bootstrap/pom.xml
index db880ce..4237c4f 100644
--- a/bootstrap/pom.xml
+++ b/bootstrap/pom.xml
@@ -6,7 +6,7 @@
net.miarma.api
miarma-ecosystem
- 1.2.0
+ 1.2.1
bootstrap
diff --git a/microservices/core/pom.xml b/microservices/core/pom.xml
index a4d4c2f..03e99d1 100644
--- a/microservices/core/pom.xml
+++ b/microservices/core/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
core
- 1.2.0
+ 1.2.1
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.0
+ 1.2.1
diff --git a/microservices/huertos/pom.xml b/microservices/huertos/pom.xml
index de60f98..29b22c7 100644
--- a/microservices/huertos/pom.xml
+++ b/microservices/huertos/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
huertos
- 1.2.0
+ 1.2.1
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.0
+ 1.2.1
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/routing/middlewares/HuertosAuthGuard.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/routing/middlewares/HuertosAuthGuard.java
index ae244fd..9aaf4dc 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/routing/middlewares/HuertosAuthGuard.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/routing/middlewares/HuertosAuthGuard.java
@@ -2,14 +2,19 @@ package net.miarma.api.microservices.huertos.routing.middlewares;
import java.util.function.Consumer;
+import io.vertx.core.Handler;
import io.vertx.ext.web.RoutingContext;
import net.miarma.api.backlib.Constants.HuertosUserRole;
+import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.middlewares.AbstractAuthGuard;
+import net.miarma.api.backlib.security.JWTManager;
+import net.miarma.api.backlib.util.JsonUtil;
import net.miarma.api.microservices.huertos.entities.MemberEntity;
import net.miarma.api.microservices.huertos.services.MemberService;
public class HuertosAuthGuard extends AbstractAuthGuard {
- private final MemberService memberService;
+
+ private final MemberService memberService;
public HuertosAuthGuard(MemberService memberService) {
this.memberService = memberService;
@@ -22,7 +27,7 @@ public class HuertosAuthGuard extends AbstractAuthGuard callback) {
- memberService.getById(userId).onComplete(ar -> {
+ memberService.getById(userId).onComplete(ar -> {
if (ar.succeeded()) callback.accept(ar.result());
else callback.accept(null);
});
@@ -32,4 +37,39 @@ public class HuertosAuthGuard extends AbstractAuthGuard check(HuertosUserRole... allowedRoles) {
+ return ctx -> {
+ String token = extractToken(ctx);
+ if (token == null || !JWTManager.getInstance().isValid(token)) {
+ JsonUtil.sendJson(ctx, ApiStatus.UNAUTHORIZED, "Invalid or missing token");
+ return;
+ }
+
+ int userId = JWTManager.getInstance().extractUserId(token);
+
+ getUserEntity(userId, ctx, member -> {
+ if (member == null) {
+ JsonUtil.sendJson(ctx, ApiStatus.UNAUTHORIZED, "User not found");
+ return;
+ }
+
+ HuertosUserRole role = HuertosUserRole.USER;
+ if (member.getRole() != null) {
+ role = member.getRole();
+ }
+
+ ctx.put("userId", userId);
+ ctx.put("role", role);
+ ctx.put("userEntity", member);
+
+ if (allowedRoles.length == 0 || isRoleAllowed(role, allowedRoles)) {
+ ctx.next();
+ } else {
+ JsonUtil.sendJson(ctx, ApiStatus.FORBIDDEN, "Forbidden");
+ }
+ });
+ };
+ }
}
diff --git a/microservices/huertosdecine/pom.xml b/microservices/huertosdecine/pom.xml
index 553bfb9..a5ba200 100644
--- a/microservices/huertosdecine/pom.xml
+++ b/microservices/huertosdecine/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
huertosdecine
- 1.2.0
+ 1.2.1
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.0
+ 1.2.1
diff --git a/microservices/miarmacraft/pom.xml b/microservices/miarmacraft/pom.xml
index 2d50b92..948a8a1 100644
--- a/microservices/miarmacraft/pom.xml
+++ b/microservices/miarmacraft/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
miarmacraft
- 1.2.0
+ 1.2.1
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.0
+ 1.2.1
diff --git a/microservices/mpaste/pom.xml b/microservices/mpaste/pom.xml
index a97b982..ca6a85c 100644
--- a/microservices/mpaste/pom.xml
+++ b/microservices/mpaste/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
mpaste
- 1.2.0
+ 1.2.1
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.0
+ 1.2.1
diff --git a/pom.xml b/pom.xml
index da54aa5..c4f339e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
net.miarma.api
miarma-ecosystem
- 1.2.0
+ 1.2.1
pom