Skip to content

Commit 75968ea

Browse files
author
Eugen
committed
Merge pull request eugenp#38 from egmp777/master
Security Registration Code
2 parents 6106a9f + 6272a53 commit 75968ea

25 files changed

+195
-71
lines changed

spring-security-login-error-handling/.classpath

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,18 @@
1717
<attribute name="maven.pomderived" value="true"/>
1818
</attributes>
1919
</classpathentry>
20-
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
20+
<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
2121
<attributes>
2222
<attribute name="maven.pomderived" value="true"/>
2323
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
2424
</attributes>
2525
</classpathentry>
26-
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
26+
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
2727
<attributes>
2828
<attribute name="owner.project.facets" value="java"/>
2929
</attributes>
3030
</classpathentry>
31+
<classpathentry exported="true" kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
32+
<classpathentry exported="true" kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
3133
<classpathentry kind="output" path="target/classes"/>
3234
</classpath>

spring-security-login-error-handling/.project

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
</arguments>
2727
</buildCommand>
2828
<buildCommand>
29-
<name>org.eclipse.wst.validation.validationbuilder</name>
29+
<name>org.jboss.tools.jst.web.kb.kbbuilder</name>
3030
<arguments>
3131
</arguments>
3232
</buildCommand>
@@ -40,6 +40,11 @@
4040
<arguments>
4141
</arguments>
4242
</buildCommand>
43+
<buildCommand>
44+
<name>org.eclipse.wst.validation.validationbuilder</name>
45+
<arguments>
46+
</arguments>
47+
</buildCommand>
4348
</buildSpec>
4449
<natures>
4550
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
@@ -50,5 +55,6 @@
5055
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
5156
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
5257
<nature>org.hibernate.eclipse.console.hibernateNature</nature>
58+
<nature>org.jboss.tools.jst.web.kb.kbnature</nature>
5359
</natures>
5460
</projectDescription>

spring-security-login-error-handling/pom.xml

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
<name>spring-security-login-and-registration</name>
88
<packaging>war</packaging>
99
<version>1.0.0-BUILD-SNAPSHOT</version>
10-
1110
<parent>
1211
<groupId>org.springframework.boot</groupId>
1312
<artifactId>spring-boot-starter-parent</artifactId>
1413
<version>1.1.5.RELEASE</version>
1514
</parent>
16-
1715
<dependencies>
1816
<!-- Spring -->
1917
<dependency>
@@ -29,9 +27,6 @@
2927
<groupId>org.springframework</groupId>
3028
<artifactId>spring-context-support</artifactId>
3129
</dependency>
32-
33-
<!-- Validation -->
34-
3530
<!-- logging -->
3631
<dependency>
3732
<groupId>org.slf4j</groupId>
@@ -40,57 +35,47 @@
4035
<dependency>
4136
<groupId>ch.qos.logback</groupId>
4237
<artifactId>logback-classic</artifactId>
43-
<!-- <scope>runtime</scope> -->
4438
</dependency>
45-
4639
<dependency>
4740
<groupId>org.slf4j</groupId>
4841
<artifactId>jcl-over-slf4j</artifactId>
4942
<!-- <scope>runtime</scope> --> <!-- some spring dependencies need to compile against jcl -->
5043
</dependency>
51-
5244
<dependency> <!-- needed to bridge to slf4j for projects that use the log4j APIs directly -->
5345
<groupId>org.slf4j</groupId>
5446
<artifactId>log4j-over-slf4j</artifactId>
5547
</dependency>
56-
5748
<!-- @Inject -->
5849
<dependency>
5950
<groupId>javax.inject</groupId>
6051
<artifactId>javax.inject</artifactId>
6152
<version>${javax.inject.version}</version>
6253
</dependency>
63-
6454
<!-- Servlet -->
6555
<dependency>
6656
<groupId>javax.servlet</groupId>
6757
<artifactId>javax.servlet-api</artifactId>
6858
</dependency>
69-
7059
<dependency>
7160
<groupId>javax.servlet.jsp</groupId>
7261
<artifactId>javax.servlet.jsp-api</artifactId>
7362
<version>${javax.servlet.jsp-api.version}</version>
7463
</dependency>
75-
7664
<dependency>
7765
<groupId>javax.servlet</groupId>
7866
<artifactId>jstl</artifactId>
7967
</dependency>
80-
8168
<!-- Taglibs -->
8269
<dependency>
8370
<groupId>org.springframework.security</groupId>
8471
<artifactId>spring-security-taglibs</artifactId>
8572
</dependency>
86-
8773
<!-- Test -->
8874
<dependency>
8975
<groupId>junit</groupId>
9076
<artifactId>junit</artifactId>
9177
<scope>test</scope>
9278
</dependency>
93-
9479
<!-- Spring Data JPA dependencies -->
9580
<dependency>
9681
<groupId>org.springframework.data</groupId>
@@ -104,7 +89,6 @@
10489
<groupId>org.hibernate</groupId>
10590
<artifactId>hibernate-validator</artifactId>
10691
</dependency>
107-
10892
<!-- DB dependencies -->
10993
<dependency>
11094
<groupId>mysql</groupId>
@@ -129,7 +113,6 @@
129113
<version>${guava.version}</version>
130114
</dependency>
131115
</dependencies>
132-
133116
<build>
134117
<finalName>spring-security-login-and-registration</finalName>
135118
<resources>
@@ -144,22 +127,16 @@
144127
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
145128
<org.springframework.security.version>3.2.5.RELEASE</org.springframework.security.version>
146129
<org.aspectj-version>1.6.10</org.aspectj-version>
147-
148130
<!-- logging -->
149131
<org.slf4j.version>1.7.6</org.slf4j.version>
150132
<logback.version>1.1.1</logback.version>
151-
152133
<!-- javax jsp -->
153134
<javax.servlet.jsp-api.version>2.3.2-b01</javax.servlet.jsp-api.version>
154-
155135
<!-- Inject -->
156136
<javax.inject.version>1</javax.inject.version>
157-
158137
<!-- Spring Data Jpa -->
159138
<spring-data-jpa.version>1.4.5.RELEASE</spring-data-jpa.version>
160-
161139
<!-- guava -->
162140
<guava.version>17.0</guava.version>
163141
</properties>
164-
165142
</project>

