refactor: move the directories to match with hexagonal architecture

This commit is contained in:
2026-03-06 10:12:52 +01:00
parent 1f00904e36
commit 509f972070
49 changed files with 82 additions and 82 deletions

View File

@@ -2,7 +2,7 @@ package fr.itsonus.bousoleplussbackend.domain.auth;
import fr.itsonus.bousoleplussbackend.domain.auth.model.User;
import fr.itsonus.bousoleplussbackend.domain.auth.spi.UserCacheRepository;
import fr.itsonus.bousoleplussbackend.exception.NoCurrentUserException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.NoCurrentUserException;
import lombok.AllArgsConstructor;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.exception;
package fr.itsonus.bousoleplussbackend.domain.auth.exception;
public class InvalidPasswordException extends RuntimeException {
public InvalidPasswordException(String message) {

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.exception;
package fr.itsonus.bousoleplussbackend.domain.auth.exception;
public class NoCurrentUserException extends RuntimeException {
public NoCurrentUserException() {

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.exception;
package fr.itsonus.bousoleplussbackend.domain.auth.exception;
public class TokenRefreshException extends RuntimeException {

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.exception;
package fr.itsonus.bousoleplussbackend.domain.auth.exception;
public class UnknownEmailException extends RuntimeException {

View File

@@ -2,7 +2,7 @@ package fr.itsonus.bousoleplussbackend.domain.quiz.spi;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Quiz;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.QuizResponse;
import fr.itsonus.bousoleplussbackend.payload.request.ResponseRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.ResponseRequest;
import java.util.List;
import java.util.Set;

View File

@@ -4,7 +4,7 @@ import fr.itsonus.bousoleplussbackend.domain.quiz.model.Quiz;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.QuizResponse;
import fr.itsonus.bousoleplussbackend.domain.quiz.spi.ResponseCacheRepository;
import fr.itsonus.bousoleplussbackend.infrastructure.postgres.models.PostgresQuizResponseDto;
import fr.itsonus.bousoleplussbackend.payload.request.ResponseRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.ResponseRequest;
import jakarta.transaction.Transactional;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.advice;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.advice;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package fr.itsonus.bousoleplussbackend.advice;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.advice;
import fr.itsonus.bousoleplussbackend.exception.TokenRefreshException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.TokenRefreshException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.configuration;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.configuration;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.configuration;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.configuration;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;

View File

@@ -1,11 +1,11 @@
package fr.itsonus.bousoleplussbackend.exception.handlers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.exception.handlers;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.AlreadyExistingUserException;
import fr.itsonus.bousoleplussbackend.exception.InvalidPasswordException;
import fr.itsonus.bousoleplussbackend.exception.NoCurrentUserException;
import fr.itsonus.bousoleplussbackend.exception.TokenRefreshException;
import fr.itsonus.bousoleplussbackend.payload.response.ApiError;
import fr.itsonus.bousoleplussbackend.exception.UnknownEmailException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.InvalidPasswordException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.NoCurrentUserException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.TokenRefreshException;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response.ApiError;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.UnknownEmailException;
import jakarta.validation.ConstraintViolationException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.rest.webmvc.ResourceNotFoundException;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;

View File

@@ -1,9 +1,9 @@
package fr.itsonus.bousoleplussbackend.security;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security;
import fr.itsonus.bousoleplussbackend.security.jwt.ExceptionHandlerFilter;
import fr.itsonus.bousoleplussbackend.security.jwt.JwtAuthenticationFilter;
import fr.itsonus.bousoleplussbackend.security.jwt.JwtGenerator;
import fr.itsonus.bousoleplussbackend.security.services.UserDetailsServiceImpl;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt.ExceptionHandlerFilter;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt.JwtAuthenticationFilter;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt.JwtGenerator;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.services.UserDetailsServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security.jwt;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security.jwt;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;

View File

@@ -1,6 +1,6 @@
package fr.itsonus.bousoleplussbackend.security.jwt;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt;
import fr.itsonus.bousoleplussbackend.security.SecurityConstants;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.SecurityConstants;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts;
import org.springframework.beans.factory.annotation.Value;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security.jwt;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt;
import java.time.Instant;

View File

@@ -1,9 +1,9 @@
package fr.itsonus.bousoleplussbackend.security.services;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.services;
import fr.itsonus.bousoleplussbackend.domain.auth.model.RefreshToken;
import fr.itsonus.bousoleplussbackend.domain.auth.spi.RefreshTokenCacheRepository;
import fr.itsonus.bousoleplussbackend.domain.auth.spi.UserCacheRepository;
import fr.itsonus.bousoleplussbackend.exception.TokenRefreshException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.TokenRefreshException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security.services;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.services;
import com.fasterxml.jackson.annotation.JsonIgnore;
import fr.itsonus.bousoleplussbackend.domain.auth.model.User;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.security.services;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.security.services;
import fr.itsonus.bousoleplussbackend.domain.auth.spi.UserCacheRepository;
import lombok.AllArgsConstructor;

View File

@@ -1,9 +1,9 @@
package fr.itsonus.bousoleplussbackend.controllers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.controllers;
import fr.itsonus.bousoleplussbackend.payload.request.NotifyPasswordResetRequest;
import fr.itsonus.bousoleplussbackend.payload.request.ResetPasswordRequest;
import fr.itsonus.bousoleplussbackend.payload.request.UpdateAccountRequest;
import fr.itsonus.bousoleplussbackend.payload.request.UpdatePasswordRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.NotifyPasswordResetRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.ResetPasswordRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.UpdateAccountRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.UpdatePasswordRequest;
import fr.itsonus.bousoleplussbackend.usecase.UserPasswordResetUseCase;
import fr.itsonus.bousoleplussbackend.usecase.UserUpdateUseCase;
import jakarta.validation.Valid;

View File

@@ -1,17 +1,17 @@
package fr.itsonus.bousoleplussbackend.controllers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.controllers;
import fr.itsonus.bousoleplussbackend.domain.auth.AuthenticationService;
import fr.itsonus.bousoleplussbackend.domain.auth.model.RefreshToken;
import fr.itsonus.bousoleplussbackend.domain.auth.model.User;
import fr.itsonus.bousoleplussbackend.exception.TokenRefreshException;
import fr.itsonus.bousoleplussbackend.payload.request.LogOutRequest;
import fr.itsonus.bousoleplussbackend.payload.request.LoginRequest;
import fr.itsonus.bousoleplussbackend.payload.request.RegisterRequest;
import fr.itsonus.bousoleplussbackend.payload.request.TokenRefreshRequest;
import fr.itsonus.bousoleplussbackend.payload.response.JwtResponse;
import fr.itsonus.bousoleplussbackend.security.jwt.JwtGenerator;
import fr.itsonus.bousoleplussbackend.security.services.RefreshTokenService;
import fr.itsonus.bousoleplussbackend.security.services.UserDetailsImpl;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.TokenRefreshException;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.LogOutRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.LoginRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.RegisterRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.TokenRefreshRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response.JwtResponse;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt.JwtGenerator;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.services.RefreshTokenService;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.services.UserDetailsImpl;
import fr.itsonus.bousoleplussbackend.usecase.UserCreationUseCase;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.controllers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.controllers;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Axe;
import fr.itsonus.bousoleplussbackend.usecase.AxeUseCase;

View File

@@ -1,8 +1,8 @@
package fr.itsonus.bousoleplussbackend.controllers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.controllers;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Bundle;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Question;
import fr.itsonus.bousoleplussbackend.payload.request.BundleCreationRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.BundleCreationRequest;
import fr.itsonus.bousoleplussbackend.usecase.BundleUseCase;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.controllers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.controllers;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Question;
import fr.itsonus.bousoleplussbackend.usecase.QuestionUseCase;

View File

@@ -1,8 +1,8 @@
package fr.itsonus.bousoleplussbackend.controllers;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.controllers;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Quiz;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.QuizDetailed;
import fr.itsonus.bousoleplussbackend.payload.request.QuizRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.QuizRequest;
import fr.itsonus.bousoleplussbackend.usecase.QuizUseCase;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.Question;
import jakarta.validation.Valid;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import jakarta.validation.constraints.Email;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;

View File

@@ -1,7 +1,7 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import fr.itsonus.bousoleplussbackend.domain.auth.model.User;
import fr.itsonus.bousoleplussbackend.payload.validation.Password;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.validation.Password;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

View File

@@ -1,6 +1,6 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import fr.itsonus.bousoleplussbackend.payload.validation.Password;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.validation.Password;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

View File

@@ -1,6 +1,6 @@
package fr.itsonus.bousoleplussbackend.payload.request;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request;
import fr.itsonus.bousoleplussbackend.payload.validation.Password;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.validation.Password;
import jakarta.validation.constraints.NotBlank;
public record UpdatePasswordRequest(@NotBlank String currentPassword,

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.response;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.springframework.http.HttpStatus;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.response;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response;
import fr.itsonus.bousoleplussbackend.infrastructure.postgres.models.PostgresQuestionDto;
import lombok.Data;

View File

@@ -1,6 +1,6 @@
package fr.itsonus.bousoleplussbackend.payload.response;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response;
import fr.itsonus.bousoleplussbackend.security.jwt.Token;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt.Token;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.response;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.response;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.response;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.validation;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.validation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

View File

@@ -1,4 +1,4 @@
package fr.itsonus.bousoleplussbackend.payload.validation;
package fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.validation;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

View File

@@ -5,7 +5,7 @@ import fr.itsonus.bousoleplussbackend.domain.quiz.model.Quiz;
import fr.itsonus.bousoleplussbackend.domain.quiz.model.QuizDetailed;
import fr.itsonus.bousoleplussbackend.infrastructure.postgres.repositories.QuizCacheProxyRepository;
import fr.itsonus.bousoleplussbackend.infrastructure.postgres.repositories.ResponseCacheProxyRepository;
import fr.itsonus.bousoleplussbackend.payload.request.QuizRequest;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.web.payload.request.QuizRequest;
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;

View File

@@ -2,9 +2,9 @@ package fr.itsonus.bousoleplussbackend.usecase;
import fr.itsonus.bousoleplussbackend.domain.auth.spi.UserCacheRepository;
import fr.itsonus.bousoleplussbackend.domain.notification.NotificationService;
import fr.itsonus.bousoleplussbackend.exception.InvalidPasswordException;
import fr.itsonus.bousoleplussbackend.exception.UnknownEmailException;
import fr.itsonus.bousoleplussbackend.security.jwt.JwtGenerator;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.InvalidPasswordException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.UnknownEmailException;
import fr.itsonus.bousoleplussbackend.infrastructure.spring.security.jwt.JwtGenerator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

View File

@@ -2,7 +2,7 @@ package fr.itsonus.bousoleplussbackend.usecase;
import fr.itsonus.bousoleplussbackend.domain.auth.AuthenticationService;
import fr.itsonus.bousoleplussbackend.domain.auth.spi.UserCacheRepository;
import fr.itsonus.bousoleplussbackend.exception.InvalidPasswordException;
import fr.itsonus.bousoleplussbackend.domain.auth.exception.InvalidPasswordException;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;