Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor : 호스트 검증 aop 적용 #288

Merged
merged 1 commit into from
Feb 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.event.service.EventService;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -23,8 +22,7 @@ public class CreateEventUseCase {

@Transactional
public EventResponse execute(CreateEventRequest createEventRequest) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
final Long userId = userUtils.getCurrentUserId();
// 슈퍼 호스트 이상만 공연 생성 가능
hostService.validateManagerHostUser(createEventRequest.getHostId(), userId);
final Event event = eventMapper.toEntity(createEventRequest);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
package band.gosrock.api.event.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.EVENT_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.GUEST;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.event.model.dto.response.EventChecklistResponse;
import band.gosrock.api.event.model.mapper.EventMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.event.adaptor.EventAdaptor;
import band.gosrock.domain.domains.event.domain.Event;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@UseCase
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class ReadEventChecklistUseCase {
private final UserUtils userUtils;
private final EventAdaptor eventAdaptor;
private final EventMapper eventMapper;
private final HostAdaptor hostAdaptor;

@HostRolesAllowed(role = GUEST, findHostFrom = EVENT_ID)
public EventChecklistResponse execute(Long eventId) {
final Event event = eventAdaptor.findById(eventId);
final Host host = hostAdaptor.findById(event.getHostId());
final Long userId = userUtils.getCurrentUserId();
host.validateHostUser(userId);

return eventMapper.toEventChecklistResponse(event);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public EventDetailResponse execute(Long eventId) {
final Event event = eventAdaptor.findById(eventId);
final Host host = hostAdaptor.findById(event.getHostId());
final Long userId = userUtils.getCurrentUserId();

// 호스트 유저가 아닐 경우 준비 상태일 때 조회할 수 없음
if (event.isPreparing() && !host.hasHostUserId(userId)) {
throw EventNotOpenException.EXCEPTION;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
import band.gosrock.api.event.model.dto.response.EventProfileResponse;
import band.gosrock.api.event.model.mapper.EventMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.transaction.annotation.Transactional;

/** 해당 호스트 유저가 관리중인 이벤트 리스트를 불러오는 유즈케이스 */
@UseCase
@RequiredArgsConstructor
@Transactional(readOnly = true)
Expand All @@ -19,8 +19,7 @@ public class ReadUserEventProfilesUseCase {
private final EventMapper eventMapper;

public SliceResponse<EventProfileResponse> execute(Pageable pageable) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
final Long userId = userUtils.getCurrentUserId();
return SliceResponse.of(eventMapper.toEventProfileResponseSlice(userId, pageable));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package band.gosrock.api.event.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.EVENT_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.MANAGER;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.event.model.dto.request.UpdateEventBasicRequest;
import band.gosrock.api.event.model.dto.response.EventResponse;
import band.gosrock.api.event.model.mapper.EventMapper;
Expand All @@ -12,7 +15,6 @@
import band.gosrock.domain.domains.event.domain.EventPlace;
import band.gosrock.domain.domains.event.service.EventService;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -26,12 +28,9 @@ public class UpdateEventBasicUseCase {
private final EventMapper eventMapper;

@Transactional
@HostRolesAllowed(role = MANAGER, findHostFrom = EVENT_ID)
public EventResponse execute(Long eventId, UpdateEventBasicRequest updateEventBasicRequest) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
final Event event = eventAdaptor.findById(eventId);
hostService.validateManagerHostUser(event.getHostId(), userId);

EventBasic eventBasic = eventMapper.toEventBasic(updateEventBasicRequest);
EventPlace eventPlace = eventMapper.toEventPlace(updateEventBasicRequest);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package band.gosrock.api.event.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.EVENT_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.MANAGER;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.event.model.dto.request.UpdateEventStatusRequest;
import band.gosrock.api.event.model.dto.response.EventResponse;
import band.gosrock.common.annotation.UseCase;
Expand All @@ -10,7 +13,6 @@
import band.gosrock.domain.domains.event.domain.EventStatus;
import band.gosrock.domain.domains.event.service.EventService;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -23,11 +25,9 @@ public class UpdateEventStatusUseCase {
private final EventAdaptor eventAdaptor;

@Transactional
@HostRolesAllowed(role = MANAGER, findHostFrom = EVENT_ID)
public EventResponse execute(Long eventId, UpdateEventStatusRequest updateEventStatusRequest) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
final Event event = eventAdaptor.findById(eventId);
hostService.validateManagerHostUser(event.getHostId(), userId);
final EventStatus status = updateEventStatusRequest.getStatus();

return EventResponse.of(eventService.updateEventStatus(event, status));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

@Mapper
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class HostMapper {
private final HostAdaptor hostAdaptor;
private final UserAdaptor userAdaptor;
Expand Down Expand Up @@ -64,7 +65,6 @@ public HostUser toMasterHostUser(Long hostId, Long userId) {
return HostUser.builder().userId(userId).host(host).role(HostRole.MASTER).build();
}

@Transactional(readOnly = true)
public UserProfileVo toHostInviteUserList(Long hostId, String email) {
final Host host = hostAdaptor.findById(hostId);

Expand All @@ -75,13 +75,11 @@ public UserProfileVo toHostInviteUserList(Long hostId, String email) {
return inviteUser.toUserProfileVo();
}

@Transactional(readOnly = true)
public HostDetailResponse toHostDetailResponse(Long hostId) {
final Host host = hostAdaptor.findById(hostId);
return toHostDetailResponseExecute(host);
}

@Transactional(readOnly = true)
public HostDetailResponse toHostDetailResponse(Host host) {
return toHostDetailResponseExecute(host);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package band.gosrock.api.host.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.HOST_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.MANAGER;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.host.model.dto.request.InviteHostRequest;
import band.gosrock.api.host.model.dto.response.HostDetailResponse;
import band.gosrock.api.host.model.mapper.HostMapper;
Expand All @@ -11,24 +13,21 @@
import band.gosrock.domain.domains.host.domain.HostUser;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.adaptor.UserAdaptor;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@UseCase
@RequiredArgsConstructor
public class InviteHostUseCase {

private final UserUtils userUtils;
private final UserAdaptor userAdaptor;
private final HostService hostService;
private final HostAdaptor hostAdaptor;
private final HostMapper hostMapper;

@Transactional
@HostRolesAllowed(role = MANAGER, findHostFrom = HOST_ID)
public HostDetailResponse execute(Long hostId, InviteHostRequest inviteHostRequest) {
// 존재하는 유저인지 검증
final User user = userUtils.getCurrentUser();
// 초대할 유저
final Long inviteUserId =
userAdaptor.queryUserByEmail(inviteHostRequest.getEmail()).getId();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package band.gosrock.api.host.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.HOST_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.GUEST;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.host.model.dto.response.HostDetailResponse;
import band.gosrock.api.host.model.mapper.HostMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -22,14 +24,11 @@ public class JoinHostUseCase {
private final HostMapper hostMapper;

@Transactional
@HostRolesAllowed(role = GUEST, findHostFrom = HOST_ID)
public HostDetailResponse execute(Long hostId) {
// 존재하는 유저인지 검증
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
final Long userId = userUtils.getCurrentUserId();
final Host host = hostAdaptor.findById(hostId);

// 이 호스트에 초대받지 않음
host.validateHostUser(userId);
return hostMapper.toHostDetailResponse(hostService.activateHostUser(host, userId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@

@UseCase
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class ReadHostProfilesUseCase {
private final UserUtils userUtils;
private final HostAdaptor hostAdaptor;

@Transactional(readOnly = true)
public SliceResponse<HostProfileResponse> execute(Pageable pageable) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@

@UseCase
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class ReadHostUseCase {
private final UserUtils userUtils;
private final HostMapper hostMapper;

@Transactional(readOnly = true)
public HostDetailResponse execute(Long hostId) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
package band.gosrock.api.host.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.HOST_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.GUEST;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.host.model.mapper.HostMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.common.vo.UserProfileVo;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

@UseCase
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class ReadInviteUsersUseCase {
private final UserUtils userUtils;
private final HostMapper hostMapper;

@Transactional(readOnly = true)
@HostRolesAllowed(role = GUEST, findHostFrom = HOST_ID)
public UserProfileVo execute(Long hostId, String email) {
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
return hostMapper.toHostInviteUserList(hostId, email);
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package band.gosrock.api.host.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.HOST_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.MANAGER;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.host.model.dto.request.UpdateHostRequest;
import band.gosrock.api.host.model.dto.response.HostDetailResponse;
import band.gosrock.api.host.model.mapper.HostMapper;
import band.gosrock.common.annotation.UseCase;
import band.gosrock.domain.domains.host.adaptor.HostAdaptor;
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -22,14 +24,9 @@ public class UpdateHostProfileUseCase {
private final HostMapper hostMapper;

@Transactional
@HostRolesAllowed(role = MANAGER, findHostFrom = HOST_ID)
public HostDetailResponse execute(Long hostId, UpdateHostRequest updateHostRequest) {
// 존재하는 유저인지 검증
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();

final Host host = hostAdaptor.findById(hostId);
// 슈퍼 호스트 검증
host.validateManagerHostUser(userId);

return hostMapper.toHostDetailResponse(
hostService.updateHostProfile(host, hostMapper.toHostProfile(updateHostRequest)));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package band.gosrock.api.host.service;

import static band.gosrock.api.common.aop.hostRole.FindHostFrom.HOST_ID;
import static band.gosrock.api.common.aop.hostRole.HostQualification.MANAGER;

import band.gosrock.api.common.UserUtils;
import band.gosrock.api.common.aop.hostRole.HostRolesAllowed;
import band.gosrock.api.host.model.dto.request.UpdateHostUserRoleRequest;
import band.gosrock.api.host.model.dto.response.HostDetailResponse;
import band.gosrock.api.host.model.mapper.HostMapper;
Expand All @@ -10,7 +13,6 @@
import band.gosrock.domain.domains.host.domain.Host;
import band.gosrock.domain.domains.host.domain.HostRole;
import band.gosrock.domain.domains.host.service.HostService;
import band.gosrock.domain.domains.user.domain.User;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -23,15 +25,10 @@ public class UpdateHostUserRoleUseCase {
private final HostMapper hostMapper;

@Transactional
@HostRolesAllowed(role = MANAGER, findHostFrom = HOST_ID)
public HostDetailResponse execute(
Long hostId, UpdateHostUserRoleRequest updateHostUserRoleRequest) {
// 존재하는 유저인지 검증
final User user = userUtils.getCurrentUser();
final Long userId = user.getId();
final Host host = hostAdaptor.findById(hostId);
// 매니저 호스트 검증
host.validateManagerHostUser(userId);

final Long updateUserId = updateHostUserRoleRequest.getUserId();
final HostRole updateUserRole = updateHostUserRoleRequest.getRole();

Expand Down