API completely implemented
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / core / ArgeoUserDetails.java
index 0b8368c6f8de29354850336aa82131b9d762bd4b..a018826f844939b8ce53e4b74d0250f8ca23fef2 100644 (file)
@@ -31,8 +31,8 @@ public class ArgeoUserDetails extends User implements ArgeoUser {
        }
 
        public ArgeoUserDetails(ArgeoUser argeoUser) {
-               this(argeoUser.getUsername(), argeoUser.getUserNatures(), argeoUser.getPassword(),
-                               rolesToAuthorities(argeoUser.getRoles()));
+               this(argeoUser.getUsername(), argeoUser.getUserNatures(), argeoUser
+                               .getPassword(), rolesToAuthorities(argeoUser.getRoles()));
        }
 
        public List<UserNature> getUserNatures() {
@@ -61,11 +61,15 @@ public class ArgeoUserDetails extends User implements ArgeoUser {
        }
 
        public static BasicArgeoUser createBasicArgeoUser(UserDetails userDetails) {
-               BasicArgeoUser argeoUser = new BasicArgeoUser();
-               argeoUser.setUsername(userDetails.getUsername());
-               addAuthoritiesToRoles(userDetails.getAuthorities(), argeoUser
-                               .getRoles());
-               return argeoUser;
+               if (userDetails instanceof ArgeoUser) {
+                       return new BasicArgeoUser((ArgeoUser) userDetails);
+               } else {
+                       BasicArgeoUser argeoUser = new BasicArgeoUser();
+                       argeoUser.setUsername(userDetails.getUsername());
+                       addAuthoritiesToRoles(userDetails.getAuthorities(), argeoUser
+                                       .getRoles());
+                       return argeoUser;
+               }
        }
 
        public static ArgeoUser asArgeoUser(Authentication authentication) {