Skip to content

Commit 16b56b6

Browse files
author
Eugen
committed
Merge pull request eugenp#36 from egmp777/master
Spring Security Login and Registration Article Code - Draft1
2 parents 03710d4 + 983c339 commit 16b56b6

File tree

28 files changed

+1010
-29
lines changed

28 files changed

+1010
-29
lines changed

bin/src/main/webapp/WEB-INF/view/login.jsp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,7 @@
7373

7474
</form>
7575
<br> Current Locale : ${pageContext.response.locale}
76+
77+
<a href="<c:url value="/registration.html" />">Home</a>
7678
</body>
7779
</html>
Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1-
<%@ page language="java" contentType="text/html; charset=US-ASCII"
2-
pageEncoding="US-ASCII"%>
3-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
1+
<!DOCTYPE html>
2+
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
3+
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
4+
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
5+
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
6+
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
47
<html>
58
<head>
69
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
710
<title>Registration</title>
811
</head>
912
<body>
1013
<H1> This is the registration page</H1>
14+
<form:form action="/user/registration" commandName="user" method="POST" enctype="utf8" role="form">
15+
16+
17+
18+
<label class="control-label" for="user-firstName">First Name:</label>
19+
<form:input id="user-firstName" path="firstName" />
20+
<form:errors id="error-firstName" path="firstName" />
21+
22+
23+
</form:form>
1124
</body>
1225
</html>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/src
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>spring-security-login-and-registration</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
<buildCommand>
14+
<name>org.eclipse.wst.common.project.facet.core.builder</name>
15+
<arguments>
16+
</arguments>
17+
</buildCommand>
18+
<buildCommand>
19+
<name>org.springframework.ide.eclipse.core.springbuilder</name>
20+
<arguments>
21+
</arguments>
22+
</buildCommand>
23+
<buildCommand>
24+
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
25+
<arguments>
26+
</arguments>
27+
</buildCommand>
28+
<buildCommand>
29+
<name>org.eclipse.wst.validation.validationbuilder</name>
30+
<arguments>
31+
</arguments>
32+
</buildCommand>
33+
<buildCommand>
34+
<name>org.eclipse.m2e.core.maven2Builder</name>
35+
<arguments>
36+
</arguments>
37+
</buildCommand>
38+
<buildCommand>
39+
<name>org.hibernate.eclipse.console.hibernateBuilder</name>
40+
<arguments>
41+
</arguments>
42+
</buildCommand>
43+
</buildSpec>
44+
<natures>
45+
<nature>org.springframework.ide.eclipse.core.springnature</nature>
46+
<nature>org.eclipse.jdt.core.javanature</nature>
47+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
48+
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
49+
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
50+
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
51+
<nature>org.hibernate.eclipse.console.hibernateNature</nature>
52+
</natures>
53+
</projectDescription>

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

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,13 @@
2525
<artifactId>spring-security-config</artifactId>
2626
<scope>runtime</scope>
2727
</dependency>
28-
28+
<dependency>
29+
<groupId>org.springframework</groupId>
30+
<artifactId>spring-context-support</artifactId>
31+
</dependency>
32+
2933
<!-- Validation -->
30-
34+
3135
<!-- logging -->
3236
<dependency>
3337
<groupId>org.slf4j</groupId>
@@ -66,9 +70,9 @@
6670
<dependency>
6771
<groupId>javax.servlet.jsp</groupId>
6872
<artifactId>javax.servlet.jsp-api</artifactId>
69-
<version>${javax.servlet.jsp-api.version}</version>
73+
<version>${javax.servlet.jsp-api.version}</version>
7074
</dependency>
71-
75+
7276
<dependency>
7377
<groupId>javax.servlet</groupId>
7478
<artifactId>jstl</artifactId>
@@ -86,7 +90,42 @@
8690
<artifactId>junit</artifactId>
8791
<scope>test</scope>
8892
</dependency>
93+
94+
<!-- Spring Data JPA dependencies -->
95+
<dependency>
96+
<groupId>org.springframework.data</groupId>
97+
<artifactId>spring-data-jpa</artifactId>
98+
</dependency>
99+
<dependency>
100+
<groupId>org.hibernate</groupId>
101+
<artifactId>hibernate-entitymanager</artifactId>
102+
</dependency>
103+
104+
<!-- DB dependencies -->
105+
<dependency>
106+
<groupId>mysql</groupId>
107+
<artifactId>mysql-connector-java</artifactId>
108+
</dependency>
109+
<dependency>
110+
<groupId>commons-dbcp</groupId>
111+
<artifactId>commons-dbcp</artifactId>
112+
</dependency>
113+
<dependency>
114+
<groupId>com.fasterxml.jackson.core</groupId>
115+
<artifactId>jackson-databind</artifactId>
116+
</dependency>
117+
<dependency>
118+
<groupId>javax.mail</groupId>
119+
<artifactId>mail</artifactId>
120+
<version>1.4.3</version>
121+
</dependency>
122+
<dependency>
123+
<groupId>com.google.guava</groupId>
124+
<artifactId>guava</artifactId>
125+
<version>${guava.version}</version>
126+
</dependency>
89127
</dependencies>
128+
90129
<build>
91130
<finalName>spring-security-login-and-registration</finalName>
92131
<resources>
@@ -105,12 +144,18 @@
105144
<!-- logging -->
106145
<org.slf4j.version>1.7.6</org.slf4j.version>
107146
<logback.version>1.1.1</logback.version>
108-
147+
109148
<!-- javax jsp -->
110-
<javax.servlet.jsp-api.version>2.3.2-b01</javax.servlet.jsp-api.version>
111-
112-
<!-- Inject -->
113-
<javax.inject.version>1</javax.inject.version>
149+
<javax.servlet.jsp-api.version>2.3.2-b01</javax.servlet.jsp-api.version>
150+
151+
<!-- Inject -->
152+
<javax.inject.version>1</javax.inject.version>
153+
154+
<!-- Spring Data Jpa -->
155+
<spring-data-jpa.version>1.4.1.RELEASE</spring-data-jpa.version>
156+
157+
<!-- guava -->
158+
<guava.version>17.0</guava.version>
114159
</properties>
115160

