Skip to content

Commit d42b62f

Browse files
committed
Merge remote-tracking branch 'origin/develop' into CLAP-340
2 parents f8483a9 + aa06588 commit d42b62f

File tree

59 files changed

+536
-243
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+536
-243
lines changed

README.md

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ Coming Soon...
7979
<aside>
8080
➡️ Inbound Port
8181

82+
- **Security**
83+
- 외부 요청의 보안 처리 및 인증과 인가를 담당
8284
- **Web**
8385
- 사용자 인터페이스 또는 REST API를 처리하는 컨트롤러
8486
- 입력 유효성 검증을 진행
@@ -91,10 +93,11 @@ Coming Soon...
9193
- 데이터베이스와의 상호작용을 위한 orm 데이터베이스 매핑 및 repository
9294
- **Api**
9395
- 외부 서비스와의 통신을 위한 클라이언트
94-
9596
- **Infrastructure**
9697
- 데이터베이스, 외부 API, 파일 시스템 등 외부 세계와의 연결을 처리
9798
- 다른 레이어에 대해 의존하지 않습니다.
99+
- **JWT**
100+
- JWT 토큰 생성 및 토큰의 유효성을 검증
98101
</aside>
99102

100103

@@ -105,14 +108,29 @@ Coming Soon...
105108
├── 💽 TaskflowApplication
106109
├── 🗂️adapter
107110
│   ├── 🗂️inbound
111+
│   │   └── 📂security
108112
│   │   └── 📂web
109113
│   │   ├── admin
110114
│   │   ├── auth
111-
│   │   └── dto
115+
│   │   ├── dto
116+
│   │   ├── example
117+
│   │   ├── history
118+
│   │   ├── label
119+
│   │   ├── log
120+
│   │   ├── member
121+
│   │   ├── label
122+
│   │   ├── notification
123+
│   │   ├── statistics
124+
│   │   └── task
112125
│   │  
113126
│   └── 🗂️outbound
114127
│   ├── 📂api
115128
│   ├── 📂infrastructure
129+
│   │ ├── elastic
130+
│   │ ├── redis
131+
│   │ ├── s3
132+
│   │ └── sse
133+
│   └── 📂️jwt
116134
│   └── 📂️security
117135
│   └── 📂persistense
118136
│   ├── entity
@@ -131,20 +149,23 @@ Coming Soon...
131149
├── 🗂️application
132150
│   ├── 🗂️mapper
133151
│   └── 🗂️port
134-
│   ├── 📂inbound
135-
│   └── 📂outbound
152+
│   │ ├── 📂inbound
153+
│   │ └── 📂outbound
154+
│   └── 🗂️service
136155
├── 🗂️common
137156
│   └── 🗂️annotation
138157
│   ├── 🗂️exception
139158
│   └── 🗂️response
140159
├── 🗂️config
141160
├── 🗂️domain
142-
│   ├── 🗂️model
143-
│      ├── 📂common
144-
│      ├── 📂log
145-
│      ├── 📂member
146-
│      ├── 📂notification
147-
│      └── 📂task
161+
│   └── 🗂️model
162+
│   │    ├── 📂auth
163+
│   │    ├── 📂common
164+
│   │    ├── 📂log
165+
│   │    ├── 📂member
166+
│   │    ├── 📂notification
167+
│   │    └── 📂task
168+
│   └── 🗂️policy
148169
└── 🗂️exception
149170
```
150171

src/main/java/clap/server/adapter/inbound/security/filter/LoginAttemptFilter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.adapter.inbound.security.filter;
22

3+
import clap.server.application.port.inbound.auth.CheckAccountLockStatusUseCase;
34
import clap.server.application.service.auth.LoginAttemptService;
45
import clap.server.exception.AuthException;
56
import jakarta.servlet.FilterChain;
@@ -25,7 +26,7 @@
2526
@Slf4j
2627
public class LoginAttemptFilter extends OncePerRequestFilter {
2728

28-
private final LoginAttemptService loginAttemptService;
29+
private final CheckAccountLockStatusUseCase checkAccountLockStatusUseCase;
2930

3031
@Override
3132
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
@@ -34,7 +35,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
3435
if (request.getRequestURI().equals(LOGIN_ENDPOINT)) {
3536
String clientIp = getClientIp(request);
3637

37-
loginAttemptService.checkAccountIsLocked(clientIp);
38+
checkAccountLockStatusUseCase.checkAccountIsLocked(clientIp);
3839

3940
}
4041
} catch (AuthException e) {
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package clap.server.adapter.inbound.web.dto.admin.response;
22

3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
35
public record FindAllDepartmentsResponse(
46
Long departmentId,
5-
String name) {
7+
String name,
8+
@Schema(description = "담당자 권한 여부")
9+
Boolean isManager) {
610
}

src/main/java/clap/server/adapter/inbound/web/dto/member/request/UpdateMemberInfoRequest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ public record UpdateMemberInfoRequest(
99
String name,
1010
@NotNull @Schema(description = "이미지 수정이 있을 시에는 false을, 이미지를 삭제할 때에는 true을 보냅니다.")
1111
Boolean isProfileImageDeleted,
12-
@Schema(description = "아지트 알림 수신 여부")
13-
boolean agitNotification,
1412
@Schema(description = "이메일 알림 수신 여부")
1513
boolean emailNotification,
1614
@Schema(description = "카카오 워크 알림 수신 여부")

src/main/java/clap/server/adapter/inbound/web/dto/member/response/MemberDetailInfoResponse.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ public record MemberDetailInfoResponse(
2323
NotificationSettingInfoResponse notificationSettingInfo
2424
) {
2525
public static record NotificationSettingInfoResponse(
26-
@Schema(description = "아지트 알림 수신 여부")
27-
boolean agit,
2826
@Schema(description = "이메일 알림 수신 여부")
2927
boolean email,
3028
@Schema(description = "카카오 워크 알림 수신 여부")

src/main/java/clap/server/adapter/inbound/web/example/ErrorExampleController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void getCommentErrorCode() {}
5353
@GetMapping("/statistic")
5454
@DevelopOnlyApi
5555
@Operation(summary = "작업 통계 관련 에러 코드 나열")
56-
@ApiErrorCodes(LabelErrorCode.class)
56+
@ApiErrorCodes(StatisticsErrorCode.class)
5757
public void getStatisticsErrorCode() {}
5858

5959
@GetMapping("/label")

src/main/java/clap/server/adapter/inbound/web/history/CommandCommentController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class CommandCommentController {
2424
private final EditCommentUsecase editCommentUsecase;
2525
private final DeleteCommentUsecase deleteCommentUsecase;
2626

27+
@Deprecated
2728
@Operation(summary = "댓글 수정")
2829
@Parameter(name = "commentId", description = "수정할 댓글 고유 ID", required = true, in = ParameterIn.PATH)
2930
@PatchMapping("/{commentId}")

src/main/java/clap/server/adapter/inbound/web/notification/ManagementNotificationController.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public class ManagementNotificationController {
2323
private final UpdateNotificationUsecase updateNotificationUsecase;
2424
private final UpdateAllNotificationUsecase updateAllNotificationUsecase;
2525
private final EnableKakaoUsecase enableKakaoUsecase;
26-
private final EnableAgitUsecase enableAgitUsecase;
2726
private final EnableEmailUsecase enableEmailUsecase;
2827

2928
@Operation(summary = "알림 목록에서 한 개 눌렀을 때 읽음 처리")
@@ -40,18 +39,14 @@ public void updateAllNotificationIsRead(@AuthenticationPrincipal SecurityUserDet
4039
updateAllNotificationUsecase.updateAllNotification(userInfo.getUserId());
4140
}
4241

42+
@Deprecated
4343
@Operation(summary = "카카오 푸시 알림 활성화/비활성화 API", description = "알림 거부였을 시 -> 승인으로 변경, 알림 승인이였을 시 -> 거부로 변경")
4444
@PatchMapping("/kakao")
4545
public void enableKaKaoWork(@AuthenticationPrincipal SecurityUserDetails userInfo) {
4646
enableKakaoUsecase.enableKakao(userInfo.getUserId());
4747
}
4848

49-
@Operation(summary = "아지트 푸시 알림 활성화/비활성화 API", description = "알림 거부였을 시 -> 승인으로 변경, 알림 승인이였을 시 -> 거부로 변경")
50-
@PatchMapping("/agit")
51-
public void enableAgit(@AuthenticationPrincipal SecurityUserDetails userInfo) {
52-
enableAgitUsecase.enableAgit(userInfo.getUserId());
53-
}
54-
49+
@Deprecated
5550
@Operation(summary = "이메일 푸시 알림 활성화/비활성화 API", description = "알림 거부였을 시 -> 승인으로 변경, 알림 승인이였을 시 -> 거부로 변경")
5651
@PatchMapping("/email")
5752
public void enableEmail(@AuthenticationPrincipal SecurityUserDetails userInfo) {

src/main/java/clap/server/adapter/inbound/web/notification/SubscribeEmitterController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.springframework.web.bind.annotation.RestController;
1515
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
1616

17+
@Deprecated
1718
@Tag(name = "SSE 관리 - 회원 등록(최초 접속시)")
1819
@WebAdapter
1920
@RequestMapping("/api/sse")

src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,26 @@
44
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
55
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
66
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
7-
import clap.server.adapter.outbound.persistense.entity.task.TaskEntity;
8-
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
97
import clap.server.adapter.outbound.persistense.mapper.MemberPersistenceMapper;
10-
import clap.server.adapter.outbound.persistense.mapper.TaskPersistenceMapper;
118
import clap.server.adapter.outbound.persistense.repository.member.MemberRepository;
12-
import clap.server.adapter.outbound.persistense.repository.task.TaskRepository;
139
import clap.server.application.port.outbound.member.CommandMemberPort;
1410
import clap.server.application.port.outbound.member.LoadMemberPort;
1511
import clap.server.common.annotation.architecture.PersistenceAdapter;
1612
import clap.server.domain.model.member.Member;
17-
import clap.server.domain.model.task.Task;
1813
import lombok.RequiredArgsConstructor;
1914
import org.springframework.data.domain.Page;
2015
import org.springframework.data.domain.Pageable;
2116

2217
import java.util.List;
2318
import java.util.Optional;
19+
import java.util.Set;
2420
import java.util.stream.Collectors;
2521

2622
@PersistenceAdapter
2723
@RequiredArgsConstructor
2824
public class MemberPersistenceAdapter implements LoadMemberPort, CommandMemberPort {
2925
private final MemberRepository memberRepository;
3026
private final MemberPersistenceMapper memberPersistenceMapper;
31-
private final TaskRepository taskRepository;
32-
private final TaskPersistenceMapper taskPersistenceMapper;
3327

3428
@Override
3529
public Optional<Member> findById(final Long id) {
@@ -83,14 +77,6 @@ public List<Member> findActiveManagers() {
8377
.collect(Collectors.toList());
8478
}
8579

86-
@Override
87-
public List<Task> findTasksByMemberIdAndStatus(final Long memberId, final List<TaskStatus> taskStatuses) {
88-
List<TaskEntity> taskEntities = taskRepository.findByProcessor_MemberIdAndTaskStatusIn(memberId, taskStatuses);
89-
return taskEntities.stream()
90-
.map(taskPersistenceMapper::toDomain)
91-
.collect(Collectors.toList());
92-
}
93-
9480
@Override
9581
public Page<Member> findAllMembers(final Pageable pageable) {
9682
return memberRepository.findAllMembers(pageable).map(memberPersistenceMapper::toDomain);
@@ -117,4 +103,8 @@ public Optional<Member> findByEmail(final String email) {
117103
.map(memberPersistenceMapper::toDomain);
118104
}
119105

106+
@Override
107+
public boolean existsByNicknamesOrEmails(Set<String> nicknames, Set<String> emails) {
108+
return memberRepository.existsByNicknamesOrEmails(nicknames, emails);
109+
}
120110
}

0 commit comments

Comments
 (0)