소스 검색

Custom user object

Daniel Garcia Costa 2 년 전
부모
커밋
b47c9ea323
2개의 변경된 파일42개의 추가작업 그리고 18개의 파일을 삭제
  1. 41 0
      src/main/java/es/uv/garcosda/security/AuthUser.java
  2. 1 18
      src/main/java/es/uv/garcosda/security/CustomUserDetailsService.java

+ 41 - 0
src/main/java/es/uv/garcosda/security/AuthUser.java

@@ -0,0 +1,41 @@
+package es.uv.garcosda.security;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.AuthorityUtils;
+
+import es.uv.garcosda.domain.Role;
+import es.uv.garcosda.domain.User;
+
+public class AuthUser extends org.springframework.security.core.userdetails.User {
+
+	private static final long serialVersionUID = 1L;
+	private User user;
+	
+	public AuthUser(User user) {
+		super(user.getUsername(), user.getPassword(), getAuthorities(user));
+		this.user = user;
+	}
+	
+	public User getUser() {
+		return user;
+	}
+	
+	private static Collection<? extends GrantedAuthority> getAuthorities(User user) {
+		Set<String> roleAndPermissions = new HashSet<>();
+		List<Role> roles = user.getRoles();
+		
+		for (Role role : roles) {
+			roleAndPermissions.add(role.getName());
+		}
+		
+		String[] roleNames = new String[roleAndPermissions.size()];
+		Collection<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(roleAndPermissions.toArray(roleNames));
+		return authorities;
+	}
+	
+}

+ 1 - 18
src/main/java/es/uv/garcosda/security/CustomUserDetailsService.java

@@ -1,10 +1,6 @@
 package es.uv.garcosda.security;
 
-import java.util.Collection;
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.AuthorityUtils;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -27,19 +23,6 @@ public class CustomUserDetailsService implements UserDetailsService {
 			throws UsernameNotFoundException {
 		User user = userRepository.findByUsername(userName)
 								  .orElseThrow(() -> new UsernameNotFoundException("User "+userName+" not found"));
-		return new org.springframework.security.core.userdetails.User(
-				user.getUsername(), 
-				user.getPassword(),
-				getAuthorities(user));
-	}
-
-	
-	private static Collection<? extends GrantedAuthority> getAuthorities(User user) {		
-		String[] userRoles = user.getRoles()
-								 .stream()
-								 .map((role) -> role.getName())
-								 .toArray(String[]::new);
-		Collection<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList(userRoles);
-		return authorities;
+		return new AuthUser(user);
 	}
 }