@Override public Mono<OAuth2AuthorizationRequest> loadAuthorizationRequest( ServerWebExchange exchange) { String state = getStateParameter(exchange); if (state == null) { return Mono.empty(); } return getStateToAuthorizationRequest(exchange, false) .filter(stateToAuthorizationRequest -> stateToAuthorizationRequest.containsKey(state)) .map(stateToAuthorizationRequest -> stateToAuthorizationRequest.get(state)); }
@Override public Mono<OAuth2AuthorizationRequest> removeAuthorizationRequest( ServerWebExchange exchange) { String state = getStateParameter(exchange); if (state == null) { return Mono.empty(); } return exchange.getSession() .map(WebSession::getAttributes) .handle((sessionAttrs, sink) -> { Map<String, OAuth2AuthorizationRequest> stateToAuthzRequest = sessionAttrsMapStateToAuthorizationRequest(sessionAttrs); if (stateToAuthzRequest == null) { sink.complete(); return; } OAuth2AuthorizationRequest removedValue = stateToAuthzRequest.remove(state); if (stateToAuthzRequest.isEmpty()) { sessionAttrs.remove(this.sessionAttributeName); } if (removedValue == null) { sink.complete(); } else { sink.next(removedValue); } }); }
@Override public Mono<OAuth2AuthorizationRequest> loadAuthorizationRequest( ServerWebExchange exchange) { String state = getStateParameter(exchange); if (state == null) { return Mono.empty(); } return getStateToAuthorizationRequest(exchange, false) .filter(stateToAuthorizationRequest -> stateToAuthorizationRequest.containsKey(state)) .map(stateToAuthorizationRequest -> stateToAuthorizationRequest.get(state)); }
@Override public Mono<OAuth2AuthorizationRequest> removeAuthorizationRequest( ServerWebExchange exchange) { String state = getStateParameter(exchange); if (state == null) { return Mono.empty(); } return exchange.getSession() .map(WebSession::getAttributes) .handle((sessionAttrs, sink) -> { Map<String, OAuth2AuthorizationRequest> stateToAuthzRequest = sessionAttrsMapStateToAuthorizationRequest(sessionAttrs); if (stateToAuthzRequest == null) { sink.complete(); return; } OAuth2AuthorizationRequest removedValue = stateToAuthzRequest.remove(state); if (stateToAuthzRequest.isEmpty()) { sessionAttrs.remove(this.sessionAttributeName); } if (removedValue == null) { sink.complete(); } else { sink.next(removedValue); } }); }