package de.flower.rmt.security;
import de.flower.rmt.model.db.entity.Role;
import de.flower.rmt.model.db.entity.User;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @author flowerrrr
*/
public class UserDetailsBean extends org.springframework.security.core.userdetails.User {
private User user;
public UserDetailsBean(User user) {
super(user.getUsername(), user.getEncryptedPassword(), user.isEnabled(), true, true, true, getGrantedAuthorities(user));
this.user = user;
}
private static List<GrantedAuthority> getGrantedAuthorities(User user) {
List<String> grantedAuthorities = new ArrayList<String>();
for (Role role : user.getRoles()) {
grantedAuthorities.add(role.getAuthority());
}
return AuthorityUtils.createAuthorityList(grantedAuthorities.toArray(new String[]{}));
}
public User getUser() {
return user;
}
public boolean isManager() {
return hasRole(Role.Roles.MANAGER.getRoleName());
}
private boolean hasRole(final String roleName) {
return findRole(roleName) != null;
}
private Role findRole(final String roleName) {
for (Role r : user.getRoles()) {
if (r.getAuthority().equals(roleName)) {
return r;
}
}
return null;
}
}