@ -3,6 +3,7 @@ package mx.gob.jumapacelaya.services;
import com.vaadin.flow.server.VaadinService ;
import mx.gob.jumapacelaya.api.RedmineClient ;
import mx.gob.jumapacelaya.api.SecurityService ;
import mx.gob.jumapacelaya.models.CustomUserDetails ;
import mx.gob.jumapacelaya.models.RedmineUser ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
@ -14,11 +15,13 @@ public class UserService {
private final SecurityService securityService ;
private final RedmineClient redmineClient ;
private static final Logger logger = LoggerFactory . getLogger ( UserService . class ) ;
private final LdapService ldapService ;
public UserService ( SecurityService securityService , RedmineClient redmineClient ) {
public UserService ( SecurityService securityService , RedmineClient redmineClient , LdapService ldapService ) {
this . securityService = securityService ;
this . redmineClient = redmineClient ;
this . ldapService = ldapService ;
}
/ * *
@ -28,11 +31,31 @@ public class UserService {
* /
public RedmineUser getAuthenticatedRedmineUser ( ) {
try {
String usename = securityService . getAuthenticatedUser ( ) ;
logger . info ( "Usuario autenticado: " + usename ) ;
if ( usename ! = null ) {
RedmineUser user = redmineClient . getUserByUsername ( usename ) ;
logger . info ( "Usuario autenticado en Redmine: " + user ) ;
String username = securityService . getAuthenticatedUser ( ) ;
logger . info ( "Usuario autenticado: " + username ) ;
if ( username ! = null ) {
RedmineUser user = redmineClient . getUserByUsername ( username ) ;
if ( user = = null ) {
CustomUserDetails userDetails = ldapService . getUserDetails ( username ) ;
if ( userDetails ! = null ) {
RedmineUser newUser = RedmineClient . createRedmineUser (
username ,
userDetails . getFirstName ( ) ,
userDetails . getLastName ( ) ,
userDetails . getEmail ( )
) ;
if ( newUser ! = null ) {
logger . info ( "Usuario creado en Redmine: " + newUser ) ;
return newUser ;
} else {
logger . error ( "Error al crear el usuario en Redmine" ) ;
}
} else {
logger . error ( "No se encontraron detalles del usuario en LDAP" ) ;
}
} else {
logger . info ( "Usuario autenticado en Redmine: " + user ) ;
}
return user ;
}
} catch ( Exception e ) {
@ -41,6 +64,7 @@ public class UserService {
return null ;
}
public RedmineUser getRedmineUser ( ) {
RedmineUser userclient = ( RedmineUser ) VaadinService . getCurrentRequest ( ) . getWrappedSession ( ) . getAttribute ( "myaccount" ) ;
@ -52,10 +76,16 @@ public class UserService {
if ( myAccount ! = null & & ! myAccount . getKey ( ) . isEmpty ( ) ) {
userclient = myAccount ;
VaadinService . getCurrentRequest ( ) . getWrappedSession ( ) . setAttribute ( "myaccount" , myAccount ) ;
} else {
/ / Crear un nuevo usuario si no existe
myAccount = redmineClient . createRedmineUser ( user . getLogin ( ) , user . getFirstname ( ) , user . getLastname ( ) , user . getMail ( ) ) ;
if ( myAccount ! = null & & ! myAccount . getKey ( ) . isEmpty ( ) ) {
userclient = myAccount ;
VaadinService . getCurrentRequest ( ) . getWrappedSession ( ) . setAttribute ( "myaccount" , myAccount ) ;
}
}
}
}
return userclient ;
}
}