|
|
|
@ -1,27 +1,15 @@ |
|
|
|
package api.menu.playa.helper; |
|
|
|
package api.menu.playa.helper; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.InputStream; |
|
|
|
|
|
|
|
import java.security.Key; |
|
|
|
import java.security.Key; |
|
|
|
import java.security.KeyFactory; |
|
|
|
|
|
|
|
import java.security.PrivateKey; |
|
|
|
|
|
|
|
import java.security.spec.PKCS8EncodedKeySpec; |
|
|
|
|
|
|
|
import java.util.Base64; |
|
|
|
import java.util.Base64; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.HashSet; |
|
|
|
|
|
|
|
import java.util.Optional; |
|
|
|
|
|
|
|
import java.util.Set; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.crypto.Cipher; |
|
|
|
import javax.crypto.Cipher; |
|
|
|
import javax.crypto.spec.SecretKeySpec; |
|
|
|
import javax.crypto.spec.SecretKeySpec; |
|
|
|
import javax.enterprise.context.ApplicationScoped; |
|
|
|
import javax.enterprise.context.ApplicationScoped; |
|
|
|
import javax.inject.Inject; |
|
|
|
import javax.inject.Inject; |
|
|
|
|
|
|
|
|
|
|
|
import org.eclipse.microprofile.jwt.Claims; |
|
|
|
|
|
|
|
import org.eclipse.microprofile.jwt.JsonWebToken; |
|
|
|
|
|
|
|
import org.jboss.logging.Logger; |
|
|
|
import org.jboss.logging.Logger; |
|
|
|
import org.jose4j.jwk.JsonWebKey; |
|
|
|
|
|
|
|
import org.jose4j.jws.JsonWebSignature; |
|
|
|
|
|
|
|
import org.jose4j.keys.resolvers.JwksVerificationKeyResolver; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import api.menu.playa.dao.UsuarioDAO; |
|
|
|
import api.menu.playa.dao.UsuarioDAO; |
|
|
|
import api.menu.playa.enums.RolesEnum; |
|
|
|
import api.menu.playa.enums.RolesEnum; |
|
|
|
@ -30,9 +18,6 @@ import api.menu.playa.model.Usuario; |
|
|
|
import api.menu.playa.util.TokenUtils; |
|
|
|
import api.menu.playa.util.TokenUtils; |
|
|
|
import api.menu.playa.vo.RegistroVO; |
|
|
|
import api.menu.playa.vo.RegistroVO; |
|
|
|
import api.menu.playa.vo.UsuarioVO; |
|
|
|
import api.menu.playa.vo.UsuarioVO; |
|
|
|
import io.smallrye.jwt.auth.principal.DefaultJWTParser; |
|
|
|
|
|
|
|
import io.smallrye.jwt.build.Jwt; |
|
|
|
|
|
|
|
import io.smallrye.jwt.build.JwtSignature; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApplicationScoped |
|
|
|
@ApplicationScoped |
|
|
|
public class LoginHelper { |
|
|
|
public class LoginHelper { |
|
|
|
@ -43,21 +28,18 @@ public class LoginHelper { |
|
|
|
@Inject |
|
|
|
@Inject |
|
|
|
UsuarioDAO usuarioDAO; |
|
|
|
UsuarioDAO usuarioDAO; |
|
|
|
|
|
|
|
|
|
|
|
@Inject |
|
|
|
|
|
|
|
TokenService tokenService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void registrarUsuario(RegistroVO request) throws Exception { |
|
|
|
public void registrarUsuario(RegistroVO request) throws Exception { |
|
|
|
|
|
|
|
|
|
|
|
Optional<Usuario> user = usuarioDAO.encontrarUsuario(request.getUser()); |
|
|
|
Usuario user = usuarioDAO.encontrarUsuario(request.getUser()); |
|
|
|
|
|
|
|
|
|
|
|
if (user.isPresent()) { |
|
|
|
if (user != null) { |
|
|
|
throw new NegocioException("El usuario ya existe", 2); |
|
|
|
throw new NegocioException("El usuario ya existe", 2); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Usuario usuario = new Usuario(); |
|
|
|
Usuario usuario = new Usuario(); |
|
|
|
|
|
|
|
|
|
|
|
usuario.setActivo(false); |
|
|
|
usuario.setActivo(false); |
|
|
|
usuario.setUser(request.getUser()); |
|
|
|
usuario.setUsuario(request.getUser()); |
|
|
|
usuario.setPass(encript(request.getPass())); |
|
|
|
usuario.setPass(encript(request.getPass())); |
|
|
|
usuario.setRol(RolesEnum.USER); |
|
|
|
usuario.setRol(RolesEnum.USER); |
|
|
|
usuario.setNombre(request.getUser()); |
|
|
|
usuario.setNombre(request.getUser()); |
|
|
|
@ -67,12 +49,12 @@ public class LoginHelper { |
|
|
|
|
|
|
|
|
|
|
|
public String validarUsuario(UsuarioVO request) throws Exception { |
|
|
|
public String validarUsuario(UsuarioVO request) throws Exception { |
|
|
|
|
|
|
|
|
|
|
|
Optional<Usuario> user = usuarioDAO.encontrarUsuario(request.getUser()); |
|
|
|
Usuario user = usuarioDAO.encontrarUsuario(request.getUser()); |
|
|
|
|
|
|
|
|
|
|
|
logger.info("Usuario"); |
|
|
|
logger.info("Usuario"); |
|
|
|
logger.info(user); |
|
|
|
logger.info(user); |
|
|
|
|
|
|
|
|
|
|
|
if (user.isEmpty()) { |
|
|
|
if (user == null) { |
|
|
|
throw new NegocioException("Usuario no existe en el sistema", 2); |
|
|
|
throw new NegocioException("Usuario no existe en el sistema", 2); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -81,22 +63,19 @@ public class LoginHelper { |
|
|
|
logger.info("Password encriptado"); |
|
|
|
logger.info("Password encriptado"); |
|
|
|
logger.info(password); |
|
|
|
logger.info(password); |
|
|
|
|
|
|
|
|
|
|
|
if (Boolean.FALSE.equals(user.get().getActivo())) { |
|
|
|
if (!user.getActivo()) { |
|
|
|
throw new NegocioException("Usuario no se encuentra activo", 2); |
|
|
|
throw new NegocioException("Usuario no se encuentra activo", 2); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!password.equals(user.get().getPass())) { |
|
|
|
if (!password.equals(user.getPass())) { |
|
|
|
throw new NegocioException("Usuario o contraseña es incorrecto", 2); |
|
|
|
throw new NegocioException("Usuario o contraseña es incorrecto", 2); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return tokenService.generate(user.get().getNombre(), user.get().getUser(), user.get().getFecha(), user.get().getRol()); |
|
|
|
String token = TokenUtils.generateToken(user.getUsuario(), Collections.singleton(user.getRol()), 36000L, "https://vodorod.cl"); |
|
|
|
//return TokenUtils.generateToken(user.get().getUser(), Collections.singleton(user.get().getRol()), 36000L, "https://vodorod.cl");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//String token = tokenGenerator(user);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return token; |
|
|
|
//return tokenGenerator(user.get().getUser(), Collections.singleton(user.get().getRol()), 36000L, "https://vodorod.cl");
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static String ENCRYPT_KEY = "clave-compartida-no-reveloar-nun"; |
|
|
|
private static String ENCRYPT_KEY = "clave-compartida-no-reveloar-nun"; |
|
|
|
@ -129,21 +108,4 @@ public class LoginHelper { |
|
|
|
long currentTimeMS = System.currentTimeMillis(); |
|
|
|
long currentTimeMS = System.currentTimeMillis(); |
|
|
|
return (int) (currentTimeMS / 1000); |
|
|
|
return (int) (currentTimeMS / 1000); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public String tokenGenerator(String username, Set<RolesEnum> roles, Long duration, String issuer) throws Exception { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set<String> groups = new HashSet<>(); |
|
|
|
|
|
|
|
for (RolesEnum role : roles) groups.add(role.toString()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Jwt.claims() |
|
|
|
|
|
|
|
.issuer(issuer) |
|
|
|
|
|
|
|
.issuedAt(currentTimeInSecs()) |
|
|
|
|
|
|
|
.expiresAt(currentTimeInSecs() + duration) |
|
|
|
|
|
|
|
.groups(groups) |
|
|
|
|
|
|
|
.claim("nombre", username).jws() |
|
|
|
|
|
|
|
.signWithSecret("issuer11111111111111111111111111"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|