diff --git a/.github/ISSUE_TEMPLATE/---feature-template.md b/.github/ISSUE_TEMPLATE/---feature-template.md index 113fe286..12690c33 100755 --- a/.github/ISSUE_TEMPLATE/---feature-template.md +++ b/.github/ISSUE_TEMPLATE/---feature-template.md @@ -7,8 +7,6 @@ assignees: '' --- -# πŸš€ Feature - - ### πŸ“ Description --- diff --git a/.github/ISSUE_TEMPLATE/---refactor-template.md b/.github/ISSUE_TEMPLATE/---refactor-template.md index de6b8576..e7175252 100755 --- a/.github/ISSUE_TEMPLATE/---refactor-template.md +++ b/.github/ISSUE_TEMPLATE/---refactor-template.md @@ -7,8 +7,6 @@ assignees: '' --- -# πŸ”¨ Refactor - - ### πŸ“ Description --- diff --git a/.github/ISSUE_TEMPLATE/-bug-report-template.md b/.github/ISSUE_TEMPLATE/-bug-report-template.md index 01f6075e..4dadb84f 100755 --- a/.github/ISSUE_TEMPLATE/-bug-report-template.md +++ b/.github/ISSUE_TEMPLATE/-bug-report-template.md @@ -7,8 +7,6 @@ assignees: '' --- -# 🐞 Bug - - ### πŸ•΅οΈβ€β™€οΈ Condition --- diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 4bda5db0..2791c373 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,10 +1,17 @@ version: "3" +x-logging: &default-logging + driver: json-file + options: + max-size: "20m" + max-file: "3" + services: backend: image: ceos17/ceos-backend-dev container_name: backend hostname: backend + logging: *default-logging env_file: - .env expose: @@ -14,6 +21,7 @@ services: nginx: image: ceos17/ceos-nginx-dev + logging: *default-logging depends_on: - backend restart: always @@ -24,6 +32,7 @@ services: image: mysql:latest container_name: mysql restart: always + logging: *default-logging environment: MYSQL_DATABASE: ceos-dev MYSQL_USER: ${DB_USERNAME} @@ -46,6 +55,6 @@ services: image: redis:latest container_name: redis hostname: redis + logging: *default-logging ports: - "6379:6379" - diff --git a/docker-compose.yml b/docker-compose.yml index 959a158a..99716241 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,17 @@ version: "3" +x-logging: &default-logging + driver: json-file + options: + max-size: "20m" + max-file: "3" + services: backend: image: ceos17/ceos-backend container_name: backend hostname: backend + logging: *default-logging env_file: - .env expose: @@ -12,6 +19,7 @@ services: nginx: image: ceos17/ceos-nginx + logging: *default-logging depends_on: - backend restart: always @@ -22,5 +30,6 @@ services: image: redis:latest container_name: redis hostname: redis + logging: *default-logging ports: - - "6379:6379" \ No newline at end of file + - "6379:6379" diff --git a/src/main/java/ceos/backend/domain/activity/ActivityController.java b/src/main/java/ceos/backend/domain/activity/ActivityController.java index 6552b4e0..c3feb030 100644 --- a/src/main/java/ceos/backend/domain/activity/ActivityController.java +++ b/src/main/java/ceos/backend/domain/activity/ActivityController.java @@ -60,7 +60,7 @@ public void deleteActivity(@PathVariable Long id) { } @Operation(summary = "ν™œλ™ 이미지 url μƒμ„±ν•˜κΈ°") - @GetMapping("/image") + @PostMapping("/image") public AwsS3Url getImageUrl() { log.info("ν™œλ™ 이미지 url μƒμ„±ν•˜κΈ°"); return activityService.getImageUrl(); diff --git a/src/main/java/ceos/backend/domain/admin/AdminController.java b/src/main/java/ceos/backend/domain/admin/AdminController.java index 9bd8c51e..682e3cf0 100644 --- a/src/main/java/ceos/backend/domain/admin/AdminController.java +++ b/src/main/java/ceos/backend/domain/admin/AdminController.java @@ -22,8 +22,6 @@ public class AdminController { private final AdminService adminService; - private static final String MOBILE = "mobile"; - private static final String WEB = "web"; @Operation(summary = "λ‹‰λ„€μž„ 확인") @PostMapping("/username") @@ -41,11 +39,9 @@ public void signUp(@RequestBody @Valid SignUpRequest signUpRequest) { @Operation(summary = "둜그인") @PostMapping("/signin") - public TokenResponse signIn( - HttpServletRequest request, @RequestBody @Valid SignInRequest signInRequest) { + public TokenResponse signIn(@RequestBody @Valid SignInRequest signInRequest) { log.info("둜그인"); - String device = request.getHeader("User-Agent").contains("mobile") ? MOBILE : WEB; - return adminService.signIn(device, signInRequest); + return adminService.signIn(signInRequest); } @Operation(summary = "아이디 μ°ΎκΈ°") @@ -73,11 +69,9 @@ public void resetPwd( @Operation(summary = "λ‘œκ·Έμ•„μ›ƒ") @PostMapping("/logout") - public void logout( - HttpServletRequest request, @AuthenticationPrincipal AdminDetails adminUser) { + public void logout(@AuthenticationPrincipal AdminDetails adminUser) { log.info("λ‘œκ·Έμ•„μ›ƒ"); - String device = request.getHeader("User-Agent").contains("mobile") ? MOBILE : WEB; - adminService.logout(device, adminUser); + adminService.logout(adminUser); } @Operation(summary = "토큰 μž¬λ°œκΈ‰") diff --git a/src/main/java/ceos/backend/domain/admin/helper/AdminHelper.java b/src/main/java/ceos/backend/domain/admin/helper/AdminHelper.java index 08a86a59..31217226 100644 --- a/src/main/java/ceos/backend/domain/admin/helper/AdminHelper.java +++ b/src/main/java/ceos/backend/domain/admin/helper/AdminHelper.java @@ -148,7 +148,7 @@ public void resetPwd(ResetPwdRequest resetPwdRequest, Admin admin) { } public void matchesRefreshToken(String refreshToken, Admin admin) { - String savedToken = redisTemplate.opsForValue().get(admin.getId().toString()); + String savedToken = redisTemplate.opsForValue().get("refresh:" + admin.getId().toString()); if (savedToken == null || !savedToken.equals(refreshToken)) { throw RefreshTokenNotFound.EXCEPTION; } diff --git a/src/main/java/ceos/backend/domain/admin/service/AdminService.java b/src/main/java/ceos/backend/domain/admin/service/AdminService.java index 9474bb36..2371dff3 100644 --- a/src/main/java/ceos/backend/domain/admin/service/AdminService.java +++ b/src/main/java/ceos/backend/domain/admin/service/AdminService.java @@ -51,14 +51,14 @@ public void signUp(SignUpRequest signUpRequest) { } @Transactional - public TokenResponse signIn(String device, SignInRequest signInRequest) { + public TokenResponse signIn(SignInRequest signInRequest) { final Admin admin = adminHelper.findForSignIn(signInRequest); final Authentication authentication = adminHelper.adminAuthorizationInput(admin); adminHelper.checkRole(admin); - String redisKey = admin.getId().toString() + ":" + device; + String redisKey = "refresh:" + admin.getId().toString(); // 토큰 λ°œκΈ‰ final String accessToken = tokenProvider.createAccessToken(admin.getId(), authentication); @@ -100,10 +100,10 @@ public void resetPwd(ResetPwdRequest resetPwdRequest, AdminDetails adminUser) { } @Transactional - public void logout(String device, AdminDetails adminUser) { + public void logout(AdminDetails adminUser) { final Admin admin = adminUser.getAdmin(); - String redisKey = admin.getId().toString() + ":" + device; + String redisKey = "refresh:" + admin.getId().toString(); // λ ˆλ””μŠ€ μ‚­μ œ tokenProvider.deleteRefreshToken(redisKey); @@ -121,10 +121,13 @@ public TokenResponse reissueToken(RefreshTokenRequest refreshTokenRequest) { adminHelper.matchesRefreshToken(refreshToken, admin); // 토큰 μž¬λ°œκΈ‰ + String redisKey = "refresh:" + admin.getId(); final String newAccessToken = tokenProvider.createAccessToken(admin.getId(), authentication); + final String newRefreshToken = + tokenProvider.createRefreshToken(admin.getId(), authentication, redisKey); - return adminMapper.toTokenResponse(newAccessToken, refreshToken); + return adminMapper.toTokenResponse(newAccessToken, newRefreshToken); } @Transactional(readOnly = true) diff --git a/src/main/java/ceos/backend/domain/management/ManagementController.java b/src/main/java/ceos/backend/domain/management/ManagementController.java index 1b72adcc..ce1a5ea0 100644 --- a/src/main/java/ceos/backend/domain/management/ManagementController.java +++ b/src/main/java/ceos/backend/domain/management/ManagementController.java @@ -71,7 +71,7 @@ public void deleteManagement(@PathVariable(name = "managerId") Long managerId) { } @Operation(summary = "μž„μ›μ§„ 이미지 url μƒμ„±ν•˜κΈ°") - @GetMapping("/image") + @PostMapping("/image") public AwsS3Url getImageUrl() { log.info("μž„μ›μ§„ 이미지 url μƒμ„±ν•˜κΈ°"); return managementService.getImageUrl(); diff --git a/src/main/java/ceos/backend/domain/project/ProjectController.java b/src/main/java/ceos/backend/domain/project/ProjectController.java index 6de00476..141ad9c6 100644 --- a/src/main/java/ceos/backend/domain/project/ProjectController.java +++ b/src/main/java/ceos/backend/domain/project/ProjectController.java @@ -61,7 +61,7 @@ public void deleteActivity(@PathVariable Long projectId) { } @Operation(summary = "ν”„λ‘œμ νŠΈ 이미지 url μƒμ„±ν•˜κΈ°") - @GetMapping("/image") + @PostMapping("/image") public AwsS3Url getImageUrl() { log.info("ν”„λ‘œμ νŠΈ 이미지 url μƒμ„±ν•˜κΈ°"); return projectService.getImageUrl(); diff --git a/src/main/java/ceos/backend/domain/sponsor/SponsorController.java b/src/main/java/ceos/backend/domain/sponsor/SponsorController.java index 5dd95a12..4ab95dea 100644 --- a/src/main/java/ceos/backend/domain/sponsor/SponsorController.java +++ b/src/main/java/ceos/backend/domain/sponsor/SponsorController.java @@ -60,7 +60,7 @@ public void deleteSponsor(@PathVariable(name = "sponsorId") Long sponsorId) { } @Operation(summary = "μŠ€ν°μ„œ 이미지 url μƒμ„±ν•˜κΈ°") - @GetMapping("/image") + @PostMapping("/image") public AwsS3Url getImageUrl() { log.info("μŠ€ν°μ„œ 이미지 url μƒμ„±ν•˜κΈ°"); return sponsorService.getImageUrl(); diff --git a/src/main/java/ceos/backend/domain/startup/StartupController.java b/src/main/java/ceos/backend/domain/startup/StartupController.java index c93765c0..1f3f5ecf 100644 --- a/src/main/java/ceos/backend/domain/startup/StartupController.java +++ b/src/main/java/ceos/backend/domain/startup/StartupController.java @@ -61,7 +61,7 @@ public void deleteManagement(@PathVariable(name = "startupId") Long startupId) { } @Operation(summary = "μ„œλΉ„μŠ€ 이미지 url μƒμ„±ν•˜κΈ°") - @GetMapping("/image") + @PostMapping("/image") public AwsS3Url getImageUrl() { log.info("μ„œλΉ„μŠ€ 이미지 url μƒμ„±ν•˜κΈ°"); return startupService.getImageUrl(); diff --git a/src/main/java/ceos/backend/infra/ses/AwsSESMailGenerator.java b/src/main/java/ceos/backend/infra/ses/AwsSESMailGenerator.java index 19f5033e..6645f354 100644 --- a/src/main/java/ceos/backend/infra/ses/AwsSESMailGenerator.java +++ b/src/main/java/ceos/backend/infra/ses/AwsSESMailGenerator.java @@ -285,12 +285,12 @@ private void addRecruitDateToContext(Context context, Recruitment recruitment) { context.setVariable("startDateDoc", recruitment.getStartDateDoc().format(dateFormatter)); context.setVariable("endDateDoc", recruitment.getEndDateDoc().format(dateTimeFormatter)); - context.setVariable("resultDateDoc", recruitment.getResultDateDoc().format(dateFormatter)); + context.setVariable("resultDateDoc", recruitment.getResultDateDoc().format(dateTimeFormatter)); context.setVariable( "startDateInterview", recruitment.getStartDateInterview().format(dateFormatter)); context.setVariable( "endDateInterview", recruitment.getEndDateInterview().format(dateFormatter)); context.setVariable( - "resultDateFinal", recruitment.getResultDateFinal().format(dateFormatter)); + "resultDateFinal", recruitment.getResultDateFinal().format(dateTimeFormatter)); } } diff --git a/src/main/resources/templates/component/ceosQuestionInfo.html b/src/main/resources/templates/component/ceosQuestionInfo.html index e2481ede..f3c47b7e 100644 --- a/src/main/resources/templates/component/ceosQuestionInfo.html +++ b/src/main/resources/templates/component/ceosQuestionInfo.html @@ -29,7 +29,7 @@ line-height: 170%; color: #232527;" th:text="${ceosQuestionInfo.otDate}"> - μ˜€ν‹° λ‚ μ§œ + ν•˜μ΄(from. 23κΈ° λ°±μ—”λ“œ 파트μž₯) @@ -55,7 +55,7 @@ line-height: 170%; color: #232527;" th:text="${ceosQuestionInfo.demodayDate}"> - 데λͺ¨ + λͺ°λΌ(from. 23κΈ° ν”„λ‘ νŠΈνŒŒνŠΈμž₯) @@ -81,7 +81,7 @@ line-height: 170%; color: #232527;" th:text="${ceosQuestionInfo.otherActivities}"> - 백수 + 백수(from. 23κΈ° 회μž₯) diff --git a/src/main/resources/templates/component/copyright.html b/src/main/resources/templates/component/copyright.html index d3f3b669..96e4ca97 100644 --- a/src/main/resources/templates/component/copyright.html +++ b/src/main/resources/templates/component/copyright.html @@ -21,7 +21,7 @@ font-size: 20px; line-height: 150%; color: #D6DADF;"> - Β© 2016-2026 Ceos ALL RIGHTS RESERVED. + Β© 2016-2026 CEOS ALL RIGHTS RESERVED. diff --git a/src/main/resources/templates/component/greeting.html b/src/main/resources/templates/component/greeting.html index bddd7fd8..c7f052a3 100644 --- a/src/main/resources/templates/component/greeting.html +++ b/src/main/resources/templates/component/greeting.html @@ -38,7 +38,7 @@ color: #3E4CF7;" th:text="${greetInfo.generation}" > - 22 + 24 - 22 + 24 [μ ‘μˆ˜κΈ°κ°„] - 8μ›” 20일 (수) ~ - 8μ›” 27일 (수) 24:00
+ 8μ›” 13일 (λͺ©) ~ + 8μ›” 23일 (일) 22:00
[μ„œλ₯˜λ°œν‘œ] - 8μ›” 29일 (금)
+ 8μ›” 26일 (수) 14:00
[κ°œλ³„λ©΄μ ‘] - 8μ›” 30일 (ν† ) ~ - 8μ›” 31일 (일)
+ 8μ›” 28일 (금) ~ + 8μ›” 31일 (μ›”)
[μ΅œμ’…λ°œν‘œ] - 9μ›” 1일 (μ›”)
+ 8μ›” 31일 (μ›”) 20:00


