Advertisement
Guest User

Untitled

a guest
Oct 9th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. package com.practice.login.entity;
  2.  
  3. import javax.persistence.*;
  4. import java.util.Set;
  5.  
  6. @Entity
  7. @Table(name = "user")
  8. public class User {
  9. private Long id;
  10. private String username;
  11. private String password;
  12. private String passwordConfirm;
  13. private Set<Role> roles;
  14.  
  15. @Id
  16. @GeneratedValue(strategy = GenerationType.AUTO)
  17. public Long getId() {
  18. return id;
  19. }
  20.  
  21. public void setId(Long idUser) {
  22. this.id = idUser;
  23. }
  24.  
  25. public String getUsername() {
  26. return username;
  27. }
  28.  
  29. public void setUsername(String username) {
  30. this.username = username;
  31. }
  32.  
  33. public String getPassword() {
  34. return password;
  35. }
  36.  
  37. public void setPassword(String password) {
  38. this.password = password;
  39. }
  40.  
  41. @Transient
  42. public String getPasswordConfirm() {
  43. return passwordConfirm;
  44. }
  45.  
  46. public void setPasswordConfirm(String passwordConfirm) {
  47. this.passwordConfirm = passwordConfirm;
  48. }
  49.  
  50. @ManyToMany
  51. @JoinTable(
  52. name = "user_role",
  53. joinColumns = @JoinColumn(
  54. name = "user_id"),
  55. inverseJoinColumns = @JoinColumn(
  56. name = "role_id"))
  57. public Set<Role> getRoles() {
  58. return roles;
  59. }
  60.  
  61. public void setRoles(Set<Role> roles) {
  62. this.roles = roles;
  63. }
  64. }
  65.  
  66. package com.practice.login.entity;
  67.  
  68. import javax.persistence.*;
  69. import java.util.Set;
  70.  
  71. @Entity
  72. @Table(name = "role")
  73. public class Role {
  74. private Long id;
  75. private String name;
  76. private Set<User> users;
  77.  
  78. @Id
  79. @GeneratedValue(strategy = GenerationType.AUTO)
  80. public Long getId() {
  81. return id;
  82. }
  83.  
  84. public void setId(Long id) {
  85. this.id = id;
  86. }
  87.  
  88. public String getName() {
  89. return name;
  90. }
  91.  
  92. public void setName(String name) {
  93. this.name = name;
  94. }
  95.  
  96. @ManyToMany(mappedBy = "roles")
  97. public Set<User> getUsers() {
  98. return users;
  99. }
  100.  
  101. public void setUsers(Set<User> users) {
  102. this.users = users;
  103. }
  104. }
  105.  
  106. package com.practice.login.service;
  107.  
  108. import com.practice.login.entity.User;
  109.  
  110. public interface UserService {
  111.  
  112. void save(User user);
  113.  
  114. User findByUsername(String username);
  115.  
  116. }
  117.  
  118. package com.practice.login.service;
  119.  
  120. import com.practice.login.entity.User;
  121. import com.practice.login.repository.RoleRepository;
  122. import com.practice.login.repository.UserRepository;
  123. import org.springframework.beans.factory.annotation.Autowired;
  124. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  125. import org.springframework.stereotype.Service;
  126.  
  127. import java.util.HashSet;
  128.  
  129. @Service
  130. public class UserServiceImpl implements UserService {
  131. @Autowired
  132. private UserRepository userRepository;
  133. @Autowired
  134. private RoleRepository roleRepository;
  135. @Autowired
  136. private BCryptPasswordEncoder bCryptPasswordEncoder;
  137.  
  138. @Override
  139. public void save(User user) {
  140. user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
  141. user.setRoles(new HashSet<>(roleRepository.findAll()));
  142. userRepository.save(user);
  143. }
  144.  
  145. @Override
  146. public User findByUsername(String username) {
  147. return userRepository.findByUsername(username);
  148. }
  149. }
  150.  
  151. package com.practice.login.service;
  152.  
  153. import org.springframework.beans.factory.annotation.Autowired;
  154. import org.springframework.security.core.GrantedAuthority;
  155. import org.springframework.security.core.authority.SimpleGrantedAuthority;
  156. import org.springframework.security.core.userdetails.UserDetails;
  157. import org.springframework.security.core.userdetails.UserDetailsService;
  158. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  159. import org.springframework.stereotype.Service;
  160. import org.springframework.transaction.annotation.Transactional;
  161.  
  162. import com.practice.login.entity.Role;
  163. import com.practice.login.entity.User;
  164. import com.practice.login.repository.UserRepository;
  165.  
  166. import java.util.HashSet;
  167. import java.util.Set;
  168.  
  169. @Service
  170. public class UserDetailsServiceImpl implements UserDetailsService {
  171. @Autowired
  172. private UserRepository userRepository;
  173.  
  174. @Override
  175. @Transactional(readOnly = true)
  176. public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
  177. User user = userRepository.findByUsername(username);
  178. Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
  179. for (Role role : user.getRoles()) {
  180. grantedAuthorities.add(new SimpleGrantedAuthority(role.getName()));
  181. }
  182.  
  183. return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(),
  184. grantedAuthorities);
  185. }
  186. }
  187.  
  188. package com.practice.login.repository;
  189.  
  190. import org.springframework.data.jpa.repository.JpaRepository;
  191. import org.springframework.stereotype.Repository;
  192.  
  193. import com.practice.login.entity.User;
  194.  
  195. @Repository
  196. public interface UserRepository extends JpaRepository<User, Long> {
  197. User findByUsername(String username);
  198. }
  199.  
  200. package com.practice.login.repository;
  201.  
  202. import org.springframework.data.jpa.repository.JpaRepository;
  203. import org.springframework.stereotype.Repository;
  204.  
  205. import com.practice.login.entity.Role;
  206.  
  207. @Repository
  208. public interface RoleRepository extends JpaRepository<Role, Long> {
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement