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