116161
</project>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.baeldung.persistence.dao;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
import org.baeldung.persistence.model.User;
5+
6+
7+
public interface UserRepository extends JpaRepository<User,Long>{
8+
public User findByUsername(String username);
9+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.baeldung.persistence.model;
2+
3+
import javax.persistence.CascadeType;
4+
import javax.persistence.Column;
5+
import javax.persistence.Entity;
6+
import javax.persistence.FetchType;
7+
import javax.persistence.GeneratedValue;
8+
import javax.persistence.GenerationType;
9+
import javax.persistence.Id;
10+
import javax.persistence.JoinColumn;
11+
import javax.persistence.OneToOne;
12+
import javax.persistence.Table;
13+
14+
15+
@Entity(name="role")
16+
@Table(name = "role")
17+
public class Role {
18+
19+
@Id
20+
@GeneratedValue(strategy = GenerationType.AUTO)
21+
private Long id;
22+
23+
24+
@OneToOne(targetEntity = User.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
25+
@JoinColumn(name = "user_id")
26+
private User user;
27+
28+
@Column(name="role")
29+
private Integer role;
30+
31+
public Role(){
32+
super();
33+
34+
}
35+
public Role(Integer role){
36+
super();
37+
this.role = role;
38+
}
39+
public Role(Integer role, User user){
40+
super();
41+
this.role = role;
42+
this.user = user;
43+
}
44+
public Long getId() {
45+
return id;
46+
}
47+
public void setId(Long id) {
48+
this.id = id;
49+
}
50+
public User getUser() {
51+
return user;
52+
}
53+
public void setUser(User user) {
54+
this.user = user;
55+
}
56+
public Integer getRole() {
57+
return role;
58+
}
59+
public void setRole(Integer role) {
60+
this.role = role;
61+
}
62+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package org.baeldung.persistence.model;
2+
3+
import javax.persistence.CascadeType;
4+
import javax.persistence.Column;
5+
import javax.persistence.Entity;
6+
import javax.persistence.FetchType;
7+
import javax.persistence.GeneratedValue;
8+
import javax.persistence.GenerationType;
9+
import javax.persistence.Id;
10+
import javax.persistence.OneToOne;
11+
import javax.persistence.Table;
12+
13+
@Entity(name = "user")
14+
@Table(name = "user")
15+
public class User {
16+
17+
@Id
18+
@GeneratedValue(strategy = GenerationType.AUTO)
19+
private Long id;
20+
@Column(name="firstName")
21+
private String firstName;
22+
@Column(name="lastName")
23+
private String lastName;
24+
@Column(name="username")
25+
private String username;
26+
@Column(name="password")
27+
private String password;
28+
29+
30+
@OneToOne(mappedBy = "user",fetch = FetchType.EAGER, cascade = CascadeType.ALL)
31+
private Role role;
32+
33+
public Long getId() {
34+
return id;
35+
}
36+
37+
public void setId(Long id) {
38+
this.id = id;
39+
}
40+
41+
public String getFirstName() {
42+
return firstName;
43+
}
44+
45+
public void setFirstName(String firstName) {
46+
this.firstName = firstName;
47+
}
48+
49+
public String getLastName() {
50+
return lastName;
51+
}
52+
53+
public void setLastName(String lastName) {
54+
this.lastName = lastName;
55+
}
56+
57+
public String getUsername() {
58+
return username;
59+
}
60+
61+
public void setUsername(String username) {
62+
this.username = username;
63+
}
64+
65+
public String getPassword() {
66+
return password;
67+
}
68+
69+
public void setPassword(String password) {
70+
this.password = password;
71+
}
72+
73+
public Role getRole() {
74+
return role;
75+
}
76+
77+
public void setRole(Role role) {
78+
this.role = role;
79+
}
80+
81+
82+
@Override
83+
public int hashCode() {
84+
final int prime = 31;
85+
int result = 1;
86+
result = prime * result + ((username == null) ? 0 : username.hashCode());
87+
return result;
88+
}
89+
90+
@Override
91+
public boolean equals(final Object obj) {
92+
if (this == obj)
93+
return true;
94+
if (obj == null)
95+
return false;
96+
if (getClass() != obj.getClass())
97+
return false;
98+
final User user = (User) obj;
99+
if (!username.equals(user.username))
100+
return false;
101+
return true;
102+
}
103+
@Override
104+
public String toString() {
105+
final StringBuilder builder = new StringBuilder();
106+
builder.append("User [firstName=").append(firstName).append("]").
107+
append("[lastName=").append(lastName).append("]").append("[username").append(username).append("]");
108+
return builder.toString();
109+
}
110+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.baeldung.persistence.service;
2+
3+
public class EmailExistsException extends Throwable{
4+
5+
public EmailExistsException(String message) {
6+
super(message);
7+
}
8+
}

0 commit comments

Comments
 (0)