From 3210eada6c3f8e026c0c2424b517cfb18f2e499f Mon Sep 17 00:00:00 2001 From: soohyun Date: Tue, 4 Feb 2025 02:35:20 +0900 Subject: [PATCH 1/6] =?UTF-8?q?fix(AdminStatus):=20=EC=97=A3=EC=A7=80=20?= =?UTF-8?q?=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=88=98=EC=A0=95.=20=EC=95=88?= =?UTF-8?q?=EB=90=98=EB=A9=B4=20=EC=9D=B8=ED=94=84=EB=9D=BC=EB=9E=91=20yml?= =?UTF-8?q?=20=EC=9E=AC=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/AdminController.java | 20 ++++++++++++++++--- .../app/toaster/admin/domain/AdminStatus.java | 10 ++++++++++ .../toaster/admin/service/AdminService.java | 15 +++++++------- .../discord/DiscordMessageProvider.java | 2 +- 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 linkmind/src/main/java/com/app/toaster/admin/domain/AdminStatus.java diff --git a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java index 75fac920..9f64a665 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java +++ b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java @@ -3,11 +3,14 @@ import com.app.toaster.admin.common.RedirectResponse; import com.app.toaster.admin.controller.dto.command.VerifyNewAdminCommand; import com.app.toaster.admin.controller.dto.request.AdminTotpDto; +import com.app.toaster.admin.controller.dto.request.LinkDto; import com.app.toaster.admin.controller.dto.request.SignInDto; import com.app.toaster.admin.controller.dto.response.AdminResponse; +import com.app.toaster.admin.domain.AdminStatus; import com.app.toaster.admin.entity.ToasterAdmin; import com.app.toaster.admin.service.AdminService; import com.app.toaster.admin.config.QrMfaAuthenticator; +import com.app.toaster.admin.service.AdminLinkService; import com.app.toaster.exception.Error; import com.app.toaster.exception.Success; import com.app.toaster.exception.model.CustomException; @@ -36,18 +39,18 @@ class AdminController { private final S3Service s3Service; private final QrMfaAuthenticator qrMfaAuthenticator; private final AdminService adminService; + private final AdminLinkService adminLinkService; @PostMapping("/register") @ResponseBody public RedirectResponse registerAdmin(@RequestBody SignInDto signInDto, HttpSession session) { - VerifyNewAdminCommand res = adminService.registerAdmin(signInDto.username(), signInDto.password()); String key = res.key(); Long adminId = res.id(); - boolean isNewAdmin = res.isNewAdmin(); + AdminStatus adminStatus = res.adminStatus(); - if (isNewAdmin){ + if (adminStatus.equals(AdminStatus.FIRST_REGISTER)){ key = executeDiscordQrOperation(key); } @@ -93,6 +96,17 @@ public RedirectResponse responseIsAdminView(HttpSession session, return RedirectResponse.success(Success.LOGIN_SUCCESS,"main", result); } + @PostMapping("/link") + public void addRecommendLink(@RequestBody LinkDto linkDto){ + adminLinkService.addNewRecommendLink(linkDto); + } + + @GetMapping("/link") + public String getAllLink(Model model){ + model.addAttribute("links", adminLinkService.findAllLink()); + return "basic/linkListPage"; + } + private String executeDiscordQrOperation(String key){ MultipartFile qrImage = qrMfaAuthenticator.generateQrCode(key); String imageKey = s3Service.uploadImage(qrImage, "admin/"); diff --git a/linkmind/src/main/java/com/app/toaster/admin/domain/AdminStatus.java b/linkmind/src/main/java/com/app/toaster/admin/domain/AdminStatus.java new file mode 100644 index 00000000..e970cf09 --- /dev/null +++ b/linkmind/src/main/java/com/app/toaster/admin/domain/AdminStatus.java @@ -0,0 +1,10 @@ +package com.app.toaster.admin.domain; + +import lombok.Getter; + +@Getter +public enum AdminStatus { + ACCEPTED, + NEED_RENEW, + FIRST_REGISTER +} diff --git a/linkmind/src/main/java/com/app/toaster/admin/service/AdminService.java b/linkmind/src/main/java/com/app/toaster/admin/service/AdminService.java index e5b817ee..50c67fe6 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/service/AdminService.java +++ b/linkmind/src/main/java/com/app/toaster/admin/service/AdminService.java @@ -1,6 +1,7 @@ package com.app.toaster.admin.service; import com.app.toaster.admin.controller.dto.command.VerifyNewAdminCommand; +import com.app.toaster.admin.domain.AdminStatus; import com.app.toaster.admin.entity.VerifiedAdmin; import com.app.toaster.admin.entity.ToasterAdmin; import com.app.toaster.admin.infrastructure.AdminRepository; @@ -60,17 +61,17 @@ public TokenResponseDto issueToken(Long testUserId) { @Transactional - public VerifyNewAdminCommand registerVerifiedUser(final ToasterAdmin toasterAdmin, boolean isNewAdmin) { + public VerifyNewAdminCommand registerVerifiedUser(final ToasterAdmin toasterAdmin, AdminStatus adminStatus) { String otpKey = null; Long id = null; Optional existVerifiedAdmin = verifiedAdminRepository.findByAdmin(toasterAdmin); - if (isNewAdmin) { //새로운 어드민의 경우 등록. + if (AdminStatus.NEED_RENEW.equals(adminStatus) || AdminStatus.FIRST_REGISTER.equals(adminStatus)) { //새로운 어드민의 경우 등록. log.info("갱신해야되는 케이스."); - deletePastVerify(existVerifiedAdmin); + deletePastVerify(existVerifiedAdmin); //새로운 어드민이면 여기서 기존 verify삭제 안함. GoogleAuthenticatorKey key = googleAuthenticator.createCredentials(); @@ -96,7 +97,7 @@ public VerifyNewAdminCommand registerVerifiedUser(final ToasterAdmin toasterAdmi } - return new VerifyNewAdminCommand(id, otpKey, isNewAdmin); + return new VerifyNewAdminCommand(id, otpKey, adminStatus); } @Transactional @@ -111,9 +112,9 @@ public VerifyNewAdminCommand registerAdmin(String username, String password) { if (existAdmin != null) { log.info("존재합니다. 전 이 게임을 해봤어요."); if (existAdmin.verifyLastDate()) { //검증된 경우면 걍 어드민을 리턴. - return registerVerifiedUser(existAdmin, false); + return registerVerifiedUser(existAdmin, AdminStatus.ACCEPTED); }else{ - return registerVerifiedUser(existAdmin, true); //아닌 경우는 갱신을 해야됨. + return registerVerifiedUser(existAdmin, AdminStatus.NEED_RENEW); //아닌 경우는 갱신을 해야됨. } } @@ -126,7 +127,7 @@ public VerifyNewAdminCommand registerAdmin(String username, String password) { .password(encPassword) .build(); - return registerVerifiedUser(adminRepository.save(toasterAdmin), true); + return registerVerifiedUser(adminRepository.save(toasterAdmin), AdminStatus.FIRST_REGISTER); } } throw new CustomException(Error.NOT_FOUND_USER_EXCEPTION, "어드민이 아닙니다."); diff --git a/linkmind/src/main/java/com/app/toaster/external/client/discord/DiscordMessageProvider.java b/linkmind/src/main/java/com/app/toaster/external/client/discord/DiscordMessageProvider.java index 788de8dc..21fac3d9 100644 --- a/linkmind/src/main/java/com/app/toaster/external/client/discord/DiscordMessageProvider.java +++ b/linkmind/src/main/java/com/app/toaster/external/client/discord/DiscordMessageProvider.java @@ -53,7 +53,7 @@ public void sendNotification(NotificationDto notification) { } } } - + @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void sendAdmin(NotificationDto notification) { if (!Arrays.asList(environment.getActiveProfiles()).contains("local")) { // 일단 로컬 막아두겠습니다. TODO: 웹훅 주소 바꾸기 try { From 20876c8bcd075e05f643a85f295230efbe89df73 Mon Sep 17 00:00:00 2001 From: soohyun Date: Tue, 4 Feb 2025 02:40:01 +0900 Subject: [PATCH 2/6] =?UTF-8?q?chore(AdminController):=20=EC=95=84?= =?UTF-8?q?=EC=A7=81=20=EC=9E=91=EC=84=B1=EC=95=88=EB=90=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/AdminController.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java index 9f64a665..98894f7e 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java +++ b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java @@ -96,16 +96,16 @@ public RedirectResponse responseIsAdminView(HttpSession session, return RedirectResponse.success(Success.LOGIN_SUCCESS,"main", result); } - @PostMapping("/link") - public void addRecommendLink(@RequestBody LinkDto linkDto){ - adminLinkService.addNewRecommendLink(linkDto); - } - - @GetMapping("/link") - public String getAllLink(Model model){ - model.addAttribute("links", adminLinkService.findAllLink()); - return "basic/linkListPage"; - } +// @PostMapping("/link") +// public void addRecommendLink(@RequestBody LinkDto linkDto){ +// adminLinkService.addNewRecommendLink(linkDto); +// } +// +// @GetMapping("/link") +// public String getAllLink(Model model){ +// model.addAttribute("links", adminLinkService.findAllLink()); +// return "basic/linkListPage"; +// } private String executeDiscordQrOperation(String key){ MultipartFile qrImage = qrMfaAuthenticator.generateQrCode(key); From 680d89877f7a40713053ee8a71ca98dfb8fbf378 Mon Sep 17 00:00:00 2001 From: soohyun Date: Tue, 4 Feb 2025 02:42:45 +0900 Subject: [PATCH 3/6] =?UTF-8?q?chore(AdminController):=20=EC=95=84?= =?UTF-8?q?=EC=A7=81=20=EC=9E=91=EC=84=B1=EC=95=88=EB=90=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/app/toaster/admin/controller/AdminController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java index 98894f7e..2f3b2bb3 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java +++ b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java @@ -39,7 +39,7 @@ class AdminController { private final S3Service s3Service; private final QrMfaAuthenticator qrMfaAuthenticator; private final AdminService adminService; - private final AdminLinkService adminLinkService; +// private final AdminLinkService adminLinkService; @PostMapping("/register") @ResponseBody From d488b451475417f8abff492842981e2761ffceca Mon Sep 17 00:00:00 2001 From: soohyun Date: Tue, 4 Feb 2025 02:47:42 +0900 Subject: [PATCH 4/6] =?UTF-8?q?chore(AdminController):=20=EC=95=84?= =?UTF-8?q?=EC=A7=81=20=EC=9E=91=EC=84=B1=EC=95=88=EB=90=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/app/toaster/admin/controller/AdminController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java index 2f3b2bb3..c9ad4569 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java +++ b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java @@ -10,7 +10,7 @@ import com.app.toaster.admin.entity.ToasterAdmin; import com.app.toaster.admin.service.AdminService; import com.app.toaster.admin.config.QrMfaAuthenticator; -import com.app.toaster.admin.service.AdminLinkService; +//import com.app.toaster.admin.service.AdminLinkService; import com.app.toaster.exception.Error; import com.app.toaster.exception.Success; import com.app.toaster.exception.model.CustomException; From 57e366684ba4c023a6c310680bd94b8bedfe2caf Mon Sep 17 00:00:00 2001 From: soohyun Date: Tue, 4 Feb 2025 02:52:16 +0900 Subject: [PATCH 5/6] =?UTF-8?q?chore(AdminController):=20=EC=99=9C=20?= =?UTF-8?q?=EB=A1=9C=EC=BB=AC=EC=97=90=EC=84=9C=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EB=90=98=EB=8A=94=EA=B1=B0=EC=A7=80..=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/app/toaster/admin/controller/AdminController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java index c9ad4569..0262c3b6 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java +++ b/linkmind/src/main/java/com/app/toaster/admin/controller/AdminController.java @@ -3,7 +3,7 @@ import com.app.toaster.admin.common.RedirectResponse; import com.app.toaster.admin.controller.dto.command.VerifyNewAdminCommand; import com.app.toaster.admin.controller.dto.request.AdminTotpDto; -import com.app.toaster.admin.controller.dto.request.LinkDto; +//import com.app.toaster.admin.controller.dto.request.LinkDto; import com.app.toaster.admin.controller.dto.request.SignInDto; import com.app.toaster.admin.controller.dto.response.AdminResponse; import com.app.toaster.admin.domain.AdminStatus; From 076988fc2ba8a23712803d9c33abd3756a775273 Mon Sep 17 00:00:00 2001 From: soohyun Date: Tue, 4 Feb 2025 10:20:10 +0900 Subject: [PATCH 6/6] chore(VerifyNewAdminCommand): add dto --- .../admin/controller/dto/command/VerifyNewAdminCommand.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/linkmind/src/main/java/com/app/toaster/admin/controller/dto/command/VerifyNewAdminCommand.java b/linkmind/src/main/java/com/app/toaster/admin/controller/dto/command/VerifyNewAdminCommand.java index ecb85f80..f5be98cf 100644 --- a/linkmind/src/main/java/com/app/toaster/admin/controller/dto/command/VerifyNewAdminCommand.java +++ b/linkmind/src/main/java/com/app/toaster/admin/controller/dto/command/VerifyNewAdminCommand.java @@ -1,8 +1,10 @@ package com.app.toaster.admin.controller.dto.command; +import com.app.toaster.admin.domain.AdminStatus; + public record VerifyNewAdminCommand( Long id, String key, - boolean isNewAdmin + AdminStatus adminStatus ) { }