/** * Adds all authorities contained in another object to this instance. * * @param authoritiesToAdd The object containing the authorities to add. * @return This instance for command chaining. */ public AuthoritiesImpl addAll(final Authorities authoritiesToAdd) { authoritiesToAdd.asMap().entrySet().stream() .filter(entry -> entry.getValue() instanceof String) .forEach(entry -> { final String value = (String) entry.getValue(); LOG.trace("adding authority [key: {}, activities: {}]", entry.getKey(), value); authorities.put(entry.getKey(), value); }); return this; }
@Override public Future<Boolean> isAuthorized(final HonoUser user, final ResourceIdentifier resource, final Activity intent) { Objects.requireNonNull(user); Objects.requireNonNull(resource); Objects.requireNonNull(intent); if (user.isExpired()) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_FORBIDDEN, "user information expired")); } else { return Future.succeededFuture(user.getAuthorities().isAuthorized(resource, intent)); } }
/** * Adds all authorities contained in another object to this instance. * * @param authoritiesToAdd The object containing the authorities to add. * @return This instance for command chaining. */ public AuthoritiesImpl addAll(final Authorities authoritiesToAdd) { authoritiesToAdd.asMap().entrySet().stream() .filter(entry -> entry.getValue() instanceof String) .forEach(entry -> { final String value = (String) entry.getValue(); LOG.trace("adding authority [key: {}, activities: {}]", entry.getKey(), value); authorities.put(entry.getKey(), value); }); return this; }
@Override public Future<Boolean> isAuthorized(final HonoUser user, final ResourceIdentifier resource, final String operation) { Objects.requireNonNull(user); Objects.requireNonNull(resource); Objects.requireNonNull(operation); if (user.isExpired()) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_FORBIDDEN, "user information expired")); } else { return Future.succeededFuture(user.getAuthorities().isAuthorized(resource, operation)); } } }
private Map<String, String[]> getPermissionsFromAuthorities(final Authorities authorities) { return authorities.asMap().entrySet().stream() .filter(entry -> entry.getKey().startsWith(AuthoritiesImpl.PREFIX_RESOURCE)) .collect(Collectors.toMap( entry -> entry.getKey().substring(AuthoritiesImpl.PREFIX_RESOURCE.length()), entry -> getAuthorities((String) entry.getValue()))); }
@Override public Future<Boolean> isAuthorized(final HonoUser user, final ResourceIdentifier resource, final String operation) { Objects.requireNonNull(user); Objects.requireNonNull(resource); Objects.requireNonNull(operation); if (user.isExpired()) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_FORBIDDEN, "user information expired")); } else { return Future.succeededFuture(user.getAuthorities().isAuthorized(resource, operation)); } } }
@Override public String createToken(final String authorizationId, final Authorities authorities) { final JwtBuilder builder = Jwts.builder() .signWith(algorithm, key) .setIssuer("Hono") .setSubject(Objects.requireNonNull(authorizationId)) .setExpiration(Date.from(Instant.now().plus(tokenLifetime))); if (authorities != null) { authorities.asMap().forEach((key, value) -> { builder.claim(key, value); }); } return builder.compact(); }
@Override public Future<Boolean> isAuthorized(final HonoUser user, final ResourceIdentifier resource, final Activity intent) { Objects.requireNonNull(user); Objects.requireNonNull(resource); Objects.requireNonNull(intent); if (user.isExpired()) { return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_FORBIDDEN, "user information expired")); } else { return Future.succeededFuture(user.getAuthorities().isAuthorized(resource, intent)); } }
@Override public String createToken(final String authorizationId, final Authorities authorities) { final JwtBuilder builder = Jwts.builder() .signWith(algorithm, key) .setIssuer("Hono") .setSubject(Objects.requireNonNull(authorizationId)) .setExpiration(Date.from(Instant.now().plus(tokenLifetime))); if (authorities != null) { authorities.asMap().forEach((key, value) -> { builder.claim(key, value); }); } return builder.compact(); }