spring-security-login-error-handling/src/main/java/org/baeldung/persistence/model/Role.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class Role {
2323
@JoinColumn(name = "user_id")
2424
private User user;
2525

26+
2627
@Column(name = "role")
2728
private Integer role;
2829

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.baeldung.persistence.service;
2+
3+
import javax.validation.Constraint;
4+
import javax.validation.Payload;
5+
6+
import java.lang.annotation.Documented;
7+
import java.lang.annotation.Retention;
8+
import java.lang.annotation.Target;
9+
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
10+
import static java.lang.annotation.ElementType.TYPE;
11+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
12+
13+
@Target({TYPE,ANNOTATION_TYPE})
14+
@Retention(RUNTIME)
15+
@Constraint(validatedBy = PasswordMatchesValidator.class)
16+
@Documented
17+
public @interface PasswordMatches {
18+
19+
String message() default "Passwords don't match";
20+
Class<?>[] groups() default {};
21+
Class<? extends Payload>[] payload() default {};
22+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.baeldung.persistence.service;
2+
3+
import javax.validation.ConstraintValidator;
4+
import javax.validation.ConstraintValidatorContext;
5+
6+
public class PasswordMatchesValidator implements ConstraintValidator<PasswordMatches, Object> {
7+
8+
@Override
9+
public void initialize(PasswordMatches constraintAnnotation) {
10+
}
11+
@Override
12+
public boolean isValid(Object obj, ConstraintValidatorContext context){
13+
UserDto user = (UserDto) obj;
14+
return user.getPassword().equals(user.getMatchingPassword());
15+
}
16+
}

spring-security-login-error-handling/src/main/java/org/baeldung/persistence/service/RepositoryService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
public class RepositoryService implements UserService {
1313
@Autowired
1414
private UserRepository repository;
15-
1615
@Autowired
1716
private Environment env;
1817

spring-security-login-error-handling/src/main/java/org/baeldung/persistence/service/UserDto.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
11
package org.baeldung.persistence.service;
22

3+
import javax.validation.constraints.NotNull;
4+
import org.hibernate.validator.constraints.NotEmpty;
5+
@PasswordMatches
36
public class UserDto {
7+
@NotNull
8+
@NotEmpty
49
private String firstName;
10+
@NotNull
11+
@NotEmpty
512
private String lastName;
13+
@NotNull
14+
@NotEmpty
615
private String password;
16+
@NotNull
17+
@NotEmpty
18+
private String matchingPassword;
19+
@ValidUsername
20+
@NotNull
21+
@NotEmpty
722
private String username;
823
private Integer role;
924

@@ -46,6 +61,12 @@ public String getPassword() {
4661
public void setPassword(String password) {
4762
this.password = password;
4863
}
64+
public String getMatchingPassword() {
65+
return matchingPassword;
66+
}
67+
public void setMatchingPassword(String matchingPassword) {
68+
this.matchingPassword = matchingPassword;
69+
}
4970

5071
@Override
5172
public String toString() {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.baeldung.persistence.service;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
import javax.validation.ConstraintValidator;
7+
import javax.validation.ConstraintValidatorContext;
8+
9+
public class UsernameValidator implements ConstraintValidator<ValidUsername, String> {
10+
private Pattern pattern;
11+
private Matcher matcher;
12+
private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
13+
14+
@Override
15+
public void initialize(ValidUsername constraintAnnotation) {
16+
}
17+
18+
@Override
19+
public boolean isValid(String username, ConstraintValidatorContext context) {
20+
return (validateEmail(username));
21+
}
22+
23+
public boolean validateEmail(String email) {
24+
pattern = Pattern.compile(EMAIL_PATTERN);
25+
matcher = pattern.matcher(email);
26+
return matcher.matches();
27+
}
28+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.baeldung.persistence.service;
2+
3+
import javax.validation.Constraint;
4+
import javax.validation.Payload;
5+
import java.lang.annotation.Documented;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.Target;
8+
import static java.lang.annotation.ElementType.FIELD;
9+
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
10+
import static java.lang.annotation.ElementType.TYPE;
11+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
12+
13+
@Target({ TYPE, FIELD, ANNOTATION_TYPE })
14+
@Retention(RUNTIME)
15+
@Constraint(validatedBy = UsernameValidator.class)
16+
@Documented
17+
public @interface ValidUsername {
18+
19+
String message() default "Invalid Email";
20+
21+
Class<?>[] groups() default {};
22+
23+
Class<? extends Payload>[] payload() default {};
24+
}

0 commit comments

Comments
 (0)