Example usage for org.springframework.web.reactive.function.server ServerRequest principal

List of usage examples for org.springframework.web.reactive.function.server ServerRequest principal

Introduction

In this page you can find the example usage for org.springframework.web.reactive.function.server ServerRequest principal.

Prototype

Mono<? extends Principal> principal();

Source Link

Document

Get the authenticated user for the request, if any.

Usage

From source file:com.example.talk.TalkEndpoint.java

Mono<ServerResponse> all(final ServerRequest request) {
    return request.principal().cast(UsernamePasswordAuthenticationToken.class)
            .map(UsernamePasswordAuthenticationToken::getPrincipal).cast(UserAdapter.class)
            .map(UserAdapter::getUserId).map(talkRoomRepository::findTalkRoomByUserId)
            .flatMap(Flux::collectList)/* www  . ja  va 2s. c o  m*/
            .flatMap(list -> ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(Mono.just(list),
                    new ParameterizedTypeReference<List<TalkRoom>>() {
                    }))
            .switchIfEmpty(ServerResponse.notFound().build());
}

From source file:com.example.message.MessageEndpoint.java

private Mono<ServerResponse> createMessage(final ServerRequest request) {
    final Mono<Message> messageMono = request.principal().cast(UsernamePasswordAuthenticationToken.class)
            .map(UsernamePasswordAuthenticationToken::getPrincipal).cast(AuthenticatedUser.class)
            .map(AuthenticatedUser::getUser)
            .flatMap(user -> request.bodyToMono(TextMessage.class).map(message -> message.toMessage(user)))
            .flatMap(messageRepository::save);
    return messageMono
            .map(message -> request.uriBuilder().path("/messages/{message_id}").build(message.getId()))
            .map(ServerResponse::created).flatMap(res -> res.body(messageMono, Message.class));
}