LoggedInUserServiceImpl.java

package fr.avenirsesr.portfolio.shared.domain.service;

import fr.avenirsesr.portfolio.common.data.domain.model.User;
import fr.avenirsesr.portfolio.common.error.domain.exception.UserNotFoundException;
import fr.avenirsesr.portfolio.common.web.infrastructure.context.RequestContext;
import fr.avenirsesr.portfolio.shared.application.adapter.exception.RequestContextNotDefinedException;
import fr.avenirsesr.portfolio.shared.domain.port.input.LoggedInUserService;
import fr.avenirsesr.portfolio.user.domain.model.Student;
import fr.avenirsesr.portfolio.user.domain.port.input.StudentService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@AllArgsConstructor
public class LoggedInUserServiceImpl implements LoggedInUserService {
  private final StudentService studentService;

  @Override
  public Student getLoggedInStudent() {
    return studentService.getStudentById(getLoggedInUser().getId());
  }

  @Override
  public User getLoggedInUser() {
    var context = RequestContext.get();
    if (context == null) {
      throw new RequestContextNotDefinedException();
    }
    return RequestContext.get().userLoggedIn().orElseThrow(UserNotFoundException::new);
  }
}