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
No related branches found
No related tags found
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 @@
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.hibernate</groupId> -->
<!-- <artifactId>hibernate-core</artifactId> -->
<!-- <version>5.1.0.Final</version> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
......@@ -52,13 +46,7 @@
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</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>
<build>
......
......@@ -57,7 +57,6 @@ public class CommandsBean {
private String nombrePrompt = "";
public CommandsBean() {
// System.out.println("Creo " + this.hashCode());
builder = null;
}
......@@ -155,7 +154,7 @@ public class CommandsBean {
}
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
......@@ -279,8 +278,8 @@ public class CommandsBean {
ArrayList<String> animacion = new ArrayList<>();
while (s.hasNextLine()) {
String result = s.nextLine();
// System.out.println(result);
// System.out.println("&&&/////");
//System.out.println(result);
//System.out.println("&&&/////");
if (nombrePrompt != "" && result.contains(nombrePrompt + ">")) {
if (nombrePrompt.length() > 10) {
nombrePrompt = nombrePrompt.substring(0, 7) + "...";
......@@ -290,15 +289,6 @@ public class CommandsBean {
callback.getBasicRemote().sendText(respuestaJson.toString());
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;
if (result.contains("CANVAS:")) {
int index = result.indexOf("CANVAS:");
......@@ -344,6 +334,7 @@ public class CommandsBean {
} catch (Exception ex) {
System.err.println(ex.getMessage());
// Thread.sleep(500);
//Se reeintenta por bug de WebSphere. No sucede con wildfly.
reintentos++;
}
}
......
......@@ -12,18 +12,18 @@ import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.servlet.ServletContext;
import javax.ws.rs.client.ClientBuilder;
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.MoodleCoursesInfoDTO;
import edu.proygrado.dto.MoodleRoleDTO;
......@@ -40,6 +40,7 @@ import edu.proygrado.modelo.EstadoArchivo;
import edu.proygrado.modelo.Grupo;
import edu.proygrado.modelo.GrupoPK;
import edu.proygrado.modelo.Liceo;
import edu.proygrado.modelo.LiceoPK;
import edu.proygrado.modelo.Usuario;
/**
......@@ -48,27 +49,12 @@ import edu.proygrado.modelo.Usuario;
*/
@Stateless
public class LoginEJB {
public static String moodleApiEndpoint = null;
public static String moodleGroup = null;
@Inject
private ServletContext context;
public LoginEJB() {
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")
private EntityManager em;
......@@ -96,6 +82,10 @@ public class LoginEJB {
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;
token = getTokenMoodle(cedula, password);
System.out.println("Obtengo token desde moodle");
......@@ -119,7 +109,7 @@ public class LoginEJB {
Long courseId = null;
for (MoodleCourseDTO course : coursesInfo.getEnrolledcourses()) {
System.out.println(course.getShortname());
String groupName = LoginEJB.moodleGroup.toLowerCase();
String groupName = getMoodleDefaultGroup().toLowerCase();
if (course.getShortname().toLowerCase().equals(groupName)) {
courseId = course.getId();
System.out.println(courseId);
......@@ -128,7 +118,7 @@ public class LoginEJB {
if (courseId != null) {
coursesInfo = getCursesInfo(token, userInfo.getUserid(), courseId);
} 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;
......@@ -143,18 +133,16 @@ public class LoginEJB {
}
if (rol == null) {
throw new MatefunForbiddenException("Rol incorrecto en curso \"" +LoginEJB.moodleGroup +"\"");
throw new MatefunForbiddenException("Rol incorrecto en curso \"" +getMoodleDefaultGroup()+"\"");
}
Usuario nuevoDesdeMoodle;
Grupo grupo = null;
try {
grupo = (Grupo) em
.createQuery(
"select g from Grupo g where g.grupoPK.anio = 2017 and g.grupoPK.grado = 2 and g.grupoPK.grupo = 'Año'")
.getSingleResult();
GrupoPK grupoPK = getDefaultGroup();
grupo = em.find(Grupo.class, grupoPK);
} 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")) {
nuevoDesdeMoodle = new Alumno(cedula, userInfo.getFirstname(), userInfo.getLastname(),
......@@ -196,13 +184,50 @@ public class LoginEJB {
return new UsuarioDTO(tokenAuth, nuevoDesdeMoodle);
}
}
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 {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
javax.ws.rs.client.Client c = cb.build();
String url = LoginEJB.moodleApiEndpoint + "/login/token.php";
String url = getMoodleAPIEndpoint() + "/login/token.php";
MoodleTokensDTO tokens = null;
try {
// https://tics.moodlecloud.com/login/token.php
......@@ -228,7 +253,7 @@ public class LoginEJB {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
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;
try {
......@@ -255,7 +280,7 @@ public class LoginEJB {
private MoodleCoursesInfoDTO getCursesInfo(String token, Long userId, Long courseId) throws MatefunException {
javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
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;
try {
......@@ -361,25 +386,6 @@ public class LoginEJB {
invitado.addArchivo(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);
return "ok";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment