Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a7d5b03

Browse files
Reset Password - displaying the form
1 parent 53082b6 commit a7d5b03

File tree

6 files changed

+168
-0
lines changed

6 files changed

+168
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.naturalprogrammer.spring5tutorial.commands;
2+
3+
import com.naturalprogrammer.spring5tutorial.validation.Password;
4+
import com.naturalprogrammer.spring5tutorial.validation.RetypePassword;
5+
6+
@RetypePassword
7+
public class ResetPasswordCommand {
8+
9+
@Password
10+
private String password;
11+
12+
@Password
13+
private String retypePassword;
14+
15+
public String getPassword() {
16+
return password;
17+
}
18+
19+
public void setPassword(String password) {
20+
this.password = password;
21+
}
22+
23+
public String getRetypePassword() {
24+
return retypePassword;
25+
}
26+
27+
public void setRetypePassword(String retypePassword) {
28+
this.retypePassword = retypePassword;
29+
}
30+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.naturalprogrammer.spring5tutorial.controllers;
2+
3+
import org.apache.commons.logging.Log;
4+
import org.apache.commons.logging.LogFactory;
5+
import org.springframework.stereotype.Controller;
6+
import org.springframework.ui.Model;
7+
import org.springframework.validation.BindingResult;
8+
import org.springframework.validation.annotation.Validated;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
13+
14+
import com.naturalprogrammer.spring5tutorial.commands.ResetPasswordCommand;
15+
import com.naturalprogrammer.spring5tutorial.services.UserService;
16+
17+
@Controller
18+
@RequestMapping("/reset-password/{resetPasswordCode}")
19+
public class ResetPasswordController {
20+
21+
private static Log log = LogFactory.getLog(ResetPasswordController.class);
22+
23+
private UserService userService;
24+
25+
public ResetPasswordController(UserService userService) {
26+
27+
this.userService = userService;
28+
}
29+
30+
@GetMapping
31+
public String resetPassword(Model model) {
32+
33+
model.addAttribute(new ResetPasswordCommand());
34+
return "reset-password";
35+
}
36+
37+
@PostMapping
38+
public String doResetPassword(@Validated ResetPasswordCommand resetPasswordCommand,
39+
BindingResult result,
40+
RedirectAttributes redirectAttributes) {
41+
42+
if (result.hasErrors())
43+
return "reset-password";
44+
45+
//userService.signup(user);
46+
//MyUtils.flash(redirectAttributes, "success", "signupSuccess");
47+
return "redirect:/";
48+
}
49+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.naturalprogrammer.spring5tutorial.validation;
2+
3+
import static java.lang.annotation.ElementType.TYPE;
4+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
5+
6+
import java.lang.annotation.Documented;
7+
import java.lang.annotation.Retention;
8+
import java.lang.annotation.Target;
9+
10+
import javax.validation.Constraint;
11+
12+
@Constraint(validatedBy=RetypePasswordValidator.class)
13+
@Documented
14+
@Retention(RUNTIME)
15+
@Target(TYPE)
16+
public @interface RetypePassword {
17+
18+
String message() default "{passwordsDoNotMatch}";
19+
20+
Class[] groups() default {};
21+
22+
Class[] payload() default {};
23+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.naturalprogrammer.spring5tutorial.validation;
2+
3+
import java.util.Objects;
4+
5+
import javax.validation.ConstraintValidator;
6+
import javax.validation.ConstraintValidatorContext;
7+
8+
import org.springframework.stereotype.Component;
9+
10+
import com.naturalprogrammer.spring5tutorial.commands.ResetPasswordCommand;
11+
import com.naturalprogrammer.spring5tutorial.repositories.UserRepository;
12+
13+
@Component
14+
public class RetypePasswordValidator
15+
implements ConstraintValidator<RetypePassword, ResetPasswordCommand> {
16+
17+
private UserRepository userRepository;
18+
19+
public RetypePasswordValidator(UserRepository userRepository) {
20+
this.userRepository = userRepository;
21+
}
22+
23+
@Override
24+
public void initialize(RetypePassword arg0) {
25+
// TODO Auto-generated method stub
26+
27+
}
28+
29+
@Override
30+
public boolean isValid(ResetPasswordCommand resetPasswordCommand, ConstraintValidatorContext arg1) {
31+
32+
return Objects.equals(resetPasswordCommand.getPassword(),
33+
resetPasswordCommand.getRetypePassword());
34+
}
35+
}

‎src/main/resources/ValidationMessages.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ emailSizeError: Email size should be between {min} and {max} chars
33
duplicateEmail: Email should be unique
44

55
emailNotFound: Email address not found
6+
7+
passwordsDoNotMatch: Passwords do not match
8+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2+
<%@include file="includes/header.jsp"%>
3+
4+
<div class="panel panel-primary">
5+
<div class="panel-heading">
6+
<h3 class="panel-title">Reset your password</h3>
7+
</div>
8+
<div class="panel-body">
9+
<form:form modelAttribute="resetPasswordCommand">
10+
11+
<form:errors cssClass="error"/>
12+
13+
<div class="form-group">
14+
<form:label path="password">Password</form:label>
15+
<form:input path="password" type="password" class="form-control" id="exampleInputPassword1" placeholder="Password" />
16+
<form:errors path="password" cssClass="error" />
17+
</div>
18+
<div class="form-group">
19+
<form:label path="retypePassword">Retype Password</form:label>
20+
<form:input path="retypePassword" type="password" class="form-control" id="exampleInputPassword2" placeholder="Retype Password" />
21+
<form:errors path="retypePassword" cssClass="error" />
22+
</div>
23+
<button type="submit" class="btn btn-primary">Reset Password</button>
24+
</form:form>
25+
</div>
26+
</div>
27+
28+
<%@include file="includes/footer.jsp"%>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /