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 be7bf24

Browse files
Using our User entity as Spring Security users
1 parent 94d0e65 commit be7bf24

File tree

2 files changed

+71
-1
lines changed

2 files changed

+71
-1
lines changed

‎src/main/java/com/naturalprogrammer/spring5tutorial/domain/User.java‎

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Collection;
44
import java.util.HashSet;
5+
import java.util.stream.Collectors;
56

67
import javax.persistence.Column;
78
import javax.persistence.ElementCollection;
@@ -14,11 +15,15 @@
1415
import javax.persistence.Index;
1516
import javax.persistence.Table;
1617

18+
import org.springframework.security.core.GrantedAuthority;
19+
import org.springframework.security.core.authority.SimpleGrantedAuthority;
20+
import org.springframework.security.core.userdetails.UserDetails;
21+
1722
@Entity
1823
@Table(name="usr", indexes = {
1924
@Index(columnList = "email", unique=true)
2025
})
21-
public class User {
26+
public class User implementsUserDetails{
2227

2328
public static enum Role {
2429
UNVERIFIED, ADMIN, BLOCKED
@@ -65,6 +70,7 @@ public void setName(String name) {
6570
this.name = name;
6671
}
6772

73+
@Override
6874
public String getPassword() {
6975
return password;
7076
}
@@ -80,4 +86,42 @@ public Collection<Role> getRoles() {
8086
public void setRoles(Collection<Role> roles) {
8187
this.roles = roles;
8288
}
89+
90+
@Override
91+
public Collection<? extends GrantedAuthority> getAuthorities() {
92+
93+
return roles.stream()
94+
.map(role -> new SimpleGrantedAuthority("ROLE_" + role.name()))
95+
.collect(Collectors.toSet());
96+
}
97+
98+
@Override
99+
public String getUsername() {
100+
101+
return email;
102+
}
103+
104+
@Override
105+
public boolean isAccountNonExpired() {
106+
107+
return true;
108+
}
109+
110+
@Override
111+
public boolean isAccountNonLocked() {
112+
113+
return true;
114+
}
115+
116+
@Override
117+
public boolean isCredentialsNonExpired() {
118+
119+
return true;
120+
}
121+
122+
@Override
123+
public boolean isEnabled() {
124+
125+
return true;
126+
}
83127
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.naturalprogrammer.spring5tutorial.services;
2+
3+
import org.springframework.security.core.userdetails.UserDetails;
4+
import org.springframework.security.core.userdetails.UserDetailsService;
5+
import org.springframework.security.core.userdetails.UsernameNotFoundException;
6+
import org.springframework.stereotype.Service;
7+
8+
import com.naturalprogrammer.spring5tutorial.repositories.UserRepository;
9+
10+
@Service
11+
public class UserDetailsServiceImpl implements UserDetailsService {
12+
13+
private UserRepository userRepository;
14+
15+
public UserDetailsServiceImpl(UserRepository userRepository) {
16+
17+
this.userRepository = userRepository;
18+
}
19+
20+
@Override
21+
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
22+
23+
return userRepository.findByEmail(username)
24+
.orElseThrow(() -> new UsernameNotFoundException(username));
25+
}
26+
}

0 commit comments

Comments
(0)

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