admin: app layer 리팩토링

This commit is contained in:
geonhos 2024-05-23 12:17:23 +09:00
parent 6cbe25b6b9
commit 6a1b4fe0c5
11 changed files with 36 additions and 35 deletions

View File

@ -9,9 +9,11 @@ import com.bpgroup.poc.admin.filter.AdminActionLogCreate;
import com.bpgroup.poc.admin.filter.AdminActionLogUpdate;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
@Transactional
public class AdminActionLogAppService {
private final AdminActionLogService adminActionLogService;

View File

@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
@Transactional
public class AdminManagementAppService {
public class AdminAppService {
private final PasswordEncoder passwordEncoder;

View File

@ -4,7 +4,7 @@ import com.bpgroup.poc.admin.app.authentication.exception.AdminNotFoundException
import com.bpgroup.poc.admin.app.authentication.exception.DoNotHaveAnyMenuException;
import com.bpgroup.poc.admin.app.authentication.exception.InvalidPasswordException;
import com.bpgroup.poc.admin.domain.admin.entity.Admin;
import com.bpgroup.poc.admin.domain.admin.entity.AdminRepository;
import com.bpgroup.poc.admin.domain.admin.service.AdminService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@ -12,14 +12,14 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
public class AuthenticationService {
public class AuthenticationAppService {
private final PasswordEncoder passwordEncoder;
private final AdminRepository adminRepository;
private final AdminService adminService;
@Transactional
public AuthenticationResult login(String username, String password) throws AdminNotFoundException, InvalidPasswordException, DoNotHaveAnyMenuException {
Admin findAdmin = adminRepository.findByLoginId(username).orElseThrow(() -> new AdminNotFoundException(username));
Admin findAdmin = adminService.find(username).orElseThrow(() -> new AdminNotFoundException(username));
if (!passwordEncoder.matches(password, findAdmin.getPassword())) {
throw new InvalidPasswordException(username);

View File

@ -1,7 +1,7 @@
package com.bpgroup.poc.admin.app.authorization;
import com.bpgroup.poc.admin.domain.admin.entity.Admin;
import com.bpgroup.poc.admin.domain.admin.entity.AdminRepository;
import com.bpgroup.poc.admin.domain.admin.service.AdminService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -13,12 +13,12 @@ import java.util.Optional;
@Service
@RequiredArgsConstructor
@Transactional
public class AuthorizationService {
public class AuthorizationAppService {
private final AdminRepository adminRepository;
private final AdminService adminService;
public boolean isAuthorized(String username, String requestUri) {
Optional<Admin> findAdmin = adminRepository.findByLoginId(username);
Optional<Admin> findAdmin = adminService.find(username);
if (findAdmin.isEmpty()) {
return false;
}

View File

@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@RequiredArgsConstructor
@Transactional
public class JwtTokenService {
public class JwtTokenAppService {
private final AdminService adminService;
private final AdminTokenService adminTokenService;

View File

@ -1,11 +1,11 @@
package com.bpgroup.poc.admin.security;
import com.bpgroup.poc.admin.app.jwt.JwtTokenService;
import com.bpgroup.poc.admin.app.jwt.JwtTokenAppService;
import com.bpgroup.poc.admin.security.authentication.*;
import com.bpgroup.poc.admin.app.authentication.AuthenticationService;
import com.bpgroup.poc.admin.app.authentication.AuthenticationAppService;
import com.bpgroup.poc.admin.security.authorization.CustomAccessDeniedHandler;
import com.bpgroup.poc.admin.security.authorization.CustomAuthorizationManager;
import com.bpgroup.poc.admin.app.authorization.AuthorizationService;
import com.bpgroup.poc.admin.app.authorization.AuthorizationAppService;
import com.bpgroup.poc.admin.security.jwt.JwtTokenConstants;
import com.bpgroup.poc.admin.security.jwt.JwtTokenProvider;
import com.bpgroup.poc.admin.security.jwt.JwtTokenValidateFilter;
@ -36,9 +36,9 @@ public class SecurityConfig {
private static final String LOGOUT_PATH = "/logout";
private static final String ERROR_PATH = "/error";
private final AuthenticationService authenticationService;
private final AuthorizationService authorizationService;
private final JwtTokenService jwtTokenService;
private final AuthenticationAppService authenticationAppService;
private final AuthorizationAppService authorizationAppService;
private final JwtTokenAppService jwtTokenAppService;
private final JwtTokenProvider jwtTokenProvider;
@ -73,7 +73,7 @@ public class SecurityConfig {
.requestMatchers("/common/modal/**").permitAll()
.requestMatchers(LOGIN_PATH, LOGOUT_PATH, ERROR_PATH).permitAll()
.anyRequest()
.access(new CustomAuthorizationManager(authorizationService))
.access(new CustomAuthorizationManager(authorizationAppService))
);
}
@ -101,7 +101,7 @@ public class SecurityConfig {
@Bean
public CustomAuthenticationProvider customAuthenticationProvider() {
return new CustomAuthenticationProvider(authenticationService);
return new CustomAuthenticationProvider(authenticationAppService);
}
@Bean

View File

@ -1,7 +1,7 @@
package com.bpgroup.poc.admin.security.authentication;
import com.bpgroup.poc.admin.app.authentication.AuthenticationResult;
import com.bpgroup.poc.admin.app.authentication.AuthenticationService;
import com.bpgroup.poc.admin.app.authentication.AuthenticationAppService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
@RequiredArgsConstructor
public class CustomAuthenticationProvider implements AuthenticationProvider {
private final AuthenticationService authenticationService;
private final AuthenticationAppService authenticationAppService;
@Transactional
@Override
@ -21,7 +21,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider {
String username = (String) authentication.getPrincipal();
String password = (String) authentication.getCredentials();
AuthenticationResult authenticationResult = authenticationService.login(username, password);
AuthenticationResult authenticationResult = authenticationAppService.login(username, password);
return buildAuthenticationToken(authenticationResult);
} catch (Exception e) {

View File

@ -1,6 +1,6 @@
package com.bpgroup.poc.admin.security.authorization;
import com.bpgroup.poc.admin.app.authorization.AuthorizationService;
import com.bpgroup.poc.admin.app.authorization.AuthorizationAppService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authorization.AuthorizationDecision;
import org.springframework.security.authorization.AuthorizationManager;
@ -12,7 +12,7 @@ import java.util.function.Supplier;
@RequiredArgsConstructor
public class CustomAuthorizationManager implements AuthorizationManager<RequestAuthorizationContext> {
private final AuthorizationService authorizationService;
private final AuthorizationAppService authorizationAppService;
@Override
public AuthorizationDecision check(Supplier authentication, RequestAuthorizationContext context) {
@ -21,7 +21,7 @@ public class CustomAuthorizationManager implements AuthorizationManager<RequestA
String userName = (String) auth.getPrincipal();
String requestUri = context.getRequest().getRequestURI();
boolean hasAuthorization = authorizationService.isAuthorized(userName, requestUri);
boolean hasAuthorization = authorizationAppService.isAuthorized(userName, requestUri);
return new AuthorizationDecision(hasAuthorization);
}

View File

@ -1,7 +1,7 @@
package com.bpgroup.poc.admin.security.jwt;
import com.bpgroup.poc.admin.app.jwt.JwtTokenRequest;
import com.bpgroup.poc.admin.app.jwt.JwtTokenService;
import com.bpgroup.poc.admin.app.jwt.JwtTokenAppService;
import com.bpgroup.poc.admin.domain.admin.entity.TokenState;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
@ -22,7 +22,7 @@ import java.util.Date;
@RequiredArgsConstructor
public class JwtTokenProvider {
private final JwtTokenService jwtTokenService;
private final JwtTokenAppService jwtTokenAppService;
// TODO: 추후 Key 별도 관리 필요
private static final SecretKey JWT_KEY = Keys.hmacShaKeyFor(JwtTokenConstants.KEY.getBytes(StandardCharsets.UTF_8));
@ -34,7 +34,7 @@ public class JwtTokenProvider {
Cookie refreshTokenCookie = createCookieWithToken(username, JwtTokenProvider.JwtTokenType.REFRESH);
response.addCookie(refreshTokenCookie);
jwtTokenService.save(
jwtTokenAppService.save(
JwtTokenRequest.of(
request.getRemoteAddr(),
accessTokenCookie.getValue(),

View File

@ -1,6 +1,6 @@
package com.bpgroup.poc.admin.web.main.admin.management;
import com.bpgroup.poc.admin.app.admin.AdminManagementAppService;
import com.bpgroup.poc.admin.app.admin.AdminAppService;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminCreate;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminDelete;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminFind;
@ -20,7 +20,7 @@ import java.util.List;
public class AdminManagementRestController {
private final AdminManagementWebService adminManagementWebService;
private final AdminManagementAppService adminManagementAppService;
private final AdminAppService adminAppService;
/**
* 전체 조회
@ -57,7 +57,7 @@ public class AdminManagementRestController {
@RequestBody @Validated AdminCreate.Request request,
BindingResult bindingResult
) {
AdminCreate.Response response = adminManagementAppService.create(request);
AdminCreate.Response response = adminAppService.create(request);
return ResponseEntity.ok(response);
}
@ -66,7 +66,7 @@ public class AdminManagementRestController {
@RequestBody @Validated AdminUpdate.Request request,
BindingResult bindingResult
) {
AdminUpdate.Response response = adminManagementAppService.update(request);
AdminUpdate.Response response = adminAppService.update(request);
return ResponseEntity.ok(response);
}
@ -78,7 +78,7 @@ public class AdminManagementRestController {
@RequestBody @Validated AdminDelete.Request request,
BindingResult bindingResult
) {
AdminDelete.Response response = adminManagementAppService.delete(request);
AdminDelete.Response response = adminAppService.delete(request);
return ResponseEntity.ok(response);
}

View File

@ -6,7 +6,6 @@ import com.bpgroup.poc.admin.domain.admin.entity.AdminRole;
import com.bpgroup.poc.admin.domain.role.entity.Role;
import com.bpgroup.poc.admin.domain.role.entity.RoleRepository;
import com.bpgroup.poc.admin.env.MariaDBTestEnv;
import com.bpgroup.poc.admin.app.admin.AdminManagementAppService;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminCreate;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminDelete;
import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminUpdate;
@ -19,10 +18,10 @@ import static org.assertj.core.api.Assertions.assertThat;
@DisplayName("Admin Web Service 테스트")
@Transactional
class AdminManagementAppServiceTest extends MariaDBTestEnv {
class AdminAppServiceTest extends MariaDBTestEnv {
@Autowired
private AdminManagementAppService adminAppService;
private AdminAppService adminAppService;
@Autowired
private AdminRepository adminRepository;