diff --git a/zero-rbac/src/main/modulat/io/vertx/mod/rbac/acl/relation/BinderRole.java b/zero-rbac/src/main/modulat/io/vertx/mod/rbac/acl/relation/BinderRole.java index 374c27630f91ffe6d45d09845ebf3cd352f408f0..9609a4043939f1a22f42348752e0a6d405bcd801 100644 --- a/zero-rbac/src/main/modulat/io/vertx/mod/rbac/acl/relation/BinderRole.java +++ b/zero-rbac/src/main/modulat/io/vertx/mod/rbac/acl/relation/BinderRole.java @@ -32,7 +32,18 @@ public class BinderRole extends AbstractBind { if (users.isEmpty()) { return Ux.futureA(); } - return this.purgeAsync(users, RUserRoleDao.class, AuthKey.F_USER_ID) + // Only Exist Roles Delete The RelationShip + final List deleteUser = new ArrayList<>(); + users.forEach(user -> { + Ut.itJArray(inputData).forEach(input -> { + final String roles = input.getString(KName.ROLES); + final String userName = input.getString(KName.USERNAME); + if(Ut.isNotNil(roles) && userName.equals(user.getUsername())){ + deleteUser.add(user); + } + }); + }); + return this.purgeAsync(deleteUser, RUserRoleDao.class, AuthKey.F_USER_ID) .compose(nil -> this.mapAsync(inputData, SRoleDao.class, KName.ROLES)) .compose(roleMap -> { /*