Add missing roles checks (#1739)

(I included these fixes in #1735 but extracted them in a stanalone
PR because it's easier to review and a little more urgent.)

As a result of the refactoring in #1713, the operations annotated with
`@RolesAllowed` containing `Role.USER` are not anymore automatically
considered accessible to all users, regardless of their actual roles.

4 operations are therefore now denied to admins if they only have the
`Role.ADMIN` role, as the first admininistrator is created only with
that role the UI encounters unexpected access denied errors and breaks.
(See https://github.com/openhab/openhab-webui/issues/422).

Closes https://github.com/openhab/openhab-webui/issues/422.

Signed-off-by: Yannick Schaus <github@schaus.net>
This commit is contained in:
Yannick Schaus
2020-10-20 08:20:39 +02:00
committed by GitHub
parent 0ac14b9f8f
commit d262b6f5bc
3 changed files with 4 additions and 4 deletions
@@ -99,7 +99,7 @@ public class ProfileTypeResource implements RESTResource {
}
@GET
@RolesAllowed({ Role.USER })
@RolesAllowed({ Role.USER, Role.ADMIN })
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Gets all available profile types.", responses = {
@ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = ProfileTypeDTO.class), uniqueItems = true))) })
@@ -128,7 +128,7 @@ public class ThingTypeResource implements RESTResource {
}
@GET
@RolesAllowed({ Role.USER })
@RolesAllowed({ Role.USER, Role.ADMIN })
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Gets all available thing types without config description, channels and properties.", responses = {
@ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = StrippedThingTypeDTO.class), uniqueItems = true))) })
@@ -147,7 +147,7 @@ public class ThingTypeResource implements RESTResource {
}
@GET
@RolesAllowed({ Role.USER })
@RolesAllowed({ Role.USER, Role.ADMIN })
@Path("/{thingTypeUID}")
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Gets thing type by UID.", responses = {
@@ -85,7 +85,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")")
@JSONRequired
@Path(SseResource.PATH_EVENTS)
@RolesAllowed({ Role.USER })
@RolesAllowed({ Role.USER, Role.ADMIN })
@Tag(name = SseResource.PATH_EVENTS)
@Singleton
@NonNullByDefault