Refactors Project Structure

This commit is contained in:
2024-02-24 02:43:10 -03:00
parent bd0b072e1a
commit e1ec1b2068
34 changed files with 100 additions and 139 deletions

View File

@@ -1,10 +1,10 @@
package com.hideyoshi.backendportfolio.base.user.api;
package com.hideyoshi.backendportfolio.base.auth.api;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.security.service.AuthService;
import com.hideyoshi.backendportfolio.base.user.model.TokenDTO;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.user.service.UserService;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.service.AuthService;
import com.hideyoshi.backendportfolio.base.auth.model.TokenDTO;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.service.UserService;
import com.hideyoshi.backendportfolio.microservice.storageService.enums.FileTypeEnum;
import com.hideyoshi.backendportfolio.microservice.storageService.model.StorageServiceUploadResponse;
import com.hideyoshi.backendportfolio.microservice.storageService.service.StorageService;
@@ -20,7 +20,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.net.URI;
import java.util.List;

View File

@@ -1,12 +1,12 @@
package com.hideyoshi.backendportfolio.base.security.config;
package com.hideyoshi.backendportfolio.base.auth.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hideyoshi.backendportfolio.base.config.RestAuthenticationEntryPointConfig;
import com.hideyoshi.backendportfolio.base.security.filter.CustomAuthenticationFilter;
import com.hideyoshi.backendportfolio.base.security.filter.CustomAuthorizationFilter;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.security.oauth.repo.OAuthRequestRepository;
import com.hideyoshi.backendportfolio.base.security.service.AuthService;
import com.hideyoshi.backendportfolio.base.auth.filter.CustomAuthenticationFilter;
import com.hideyoshi.backendportfolio.base.auth.filter.CustomAuthorizationFilter;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.oauth.repo.OAuthRequestRepository;
import com.hideyoshi.backendportfolio.base.auth.service.AuthService;
import com.hideyoshi.backendportfolio.util.exception.AuthenticationInvalidException;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.user.entity;
package com.hideyoshi.backendportfolio.base.auth.entity;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.user.entity;
package com.hideyoshi.backendportfolio.base.auth.entity;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.user.entity;
package com.hideyoshi.backendportfolio.base.auth.entity;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@@ -1,10 +1,10 @@
package com.hideyoshi.backendportfolio.base.security.filter;
package com.hideyoshi.backendportfolio.base.auth.filter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hideyoshi.backendportfolio.base.config.RestAuthenticationEntryPointConfig;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.security.service.AuthService;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.service.AuthService;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import lombok.extern.log4j.Log4j2;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;

View File

@@ -1,7 +1,7 @@
package com.hideyoshi.backendportfolio.base.security.filter;
package com.hideyoshi.backendportfolio.base.auth.filter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hideyoshi.backendportfolio.base.security.service.AuthService;
import com.hideyoshi.backendportfolio.base.auth.service.AuthService;
import com.hideyoshi.backendportfolio.util.exception.AuthenticationInvalidException;
import com.hideyoshi.backendportfolio.util.exception.AuthenticationInvalidExceptionDetails;
import org.springframework.http.HttpStatus;

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.security.interceptor;
package com.hideyoshi.backendportfolio.base.auth.interceptor;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

View File

@@ -1,9 +1,8 @@
package com.hideyoshi.backendportfolio.base.security.interceptor;
package com.hideyoshi.backendportfolio.base.auth.interceptor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hideyoshi.backendportfolio.base.user.service.UserService;
import com.hideyoshi.backendportfolio.base.auth.service.UserService;
import com.hideyoshi.backendportfolio.util.exception.AuthenticationInvalidException;
import com.hideyoshi.backendportfolio.util.exception.BadRequestException;
import com.hideyoshi.backendportfolio.util.guard.UserResourceGuard;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;

View File

@@ -1,11 +1,9 @@
package com.hideyoshi.backendportfolio.base.security.model;
package com.hideyoshi.backendportfolio.base.auth.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.model.TokenDTO;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.user.model;
package com.hideyoshi.backendportfolio.base.auth.model;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.user.model;
package com.hideyoshi.backendportfolio.base.auth.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

View File