@@ -90,11 +90,11 @@ μˆ˜μš”μΌ μ˜€ν›„ 7μ‹œ (μ•½ 2μ‹œκ°„ μ§„ν–‰)
- https://maddening-bottle-962.notion.site/CEOS-23-2ef11100f5bc8142bc7beef39c257872
+ https://app.notion.com/p/CEOS-24-615ac01f4e5c835c9337018ff67f083d?source=copy_link
[μŠ€ν„°λ””] νŒŒνŠΈλ³„ μš”μΌ/μ‹œκ°„ 상이
- https://maddening-bottle-962.notion.site/CEOS-23-2fb11100f5bc80b99025f388207fcfe2
+ https://app.notion.com/p/CEOS-24-516ac01f4e5c829ab4a7811a48298755?source=copy_link


CEOS - 23 + 24 κΈ° λ¦¬ν¬λ£¨νŒ…μ„ μ‹œμž‘ν•©λ‹ˆλ‹€! @@ -43,7 +43,7 @@ μ•ˆλ…•ν•˜μ„Έμš”. μ‹ μ΄Œ μ—°ν•© IT 창업동아리 CEOSμž…λ‹ˆλ‹€.
- CEOS 23κΈ° μ„œλ₯˜ 지원이 μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

+ CEOS 24κΈ° μ„œλ₯˜ 지원이 μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

μ„Έμ˜€μŠ€λŠ” 기획, λ””μžμΈ, 개발 μ—­λŸ‰μ„ κ²ΈλΉ„ν•œ μ—΄μ • μžˆλŠ” λŒ€ν•™μƒλ“€μ΄ λͺ¨μ—¬ 창업을 κ²½ν—˜ν•˜κ³  κΏˆμ„ μ‹€ν˜„ν•  수 μžˆλŠ” κ³΅κ°„μž…λ‹ˆλ‹€.
diff --git a/src/main/resources/templates/component/title.html b/src/main/resources/templates/component/title.html index 9c769d19..82861150 100644 --- a/src/main/resources/templates/component/title.html +++ b/src/main/resources/templates/component/title.html @@ -9,7 +9,7 @@