Skip to content
Snippets Groups Projects
Commit 7f27693c authored by Gonzalo Fabian Cameto Hernandez's avatar Gonzalo Fabian Cameto Hernandez
Browse files

Agrego properties para asignar grupo local por defecto.

parent d29f70aa
Branches
Tags
No related merge requests found
{
"endpoint":"https://tics.moodlecloud.com",
"group":"Piloto"
}
\ No newline at end of file
#Deben definirse moodle_endpoint y moodle_group para conectar con el API de moodle.
#De lo contrario solo se realizara login local.
moodle_endpoint=https://tics.moodlecloud.com
moodle_group=Piloto
#El grupo se define como liceoId#grado#grupo#anio
#Si no se sefine default_group entonces no se asigna grupo para docente o alumno.
default_group=0#2#Año#2017
...@@ -20,12 +20,6 @@ ...@@ -20,12 +20,6 @@
<version>3.0.1</version> <version>3.0.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- <dependency> -->
<!-- <groupId>org.hibernate</groupId> -->
<!-- <artifactId>hibernate-core</artifactId> -->
<!-- <version>5.1.0.Final</version> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<dependency> <dependency>
<groupId>com.sun.jersey</groupId> <groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId> <artifactId>jersey-server</artifactId>
...@@ -52,12 +46,6 @@ ...@@ -52,12 +46,6 @@
<artifactId>jackson-annotations</artifactId> <artifactId>jackson-annotations</artifactId>
<version>2.9.0</version> <version>2.9.0</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies> </dependencies>
......
...@@ -57,7 +57,6 @@ public class CommandsBean { ...@@ -57,7 +57,6 @@ public class CommandsBean {
private String nombrePrompt = ""; private String nombrePrompt = "";
public CommandsBean() { public CommandsBean() {
// System.out.println("Creo " + this.hashCode());
builder = null; builder = null;
} }
...@@ -155,7 +154,7 @@ public class CommandsBean { ...@@ -155,7 +154,7 @@ public class CommandsBean {
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println(e); e.printStackTrace();
} }
} }
...@@ -290,15 +289,6 @@ public class CommandsBean { ...@@ -290,15 +289,6 @@ public class CommandsBean {
callback.getBasicRemote().sendText(respuestaJson.toString()); callback.getBasicRemote().sendText(respuestaJson.toString());
nombrePrompt = ""; nombrePrompt = "";
} }
// File salidaHtml = new File("salida.html");
// if (salidaHtml.exists()) {
// Scanner salidaScaner = new Scanner(salidaHtml);
// String content =
// salidaScaner.useDelimiter("\\Z").next();
// result = content;
// salidaScaner.close();
// salidaHtml.delete();
// }
JsonObject respuestaJson = null; JsonObject respuestaJson = null;
if (result.contains("CANVAS:")) { if (result.contains("CANVAS:")) {
int index = result.indexOf("CANVAS:"); int index = result.indexOf("CANVAS:");
...@@ -344,6 +334,7 @@ public class CommandsBean { ...@@ -344,6 +334,7 @@ public class CommandsBean {
} catch (Exception ex) { } catch (Exception ex) {
System.err.println(ex.getMessage()); System.err.println(ex.getMessage());
// Thread.sleep(500); // Thread.sleep(500);
//Se reeintenta por bug de WebSphere. No sucede con wildfly.
reintentos++; reintentos++;
} }
} }
......
...@@ -12,18 +12,18 @@ import java.security.NoSuchAlgorithmException; ...@@ -12,18 +12,18 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Properties;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import javax.servlet.ServletContext;
import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.GenericType; import javax.ws.rs.core.GenericType;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import edu.proygrado.dto.MoodleCourseDTO; import edu.proygrado.dto.MoodleCourseDTO;
import edu.proygrado.dto.MoodleCoursesInfoDTO; import edu.proygrado.dto.MoodleCoursesInfoDTO;
import edu.proygrado.dto.MoodleRoleDTO; import edu.proygrado.dto.MoodleRoleDTO;
...@@ -40,6 +40,7 @@ import edu.proygrado.modelo.EstadoArchivo; ...@@ -40,6 +40,7 @@ import edu.proygrado.modelo.EstadoArchivo;
import edu.proygrado.modelo.Grupo; import edu.proygrado.modelo.Grupo;
import edu.proygrado.modelo.GrupoPK; import edu.proygrado.modelo.GrupoPK;
import edu.proygrado.modelo.Liceo; import edu.proygrado.modelo.Liceo;
import edu.proygrado.modelo.LiceoPK;
import edu.proygrado.modelo.Usuario; import edu.proygrado.modelo.Usuario;
/** /**
...@@ -48,27 +49,12 @@ import edu.proygrado.modelo.Usuario; ...@@ -48,27 +49,12 @@ import edu.proygrado.modelo.Usuario;
*/ */
@Stateless @Stateless
public class LoginEJB { public class LoginEJB {
public static String moodleApiEndpoint = null;
public static String moodleGroup = null; @Inject
private ServletContext context;
public LoginEJB() { public LoginEJB() {
super(); super();
JSONParser parser = new JSONParser();
try {
String currentPath = System.getProperty("user.dir");
String configFilePath = currentPath.substring(0,currentPath.length()-4);
configFilePath = configFilePath + "/standalone/deployments/matefun.war/WEB-INF/config.json";
Object obj = parser.parse(new FileReader(configFilePath));
JSONObject jsonObject = (JSONObject) obj;
LoginEJB.moodleApiEndpoint = (String) jsonObject.get("endpoint");
LoginEJB.moodleGroup = (String) jsonObject.get("group");
} catch (Exception e) {
// Para hacer deploy en BLUEMIX se utiliza esta configuración.
LoginEJB.moodleApiEndpoint = "https://tics.moodlecloud.com";
LoginEJB.moodleGroup = "Piloto";
e.printStackTrace();
System.out.print("No se ha podido cargar el archivo: /standalone/deployments/matefun.war/WEB-INF/config.json");
}
} }
@PersistenceContext(unitName = "matefunDS") @PersistenceContext(unitName = "matefunDS")
private EntityManager em; private EntityManager em;
...@@ -96,6 +82,10 @@ public class LoginEJB { ...@@ -96,6 +82,10 @@ public class LoginEJB {
return new UsuarioDTO(tokenAuth, usuario); return new UsuarioDTO(tokenAuth, usuario);
} }
//Si no se encuentra configuracion para Moodle se notifica que las credenciales son incorrectas.
if(getMoodleAPIEndpoint() == null || getMoodleDefaultGroup() == null){
throw new MatefunException("Usuario o contraseña incorrecto");
}
String token = null; String token = null;
token = getTokenMoodle(cedula, password); token = getTokenMoodle(cedula, password);
System.out.println("Obtengo token desde moodle"); System.out.println("Obtengo token desde moodle");
...@@ -119,7 +109,7 @@ public class LoginEJB { ...@@ -119,7 +109,7 @@ public class LoginEJB {
Long courseId = null; Long courseId = null;
for (MoodleCourseDTO course : coursesInfo.getEnrolledcourses()) { for (MoodleCourseDTO course : coursesInfo.getEnrolledcourses()) {
System.out.println(course.getShortname()); System.out.println(course.getShortname());
String groupName = LoginEJB.moodleGroup.toLowerCase(); String groupName = getMoodleDefaultGroup().toLowerCase();
if (course.getShortname().toLowerCase().equals(groupName)) { if (course.getShortname().toLowerCase().equals(groupName)) {
courseId = course.getId(); courseId = course.getId();
System.out.println(courseId); System.out.println(courseId);
...@@ -128,7 +118,7 @@ public class LoginEJB { ...@@ -128,7 +118,7 @@ public class LoginEJB {
if (courseId != null) { if (courseId != null) {
coursesInfo = getCursesInfo(token, userInfo.getUserid(), courseId); coursesInfo = getCursesInfo(token, userInfo.getUserid(), courseId);
} else { } else {
throw new MatefunForbiddenException("Usuario no asignado al curso \"" +LoginEJB.moodleGroup +"\" en Moodle"); throw new MatefunForbiddenException("Usuario no asignado al curso \"" +getMoodleDefaultGroup() +"\" en Moodle");
} }
String rol = null; String rol = null;
...@@ -143,18 +133,16 @@ public class LoginEJB { ...@@ -143,18 +133,16 @@ public class LoginEJB {
} }
if (rol == null) { if (rol == null) {
throw new MatefunForbiddenException("Rol incorrecto en curso \"" +LoginEJB.moodleGroup +"\""); throw new MatefunForbiddenException("Rol incorrecto en curso \"" +getMoodleDefaultGroup()+"\"");
} }
Usuario nuevoDesdeMoodle; Usuario nuevoDesdeMoodle;
Grupo grupo = null; Grupo grupo = null;
try { try {
grupo = (Grupo) em GrupoPK grupoPK = getDefaultGroup();
.createQuery( grupo = em.find(Grupo.class, grupoPK);
"select g from Grupo g where g.grupoPK.anio = 2017 and g.grupoPK.grado = 2 and g.grupoPK.grupo = 'Año'")
.getSingleResult();
} catch (Exception ex) { } catch (Exception ex) {
System.out.println("No se encuentra grupo 2°Año, no se asigna"); System.out.println("No se encuentra grupo por defecto, no se asigna");
} }
if (rol.equals("student")) { if (rol.equals("student")) {
nuevoDesdeMoodle = new Alumno(cedula, userInfo.getFirstname(), userInfo.getLastname(), nuevoDesdeMoodle = new Alumno(cedula, userInfo.getFirstname(), userInfo.getLastname(),
...@@ -197,12 +185,49 @@ public class LoginEJB { ...@@ -197,12 +185,49 @@ public class LoginEJB {
} }
} }
private String getMoodleAPIEndpoint(){
try{
String pathMatefunProperties = context.getRealPath("/WEB-INF/matefun.properties");
Properties props = new Properties();
props.load(new FileReader(pathMatefunProperties));
return props.getProperty("moodle_endpoint");
}catch(Exception e){
e.printStackTrace();
return null;
}
}
private String getMoodleDefaultGroup(){
try{
String pathMatefunProperties = context.getRealPath("/WEB-INF/matefun.properties");
Properties props = new Properties();
props.load(new FileReader(pathMatefunProperties));
return props.getProperty("moodle_group");
}catch(Exception e){
e.printStackTrace();
return null;
}
}
private GrupoPK getDefaultGroup(){
try{
String pathMatefunProperties = context.getRealPath("/WEB-INF/matefun.properties");
Properties props = new Properties();
props.load(new FileReader(pathMatefunProperties));
String[] grupo = props.getProperty("default_group").split("#");
LiceoPK lpk = new LiceoPK(Long.valueOf(grupo[0]));
return new GrupoPK(Integer.valueOf(grupo[3]), Integer.valueOf(grupo[1]), grupo[2], lpk);
}catch(Exception e){
return null;
}
}
private String getTokenMoodle(String username, String password) throws MatefunException { private String getTokenMoodle(String username, String password) throws MatefunException {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder(); javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build(); javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint + "/login/token.php"; String url = getMoodleAPIEndpoint() + "/login/token.php";
MoodleTokensDTO tokens = null; MoodleTokensDTO tokens = null;
try { try {
// https://tics.moodlecloud.com/login/token.php // https://tics.moodlecloud.com/login/token.php
...@@ -228,7 +253,7 @@ public class LoginEJB { ...@@ -228,7 +253,7 @@ public class LoginEJB {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder(); javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build(); javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint + "/webservice/rest/server.php"; String url = getMoodleAPIEndpoint()+ "/webservice/rest/server.php";
MoodleUserInfoDTO userInfo = null; MoodleUserInfoDTO userInfo = null;
try { try {
...@@ -255,7 +280,7 @@ public class LoginEJB { ...@@ -255,7 +280,7 @@ public class LoginEJB {
private MoodleCoursesInfoDTO getCursesInfo(String token, Long userId, Long courseId) throws MatefunException { private MoodleCoursesInfoDTO getCursesInfo(String token, Long userId, Long courseId) throws MatefunException {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder(); javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build(); javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint+ "/webservice/rest/server.php"; String url = getMoodleAPIEndpoint()+ "/webservice/rest/server.php";
List<MoodleCoursesInfoDTO> coursesInfo = null; List<MoodleCoursesInfoDTO> coursesInfo = null;
try { try {
...@@ -361,25 +386,6 @@ public class LoginEJB { ...@@ -361,25 +386,6 @@ public class LoginEJB {
invitado.addArchivo(mate); invitado.addArchivo(mate);
em.persist(mate); em.persist(mate);
// DOCENTE DE PRUEBA
// Docente prueba = new Docente ("prueba", "Nombre",
// "Apellido",generateHash("1234"));
// em.persist(prueba);
// Configuracion configPrueba = new Configuracion();
// configPrueba.setArgumentoF(true);
// configPrueba.setArgumentoI(true);
// configPrueba.setFontSizeEditor(12);
// configPrueba.setThemeEditor("ambiance");
// em.persist(configPrueba);
// prueba.setConfiguracion(configPrueba);
//
// Archivo root_prueba = new Archivo("root", new Date(), "Carpeta raiz",
// EstadoArchivo.Edicion, true, true, null, prueba);
// prueba.addArchivo(root_prueba);
// em.persist(root_prueba);
//
// prueba.addGrupoAsignado(segundoAnio);
segundoAnio.addAlumno(invitado); segundoAnio.addAlumno(invitado);
return "ok"; return "ok";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment