/*
* Copyright 2012 E.J.I.E., S.A.
*
* Licencia con arreglo a la EUPL, Versión 1.1 exclusivamente (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en
*
* http://ec.europa.eu/idabc/eupl.html
*
* Salvo cuando lo exija la legislación aplicable o se acuerde por escrito,
* el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL»,
* SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas.
* Véase la Licencia en el idioma concreto que rige los permisos y limitaciones
* que establece la Licencia.
*/
package com.ejie.x38.security;
import java.util.Vector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.AuthenticationUserDetailsService;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.util.Assert;
/**
*
* @author UDA
*
*/
public class MyAuthenticatedUserDetailsService implements
AuthenticationUserDetailsService<Authentication> {
private static final Logger logger = LoggerFactory
.getLogger(MyAuthenticatedUserDetailsService.class);
private PerimetralSecurityWrapper perimetralSecurityWrapper;
@Override
public UserDetails loadUserDetails(Authentication token)
throws UsernameNotFoundException {
Assert.notNull(token.getCredentials());
logger.trace("User's token is: "+token.toString());
logger.trace("User's credentials are "+token.getCredentials().toString());
Credentials Credentials = (Credentials) token
.getCredentials();
UserDetails userDetails = null;
if (Credentials != null) {
Vector<String> vectorProfilesXLNET = Credentials.getUserProfiles();
XlnetGrantedAuthority[] profiles = null;
if (vectorProfilesXLNET != null) {
profiles = new XlnetGrantedAuthority[vectorProfilesXLNET.size()];
for (int contadorAuthXLNET = 0; contadorAuthXLNET < vectorProfilesXLNET
.size(); contadorAuthXLNET++) {
String authority = "ROLE_"
+ vectorProfilesXLNET.get(contadorAuthXLNET);
profiles[contadorAuthXLNET] = new XlnetGrantedAuthority(
authority);
}
}
userDetails = createuserDetails(token, profiles);
}
logger.trace("UserDetails is: "+userDetails.toString());
return userDetails;
}
protected MyUserDetails createuserDetails(Authentication token,
GrantedAuthority[] profiles) {
return new MyUserDetails(token.getName(), // UserName
"N/A", // Password
true, // Enabled
true, // AccountNonExpired
true, // CredentialsNonExpired
true, // Account Not Locked
profiles); // Profiles.
}
//Getters & Setters
public PerimetralSecurityWrapper getPerimetralSecurityWrapper() {
return perimetralSecurityWrapper;
}
public void setPerimetralSecurityWrapper(
PerimetralSecurityWrapper perimetralSecurityWrapper) {
this.perimetralSecurityWrapper = perimetralSecurityWrapper;
}
}