Witam, mam problem. Napisałem klase, która ma mi zwrócić zalogowanego uzytkownika, jednak zwróciłem uwagę, ze za każdym razem dostaje Nulla zamiast konkretnego obiektu.
package com.github.kuciax.WebLibrary.utils;
import com.github.kuciax.WebLibrary.security.User;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
public class LoggedUserUtils {
public static User getLoggedUser() {
final Authentication auth = SecurityContextHolder.getContext().getAuthentication();
final Object principal = auth.getPrincipal();
if (principal instanceof User) {
return (User) principal;
}
return null;
}
}
oraz jej zastosowanie :
package com.github.kuciax.WebLibrary.order;
import com.github.kuciax.WebLibrary.book.BookRepository;
import com.github.kuciax.WebLibrary.utils.LoggedUserUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class OrderServiceImpl implements OrderService {
private BookRepository bookRepository;
private OrderRepository orderRepository;
private OrderMapper orderMapper;
private final Logger LOG = LoggerFactory.getLogger(OrderServiceImpl.class);
@Autowired
public OrderServiceImpl(BookRepository bookRepository, OrderRepository orderRepository, OrderMapper orderMapper) {
this.bookRepository = bookRepository;
this.orderRepository = orderRepository;
this.orderMapper = orderMapper;
}
@Override
public OrderDto addBookToOrder(String title) {
if (LoggedUserUtils
.getLoggedUser()
.getMember()
.getOrder()
.getBooks()
.isEmpty()
) {
return createOrder(title);
} else {
Order order = orderRepository.findOneByMember(LoggedUserUtils.getLoggedUser().getMember());
order.addOneBook(bookRepository.findOneByTitle(title));
orderRepository.save(order);
return orderMapper.toOrderDto(order);
}
}
@Override
public OrderDto createOrder(String title) {
Order order = new Order();
order.addOneBook(bookRepository.findOneByTitle(title));
LoggedUserUtils.getLoggedUser().getMember().setOrder(order);
order.setMember(LoggedUserUtils.getLoggedUser().getMember());
orderRepository.save(order);
return orderMapper.toOrderDto(order);
}
}
W zamyśle mam encję User
, która obsługę logowanie, rejstrację, weryfikację po tokenie. W niej znajduje się pole member
i tutaj mamy już informacje o członku biblioteki, jego imię, nazwisko, wypożyczone książki. Problem pojawia się gdy chce otrzymać zalogowanego user
. Ktoś pomoże?