@@ -1,11 +1,11 @@
package com.hideyoshi.backendportfolio.base.user.model;
package com.hideyoshi.backendportfolio.base.auth.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.entity.User;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.entity.User;
import com.hideyoshi.backendportfolio.util.validator.email.unique.UniqueEmail;
import com.hideyoshi.backendportfolio.util.validator.email.valid.ValidEmail;
import com.hideyoshi.backendportfolio.util.validator.password.ValidPassword;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.security.oauth.mapper;
package com.hideyoshi.backendportfolio.base.auth.oauth.mapper;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import lombok.AllArgsConstructor;
import org.springframework.security.oauth2.core.user.OAuth2User;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.security.oauth.mapper;
package com.hideyoshi.backendportfolio.base.auth.oauth.mapper;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import lombok.AllArgsConstructor;
import org.springframework.security.oauth2.core.user.OAuth2User;

View File

@@ -0,0 +1,13 @@
package com.hideyoshi.backendportfolio.base.auth.oauth.mapper;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
public interface OAuthMap {
String getPrincipal();
String getProfilePicture();
Provider getProvider();
}

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.security.oauth.mapper;
package com.hideyoshi.backendportfolio.base.auth.oauth.mapper;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import lombok.Getter;
public enum OAuthMapper {

View File

@@ -1,4 +1,4 @@
package com.hideyoshi.backendportfolio.base.security.oauth.repo;
package com.hideyoshi.backendportfolio.base.auth.oauth.repo;
import lombok.extern.log4j.Log4j2;
import org.springframework.security.oauth2.client.web.AuthorizationRequestRepository;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.user.repo;
package com.hideyoshi.backendportfolio.base.auth.repo;
import com.hideyoshi.backendportfolio.base.user.entity.User;
import com.hideyoshi.backendportfolio.base.auth.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@@ -1,18 +1,16 @@
package com.hideyoshi.backendportfolio.base.security.service;
package com.hideyoshi.backendportfolio.base.auth.service;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.security.oauth.mapper.OAuthMap;
import com.hideyoshi.backendportfolio.base.security.oauth.mapper.OAuthMapper;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.model.TokenDTO;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.user.service.UserService;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.oauth.mapper.OAuthMap;
import com.hideyoshi.backendportfolio.base.auth.oauth.mapper.OAuthMapper;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.model.TokenDTO;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import com.hideyoshi.backendportfolio.microservice.storageService.model.StorageServiceDownloadResponse;
import com.hideyoshi.backendportfolio.microservice.storageService.service.StorageService;
import com.hideyoshi.backendportfolio.util.exception.BadRequestException;
@@ -35,7 +33,6 @@ import java.util.*;
import java.util.stream.Collectors;
import static java.util.Arrays.stream;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
@Log4j2
@Service

View File

@@ -1,14 +1,15 @@
package com.hideyoshi.backendportfolio.base.user.service;
package com.hideyoshi.backendportfolio.base.auth.service;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.entity.User;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.user.repo.UserRepository;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.entity.User;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.repo.UserRepository;
import com.hideyoshi.backendportfolio.util.exception.BadRequestException;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -22,13 +23,12 @@ import java.util.stream.Collectors;
@Service
@Transactional
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
public class UserService implements UserDetailsService {
private final UserRepository userRepo;
private final PasswordEncoder passwordEncoder;
@Override
public UserDTO saveUser(@Valid UserDTO user) {
this.userRepo.findByUsername(user.getUsername()).ifPresent(userOnDB -> {
@@ -45,7 +45,6 @@ public class UserServiceImpl implements UserService {
return userSaved;
}
@Override
public void alterUser(Long id, @Valid UserDTO user) {
this.userRepo.findById(id).ifPresentOrElse(userOnDB -> {
@@ -57,7 +56,6 @@ public class UserServiceImpl implements UserService {
});
}
@Override
public void deleteUser(Long id) {
this.userRepo.findById(id).ifPresentOrElse(userOnDB -> {
@@ -68,7 +66,6 @@ public class UserServiceImpl implements UserService {
}
@Override
public void addRoleToUser(Long id, String roleName) {
UserDTO userOnDB = this.getUser(id);
@@ -89,7 +86,6 @@ public class UserServiceImpl implements UserService {
}
@Override
public void removeRoleFromUser(Long id, String roleName) {
UserDTO userOnDB = this.getUser(id);
@@ -109,7 +105,6 @@ public class UserServiceImpl implements UserService {
}
}
@Override
public UserDTO getUser(Long id) {
log.info(String.format("Fetching user with id: %o", id));
@@ -119,7 +114,6 @@ public class UserServiceImpl implements UserService {
);
}
@Override
public UserDTO getUser(String username) {
log.info(String.format("Fetching user: %s", username));
@@ -129,7 +123,6 @@ public class UserServiceImpl implements UserService {
);
}
@Override
public List<UserDTO> getUsers() {
log.info("Fetching all users.");
@@ -138,7 +131,6 @@ public class UserServiceImpl implements UserService {
.collect(Collectors.toList());
}
@Override
public UserDetails loadUserByUsername(String username) {
return this.getUser(username);
}

View File

@@ -1,10 +1,10 @@
package com.hideyoshi.backendportfolio.base.config;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.user.repo.UserRepository;
import com.hideyoshi.backendportfolio.base.user.service.UserService;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.repo.UserRepository;
import com.hideyoshi.backendportfolio.base.auth.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;

View File

@@ -1,13 +0,0 @@
package com.hideyoshi.backendportfolio.base.security.oauth.mapper;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
public interface OAuthMap {
String getPrincipal();
String getProfilePicture();
Provider getProvider();
}

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.session.api;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.session.service.SessionManagerService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.session.service;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import javax.servlet.http.HttpSession;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.base.session.service;
import com.hideyoshi.backendportfolio.base.security.model.AuthDTO;
import com.hideyoshi.backendportfolio.base.auth.model.AuthDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

View File

@@ -1,26 +0,0 @@
package com.hideyoshi.backendportfolio.base.user.service;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import org.springframework.security.core.userdetails.UserDetailsService;
import javax.validation.Valid;
import java.util.List;
public interface UserService extends UserDetailsService {
UserDTO saveUser(@Valid UserDTO user);
void alterUser(Long id, @Valid UserDTO user);
void deleteUser(Long id);
void addRoleToUser(Long id, String roleName);
void removeRoleFromUser(Long id, String roleName);
UserDTO getUser(Long id);
UserDTO getUser(String username);
List<UserDTO> getUsers();
}

View File

@@ -1,9 +1,9 @@
package com.hideyoshi.backendportfolio.util.guard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.user.service.UserService;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.service.UserService;
import lombok.Getter;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.util.guard;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import org.springframework.security.core.context.SecurityContextHolder;
import javax.validation.ConstraintValidator;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.util.validator.email.unique;
import com.hideyoshi.backendportfolio.base.user.repo.UserRepository;
import com.hideyoshi.backendportfolio.base.auth.repo.UserRepository;
import lombok.RequiredArgsConstructor;
import javax.validation.ConstraintValidator;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.util.validator.password;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import lombok.RequiredArgsConstructor;
import javax.validation.ConstraintValidator;

View File

@@ -1,6 +1,6 @@
package com.hideyoshi.backendportfolio.util.validator.password;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import javax.validation.Constraint;
import javax.validation.Payload;

View File

@@ -1,9 +1,10 @@
package com.hideyoshi.backendportfolio.base.user.repo;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.entity.User;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.repo.UserRepository;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.entity.User;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import lombok.extern.log4j.Log4j2;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,10 +1,11 @@
package com.hideyoshi.backendportfolio.base.user.service;
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
import com.hideyoshi.backendportfolio.base.user.entity.Role;
import com.hideyoshi.backendportfolio.base.user.entity.User;
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
import com.hideyoshi.backendportfolio.base.user.repo.UserRepository;
import com.hideyoshi.backendportfolio.base.auth.service.UserService;
import com.hideyoshi.backendportfolio.base.auth.entity.Provider;
import com.hideyoshi.backendportfolio.base.auth.entity.Role;
import com.hideyoshi.backendportfolio.base.auth.entity.User;
import com.hideyoshi.backendportfolio.base.auth.model.UserDTO;
import com.hideyoshi.backendportfolio.base.auth.repo.UserRepository;
import com.hideyoshi.backendportfolio.util.exception.BadRequestException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -31,9 +32,9 @@ import static org.mockito.Mockito.verify;
@DataJpaTest
@ExtendWith(MockitoExtension.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
class UserServiceImplTest {
class UserServiceTest {
private UserServiceImpl underTest;
private UserService underTest;
@Mock
private UserRepository userRepository;
@@ -42,7 +43,7 @@ class UserServiceImplTest {
@BeforeEach
void setUp() {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
this.underTest = new UserServiceImpl(userRepository, passwordEncoder);
this.underTest = new UserService(userRepository, passwordEncoder);
}
@Test