From 867926391fa7477ea166e28437cb5e99510d5dc5 Mon Sep 17 00:00:00 2001 From: k-oshita Date: Thu, 17 Sep 2026 13:56:58 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[ADD]=20=E7=9B=AE=E6=A8=99=E3=81=AE?= =?UTF-8?q?=E3=81=9F=E3=82=81=E3=81=AERepository=E3=82=92=E4=BD=9C?= =?UTF-8?q?=E6=88=90=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/app/infra/repository/GoalRepository.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/java/com/example/demo/app/infra/repository/GoalRepository.java diff --git a/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java b/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java new file mode 100644 index 0000000..ce05827 --- /dev/null +++ b/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java @@ -0,0 +1,11 @@ +package com.example.demo.app.infra.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.example.demo.app.infra.entity.GoalEntity; + +@Repository +public interface GoalRepository extends JpaRepository { + +} \ No newline at end of file From 68fbe403859b62593a9643771e59b513512e0d0a Mon Sep 17 00:00:00 2001 From: k-oshita Date: Thu, 17 Sep 2026 14:03:44 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[EDIT]=20=E6=94=B9=E8=A1=8C=E3=83=BB?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E8=AA=BF=E6=95=B4=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/app/infra/repository/GoalRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java b/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java index ce05827..a5a06cd 100644 --- a/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java +++ b/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java @@ -7,5 +7,5 @@ import com.example.demo.app.infra.entity.GoalEntity; @Repository public interface GoalRepository extends JpaRepository { - +//aaaaaa } \ No newline at end of file From 0b336dcf5aae3a620f508ae78bea533c98a5481f Mon Sep 17 00:00:00 2001 From: k-oshita Date: Thu, 17 Sep 2026 14:16:29 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[EDIT]=20=E6=94=B9=E8=A1=8C=E3=83=BB?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E4=BD=8D=E7=BD=AE=E3=82=92=E8=AA=BF?= =?UTF-8?q?=E6=95=B4=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/app/infra/repository/GoalRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java b/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java index a5a06cd..17d2bbf 100644 --- a/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java +++ b/src/main/java/com/example/demo/app/infra/repository/GoalRepository.java @@ -7,5 +7,5 @@ import com.example.demo.app.infra.entity.GoalEntity; @Repository public interface GoalRepository extends JpaRepository { -//aaaaaa + //aaa } \ No newline at end of file From 192191d352f1a468d450890424445c7383c82262 Mon Sep 17 00:00:00 2001 From: s-morimoto Date: Thu, 17 Sep 2026 15:59:33 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[ADD]=E3=83=91=E3=82=B9=E3=83=AF=E3=83=BC?= =?UTF-8?q?=E3=83=89=E5=86=8D=E8=A8=AD=E5=AE=9A=E3=81=AE=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/PasswordResetService.java | 8 +++ .../impl/PasswordResetServiceImpl.java | 41 +++++++++++++ .../controller/PasswordResetController.java | 61 +++++++++++++++++++ .../presentation/form/PasswordResetForm.java | 13 ++++ .../resources/templates/password_reset.html | 42 +++++++++++++ .../templates/user_register_confirm.html | 2 +- 6 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/demo/app/domain/service/PasswordResetService.java create mode 100644 src/main/java/com/example/demo/app/domain/service/impl/PasswordResetServiceImpl.java create mode 100644 src/main/java/com/example/demo/app/presentation/controller/PasswordResetController.java create mode 100644 src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java create mode 100644 src/main/resources/templates/password_reset.html diff --git a/src/main/java/com/example/demo/app/domain/service/PasswordResetService.java b/src/main/java/com/example/demo/app/domain/service/PasswordResetService.java new file mode 100644 index 0000000..ec1140e --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/PasswordResetService.java @@ -0,0 +1,8 @@ +package com.example.demo.app.domain.service; + +import com.example.demo.app.presentation.form.PasswordResetForm; + +public interface PasswordResetService { + + boolean resetPassword(Long userId, PasswordResetForm passwordResetForm); +} diff --git a/src/main/java/com/example/demo/app/domain/service/impl/PasswordResetServiceImpl.java b/src/main/java/com/example/demo/app/domain/service/impl/PasswordResetServiceImpl.java new file mode 100644 index 0000000..2866cea --- /dev/null +++ b/src/main/java/com/example/demo/app/domain/service/impl/PasswordResetServiceImpl.java @@ -0,0 +1,41 @@ +package com.example.demo.app.domain.service.impl; + +import org.springframework.stereotype.Service; + +import com.example.demo.app.domain.service.PasswordResetService; +import com.example.demo.app.infra.entity.UserEntity; +import com.example.demo.app.infra.repository.UserRepository; +import com.example.demo.app.presentation.form.PasswordResetForm; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class PasswordResetServiceImpl implements PasswordResetService { + + private final UserRepository userRepository; + + @Override + public boolean resetPassword( + Long userId, + PasswordResetForm passwordResetForm) { + + if (!passwordResetForm.getPassword() + .equals(passwordResetForm.getPasswordConfirm())) { + return false; + } + + UserEntity userEntity = + userRepository.findById(userId).orElse(null); + + if (userEntity == null) { + return false; + } + + userEntity.setPassword(passwordResetForm.getPassword()); + + userRepository.save(userEntity); + + return true; + } +} diff --git a/src/main/java/com/example/demo/app/presentation/controller/PasswordResetController.java b/src/main/java/com/example/demo/app/presentation/controller/PasswordResetController.java new file mode 100644 index 0000000..b5fcfba --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/controller/PasswordResetController.java @@ -0,0 +1,61 @@ +package com.example.demo.app.presentation.controller; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; + +import com.example.demo.app.domain.service.PasswordResetService; +import com.example.demo.app.presentation.form.PasswordResetForm; + +import lombok.RequiredArgsConstructor; + +@Controller +@RequiredArgsConstructor +public class PasswordResetController { + + private final PasswordResetService passwordResetService; + + @GetMapping("/password_reset") + public String showPasswordReset(Model model) { + + model.addAttribute( + "passwordResetForm", + new PasswordResetForm()); + + return "password_reset"; + } + + @PostMapping("/password_reset") + public String resetPassword( + PasswordResetForm passwordResetForm, + Model model, + HttpSession session) { + + Long userId = + (Long) session.getAttribute("passwordResetUserId"); + + if (userId == null) { + return "redirect:/login"; + } + + boolean isReset = + passwordResetService.resetPassword( + userId, + passwordResetForm); + + if (!isReset) { + model.addAttribute( + "errorMessage", + "パスワードが一致していません。"); + + return "password_reset"; + } + + session.removeAttribute("passwordResetUserId"); + + return "redirect:/login"; + } +} diff --git a/src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java b/src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java new file mode 100644 index 0000000..3213e1b --- /dev/null +++ b/src/main/java/com/example/demo/app/presentation/form/PasswordResetForm.java @@ -0,0 +1,13 @@ +package com.example.demo.app.presentation.form; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PasswordResetForm { + private String password; + private String passwordConfirm; +} diff --git a/src/main/resources/templates/password_reset.html b/src/main/resources/templates/password_reset.html new file mode 100644 index 0000000..522fd4b --- /dev/null +++ b/src/main/resources/templates/password_reset.html @@ -0,0 +1,42 @@ + + + + +パスワード再設定 + + +
+ +
+

パスワード再設定

+ +
+
+ + +
+ +
+ + +
+ + +
+ +
+

+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/user_register_confirm.html b/src/main/resources/templates/user_register_confirm.html index aad56dd..2b35041 100644 --- a/src/main/resources/templates/user_register_confirm.html +++ b/src/main/resources/templates/user_register_confirm.html @@ -1,5 +1,5 @@ - + 新規会員登録確認