Skip to content

Commit 554852e

Browse files
DerStoeckida-Kai
andauthored
Backend UI-Websocket: get user.globalRole instead of default guest role on AlertingConfigs (OpenEMS#2409)
* fetch user.globalRole instead of guest on AlertingConfigs This commit is one of many prepare PRs / commits for a bigger PR: SumStateAlert OpenEMS#2260 By Seperating the big OpenEMS#2260 into smaller commits we would like to make the review easier. * handleSet and Get UserAlertingConfigs check for Role Admin or else false helper Method introduced, that checks if the user for the Edge is an admin. If that's the case, the user is allowed to set either other user settings or receive other userSettings * Fixed logic error on userIsAdmin in handle Get and SetUserAlertingConfig * changed return type from Boolean to boolean on userIsAdmin method --------- Co-authored-by: Kai Jeschek <[email protected]> Co-authored-by: Kai Jeschek <[email protected]>
1 parent dc9ee7c commit 554852e

File tree

1 file changed

+10
-8
lines changed
  • io.openems.backend.uiwebsocket/src/io/openems/backend/uiwebsocket/impl

1 file changed

+10
-8
lines changed

io.openems.backend.uiwebsocket/src/io/openems/backend/uiwebsocket/impl/OnRequest.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ private CompletableFuture<GenericJsonrpcResponseSuccess> handleGetSetupProtocolD
495495
/**
496496
* Handles a {@link GetUserAlertingConfigsRequest}.
497497
*
498-
* @param user {@User} who called the request
498+
* @param user {@link User} who called the request
499499
* @param request the {@link SetUserAlertingConfigsRequest}
500500
* @return the JSON-RPC Success Response Future
501501
* @throws OpenemsException on error
@@ -505,10 +505,10 @@ private CompletableFuture<? extends JsonrpcResponseSuccess> handleGetUserAlertin
505505
var edgeId = request.getEdgeId();
506506
List<AlertingSetting> users;
507507

508-
if (user.getRole(edgeId).orElse(Role.GUEST).isLessThan(Role.ADMIN)) {
509-
users = List.of(this.parent.metadata.getUserAlertingSettings(edgeId, user.getId()));
510-
} else {
508+
if (userIsAdmin(user, edgeId)) {
511509
users = this.parent.metadata.getUserAlertingSettings(edgeId);
510+
} else {
511+
users = List.of(this.parent.metadata.getUserAlertingSettings(edgeId, user.getId()));
512512
}
513513

514514
return CompletableFuture.completedFuture(//
@@ -518,7 +518,7 @@ private CompletableFuture<? extends JsonrpcResponseSuccess> handleGetUserAlertin
518518
/**
519519
* Handles a {@link SetUserAlertingConfigsRequest}.
520520
*
521-
* @param user {@User} who called the request
521+
* @param user {@link User} who called the request
522522
* @param request the {@link SetUserAlertingConfigsRequest}
523523
* @return the JSON-RPC Success Response Future
524524
* @throws OpenemsException on error
@@ -527,14 +527,13 @@ private CompletableFuture<? extends JsonrpcResponseSuccess> handleGetUserAlertin
527527
private CompletableFuture<? extends JsonrpcResponseSuccess> handleSetUserAlertingConfigsRequest(User user,
528528
SetUserAlertingConfigsRequest request) throws OpenemsException {
529529
var edgeId = request.getEdgeId();
530-
var role = user.getRole(edgeId).orElse(Role.GUEST);
531530
var userId = user.getId();
532531
var userSettings = request.getUserSettings();
533532

534533
var containsOtherUsersSettings = userSettings.stream() //
535534
.anyMatch(u -> !Objects.equals(u.getUserId(), userId));
536535

537-
if (containsOtherUsersSettings && role.isLessThan(Role.ADMIN)) {
536+
if (containsOtherUsersSettings && !userIsAdmin(user, edgeId)) {
538537
throw new OpenemsException(
539538
"Not allowed to update/set alerting information for other users as user [" + userId + "]");
540539
}
@@ -544,6 +543,10 @@ private CompletableFuture<? extends JsonrpcResponseSuccess> handleSetUserAlertin
544543
return CompletableFuture.completedFuture(new GenericJsonrpcResponseSuccess(request.getId()));
545544
}
546545

546+
private static boolean userIsAdmin(User user, String edgeId) {
547+
return user.getRole(edgeId).map(role -> role.isAtLeast(Role.ADMIN)).orElse(false);
548+
}
549+
547550
/**
548551
* Handles a {@link GetEdgesRequest}.
549552
*
@@ -580,5 +583,4 @@ private CompletableFuture<? extends JsonrpcResponseSuccess> handleGetEdgeRequest
580583
return CompletableFuture //
581584
.completedFuture(new GetEdgeResponse(request.getId(), edgeMetadata));
582585
}
583-
584586
}

0 commit comments

Comments
 (0)