Showing
1 changed file
with
16 additions
and
1 deletions
... | ... | @@ -17,7 +17,9 @@ package org.thingsboard.server.service.edge.rpc; |
17 | 17 | |
18 | 18 | import com.datastax.driver.core.utils.UUIDs; |
19 | 19 | import com.fasterxml.jackson.core.JsonProcessingException; |
20 | +import com.fasterxml.jackson.databind.JsonNode; | |
20 | 21 | import com.fasterxml.jackson.databind.ObjectMapper; |
22 | +import com.fasterxml.jackson.databind.node.NullNode; | |
21 | 23 | import com.fasterxml.jackson.databind.node.ObjectNode; |
22 | 24 | import com.google.common.util.concurrent.FutureCallback; |
23 | 25 | import com.google.common.util.concurrent.Futures; |
... | ... | @@ -66,6 +68,7 @@ import org.thingsboard.server.common.data.relation.EntityRelation; |
66 | 68 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
67 | 69 | import org.thingsboard.server.common.data.rule.RuleChain; |
68 | 70 | import org.thingsboard.server.common.data.rule.RuleChainMetaData; |
71 | +import org.thingsboard.server.common.data.security.Authority; | |
69 | 72 | import org.thingsboard.server.common.data.security.DeviceCredentials; |
70 | 73 | import org.thingsboard.server.common.data.security.DeviceCredentialsType; |
71 | 74 | import org.thingsboard.server.common.data.security.UserCredentials; |
... | ... | @@ -602,6 +605,9 @@ public final class EdgeGrpcSession implements Closeable { |
602 | 605 | case ASSIGNED_TO_EDGE: |
603 | 606 | User user = ctx.getUserService().findUserById(edgeEvent.getTenantId(), userId); |
604 | 607 | if (user != null) { |
608 | + boolean fullAccess = Authority.TENANT_ADMIN.equals(user.getAuthority()); | |
609 | + setFullAccess(user, fullAccess); | |
610 | + | |
605 | 611 | entityUpdateMsg = EntityUpdateMsg.newBuilder() |
606 | 612 | .setUserUpdateMsg(ctx.getUserUpdateMsgConstructor().constructUserUpdatedMsg(msgType, user)) |
607 | 613 | .build(); |
... | ... | @@ -615,7 +621,7 @@ public final class EdgeGrpcSession implements Closeable { |
615 | 621 | break; |
616 | 622 | case CREDENTIALS_UPDATED: |
617 | 623 | UserCredentials userCredentialsByUserId = ctx.getUserService().findUserCredentialsByUserId(edge.getTenantId(), userId); |
618 | - if (userCredentialsByUserId != null) { | |
624 | + if (userCredentialsByUserId != null && userCredentialsByUserId.isEnabled()) { | |
619 | 625 | UserCredentialsUpdateMsg userCredentialsUpdateMsg = |
620 | 626 | ctx.getUserUpdateMsgConstructor().constructUserCredentialsUpdatedMsg(userCredentialsByUserId); |
621 | 627 | entityUpdateMsg = EntityUpdateMsg.newBuilder() |
... | ... | @@ -630,6 +636,15 @@ public final class EdgeGrpcSession implements Closeable { |
630 | 636 | } |
631 | 637 | } |
632 | 638 | |
639 | + private void setFullAccess(User user, boolean isFullAccess) { | |
640 | + JsonNode additionalInfo = user.getAdditionalInfo(); | |
641 | + if (additionalInfo == null || additionalInfo instanceof NullNode) { | |
642 | + additionalInfo = mapper.createObjectNode(); | |
643 | + } | |
644 | + ((ObjectNode) additionalInfo).put("isFullAccess", isFullAccess); | |
645 | + user.setAdditionalInfo(additionalInfo); | |
646 | + } | |
647 | + | |
633 | 648 | private void processRelation(EdgeEvent edgeEvent, UpdateMsgType msgType) { |
634 | 649 | EntityRelation entityRelation = mapper.convertValue(edgeEvent.getEntityBody(), EntityRelation.class); |
635 | 650 | EntityUpdateMsg entityUpdateMsg = EntityUpdateMsg.newBuilder() | ... | ... |