<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Josgarrod17</id>
		<title>Wiki de EGC - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Josgarrod17"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php/Especial:Contribuciones/Josgarrod17"/>
		<updated>2026-05-14T15:00:54Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=7206</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=7206"/>
				<updated>2018-01-09T14:31:01Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* APIs y datos que se usarán y devolverán */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7, Django 1.11, Django REST API&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: MySQL, Django REST API&lt;br /&gt;
*Necesita Base de datos: Sí (MySQL)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
El coordinador de nuestro grupo, José Ángel, será el encargado de realizar los commit a la rama master.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
! Petición HTTP&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/getUser/nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;ASISTENTE&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/getRoleUser/nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;ASISTENTE&amp;quot;, &amp;quot;PONENTE&amp;quot;, &amp;quot;AMBOS&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;AMBOS&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;ASISTENTE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getUsersByRole&lt;br /&gt;
| Obtiene todos los usuarios del sistema que tenga el role pasado por parámetros, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/getUsersByRole/role&lt;br /&gt;
| JSON con un array con los datos de cada usuario que tenga el role pasado. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/checkToken/token&lt;br /&gt;
| JSON con los campos msg = 'Successful' y result = 'True' si es válido, msg = 'Error' y result = 'False' si no es válido&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* username: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/checkTokenUser/username/token&lt;br /&gt;
| JSON con los campos msg = 'Successful' y result = 'True' si es válido, msg = 'Error' y result = 'False' si no es válido&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| postUser&lt;br /&gt;
| Se le pasa por parámetros los datos que el usuario ingresa para registrarse en el sistema, se comprueba si los datos son válidos y se guarda el usuario.&lt;br /&gt;
|&lt;br /&gt;
* formulario de ingreso en el sistema&lt;br /&gt;
| url/api/postUser&lt;br /&gt;
| JSON con el result y msg donde se  muestra que todo ha ido correctamente.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
|POST&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;br /&gt;
&lt;br /&gt;
== Vistas del subsistema ==&lt;br /&gt;
Enlace a GitHub del proyecto con las vistas: https://github.com/EGC-G2-Trabajo-1718/autenticacion/tree/damserfer/ProyectoEGC&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=7205</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=7205"/>
				<updated>2018-01-09T14:29:59Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* APIs y datos que se usarán y devolverán */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7, Django 1.11, Django REST API&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: MySQL, Django REST API&lt;br /&gt;
*Necesita Base de datos: Sí (MySQL)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
El coordinador de nuestro grupo, José Ángel, será el encargado de realizar los commit a la rama master.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
! Petición HTTP&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/getUser/nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;ASISTENTE&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/getRoleUser/nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;ASISTENTE&amp;quot;, &amp;quot;PONENTE&amp;quot;, &amp;quot;AMBOS&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;AMBOS&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;ASISTENTE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getUsersByRole&lt;br /&gt;
| Obtiene todos los usuarios del sistema que tenga el role pasado por parámetros, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/getUsersByRole/role&lt;br /&gt;
| JSON con un array con los datos de cada usuario que tenga el role pasado. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/checkToken/token&lt;br /&gt;
| JSON con los campos msg = 'Successful' y result = 'True' si es válido, msg = 'Error' y result = 'False' si no es válido&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/checkTokenUser/username/token&lt;br /&gt;
| JSON con los campos msg = 'Successful' y result = 'True' si es válido, msg = 'Error' y result = 'False' si no es válido&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| postUser&lt;br /&gt;
| Se le pasa por parámetros los datos que el usuario ingresa para registrarse en el sistema, se comprueba si los datos son válidos y se guarda el usuario.&lt;br /&gt;
|&lt;br /&gt;
* formulario de ingreso en el sistema&lt;br /&gt;
| url/api/postUser&lt;br /&gt;
| JSON con el result y msg donde se  muestra que todo ha ido correctamente.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
|POST&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;br /&gt;
&lt;br /&gt;
== Vistas del subsistema ==&lt;br /&gt;
Enlace a GitHub del proyecto con las vistas: https://github.com/EGC-G2-Trabajo-1718/autenticacion/tree/damserfer/ProyectoEGC&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=7204</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=7204"/>
				<updated>2018-01-09T14:25:12Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Miembros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7, Django 1.11, Django REST API&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: MySQL, Django REST API&lt;br /&gt;
*Necesita Base de datos: Sí (MySQL)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
El coordinador de nuestro grupo, José Ángel, será el encargado de realizar los commit a la rama master.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
! Petición HTTP&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/getUser/nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;ASISTENTE&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/getRoleUser/nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;ASISTENTE&amp;quot;, &amp;quot;PONENTE&amp;quot;, &amp;quot;AMBOS&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;AMBOS&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;ASISTENTE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| getUsersByRole&lt;br /&gt;
| Obtiene todos los usuarios del sistema que tenga el role pasado por parámetros, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/getUsersByRole/role&lt;br /&gt;
| JSON con un array con los datos de cada usuario que tenga el role pasado. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;PONENTE&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/checkToken/token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/checkTokenUser/user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
| GET&lt;br /&gt;
|-&lt;br /&gt;
| postUser&lt;br /&gt;
| Se le pasa por parámetros los datos que el usuario ingresa para registrarse en el sistema, se comprueba si los datos son válidos y se guarda el usuario.&lt;br /&gt;
|&lt;br /&gt;
* formulario de ingreso en el sistema&lt;br /&gt;
| url/api/postUser&lt;br /&gt;
| JSON con el result y msg donde se  muestra que todo ha ido correctamente.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
|POST&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;br /&gt;
&lt;br /&gt;
== Vistas del subsistema ==&lt;br /&gt;
Enlace a GitHub del proyecto con las vistas: https://github.com/EGC-G2-Trabajo-1718/autenticacion/tree/damserfer/ProyectoEGC&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6669</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6669"/>
				<updated>2017-11-30T18:15:21Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* APIs y datos que se usarán y devolverán */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
El coordinador de nuestro grupo, José Ángel, será el encargado de realizar los commit a la rama master.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
! Petición HTTP&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| postUser&lt;br /&gt;
| Se le pasa por parámetros los datos que el usuario ingresa para registrarse en el sistema, se comprueba si los datos son válidos y se guarda el usuario.&lt;br /&gt;
|&lt;br /&gt;
* formulario de ingreso en el sistema&lt;br /&gt;
| url/api/form.php&lt;br /&gt;
| JSON con el result y msg donde se  muestra que todo ha ido correctamente.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6668</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6668"/>
				<updated>2017-11-30T18:12:04Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* APIs y datos que se usarán y devolverán */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
El coordinador de nuestro grupo, José Ángel, será el encargado de realizar los commit a la rama master.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
! Petición HTTP&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| postUser&lt;br /&gt;
| Se le pasa por parámetros los datos que el usuario ingresa para registrarse en el sistema, se comprueba si los datos son válidos y se guarda el usuario.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/form.php&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6666</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6666"/>
				<updated>2017-11-30T18:03:12Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Gestión de las ramas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
El coordinador de nuestro grupo, José Ángel, será el encargado de realizar los commit a la rama master.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6665</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6665"/>
				<updated>2017-11-30T17:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* APIs y datos que se usarán y devolverán */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas junto con las pautas dada por el equipo de integración. Como el ser obligatorio que aparezcan en las respuestas los parámetros result (Es un Boolean que devuelve el resultado de la operación) y msg (Es un String que devuelve el memnsaje de resultado o error)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6664</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6664"/>
				<updated>2017-11-30T17:55:12Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* APIs y datos que se usarán y devolverán */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot; : true,&lt;br /&gt;
        &amp;quot;msg&amp;quot; : &amp;quot;Successfull&amp;quot;,&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6663</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6663"/>
				<updated>2017-11-30T17:42:58Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Gestión del código */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato dado por el grupo de integración:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6661</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6661"/>
				<updated>2017-11-30T17:42:11Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Gestión de las incidencias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Procedimiento general para la gestión de incidencias ===&lt;br /&gt;
# Establecer a un miembro del equipo el rol de gestor de incidencias.&lt;br /&gt;
# Cuando se registre una incidencia, el gestor deberá evaluar la prioridad, asignar las etiquetas correspondientes (si faltasen) y un responsable de la incidencia.&lt;br /&gt;
# El responsable trabajará en la incidencia. Si un commit cierra una incidencia deberá incluir en el cuerpo del commit &amp;quot;Closes #&amp;lt;id de la incidencia&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Las incidencias pueden incluirse en ''Proyectos'' de GitHub.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6660</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6660"/>
				<updated>2017-11-30T17:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Gestión de las ramas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6659</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6659"/>
				<updated>2017-11-30T17:34:48Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Gestión del código */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub con el formato dado por el grupo de integración. Los commits tendrán el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación se detalla un ejemplo:&lt;br /&gt;
&lt;br /&gt;
 '''Título del commit''': fix: redirección errónea tras intentar &lt;br /&gt;
 un usuario autenticarse&lt;br /&gt;
 '''Cuerpo del commit''': Después de que el usuario intente autenticarse era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
 '''Pie del commit''': Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo en texto:&lt;br /&gt;
 fix: redirección errónea tras intentar autenticarse&lt;br /&gt;
&lt;br /&gt;
Después de que el usuario intentara autenticarse, este era redireccionado a una URL no existente. Ahora el usuario es redireccionado a su inicio de sesión.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato dado por el grupo de integración:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
Gestionaremos el proyecto añadiéndo tantas ramas como personas trabajen en él, de esta manera las tareas se dividirán por persona. Esta gestión la hemos recogido de la proporcionada por el grupo de integración.&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6635</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6635"/>
				<updated>2017-11-29T13:33:22Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: /* Gestión de las ramas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
== Miembros==&lt;br /&gt;
* Jose Carlos García Rodríguez&lt;br /&gt;
* Jose Ángel Domínguez Espinaco&lt;br /&gt;
* Tania Salguero Álvarez&lt;br /&gt;
* Damián Serrano Fernández&lt;br /&gt;
* Lizseth Katherine Esquen Saavedra&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
== Tecnologías elegidas ==&lt;br /&gt;
*Subsistema: Autenticación&lt;br /&gt;
*Lenguaje/Herramienta: Plugin para Eclipse Neon.3 (4.6.3) de Python 2.7 y Django 1.5.12&lt;br /&gt;
*Sistema de gestión de bibliotecas: pip&lt;br /&gt;
*Bibliotecas: SQLite3&lt;br /&gt;
*Necesita Base de datos: Sí (SQLite3)&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticaci%C3%B3n_B_1617&lt;br /&gt;
&lt;br /&gt;
== Gestión de la comunicación ==&lt;br /&gt;
La comunicación se realizará a través de un grupo de WhatsApp formado por los miembros del equipo de trabajo. Además, se realizarán reuniones tanto presenciales como telemáticas a través de Skype.&lt;br /&gt;
&lt;br /&gt;
== Gestión del trabajo ==&lt;br /&gt;
Para gestionar las tareas y el tiempo usaremos Trello integrado con Toggl. Ambas herramientas conjuntas nos permiten repartir las tareas entre los miembros del equipo y contabilizar el tiempo real que cada uno invierte en ellas.&lt;br /&gt;
&lt;br /&gt;
== Gestión del código ==&lt;br /&gt;
Realizaremos la gestión del código a través de GitHub. Los commits tendrán el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
 Título del commit: tipo: aquí ponemos el título&lt;br /&gt;
 Cuerpo del commit: aquí describimos el commit.&lt;br /&gt;
 Pie del commit: Closes #&amp;lt;número de la incidencia en GitHub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Los tipos de commit son los siguientes:&lt;br /&gt;
*feat: Una nueva característica.&lt;br /&gt;
*fix: Se soluciono un bug.&lt;br /&gt;
*docs: Se realizaron cambios en la documentación.&lt;br /&gt;
*style: Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el código.&lt;br /&gt;
*refactor: Refactorización del código en producción.&lt;br /&gt;
*test: Se añadieron pruebas, refactorización de pruebas; Sin cambios en el código.&lt;br /&gt;
*chore: Actualización de tareas de build, configuración del admin. de paquetes; Sin cambios en el código.&lt;br /&gt;
&lt;br /&gt;
== Gestión de las incidencias==&lt;br /&gt;
La gestión de las incidencias se realizará siguiendo el siguiente formato:&lt;br /&gt;
 '''Título''': &amp;lt;breve título sobre la incidencia&amp;gt;&lt;br /&gt;
 '''Prioridad''': a seleccionar entre distintos valores: ''urgente'', ''alto'', ''medio'', ''bajo''.&lt;br /&gt;
 '''Estado''': ''pendiente'', ''en curso'', ''finalizado''. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.&lt;br /&gt;
 '''Descripción''': &amp;lt;descripción detallada del error&amp;gt;&lt;br /&gt;
    La descripción puede incluir imagenes o la salida emitida por el fallo.&lt;br /&gt;
 '''Etiquetas''': &amp;lt;etiquetas de GitHub para clasificar las incidencias&amp;gt;&lt;br /&gt;
    ''enhancement'': propuesta de mejora&lt;br /&gt;
    ''bug'': fallos encontrados en el sistema&lt;br /&gt;
    ''help wanted'': incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro&lt;br /&gt;
    ''question'': (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión&lt;br /&gt;
&lt;br /&gt;
== Gestión de las ramas==&lt;br /&gt;
[[Archivo:Rama G2-AT.png]]&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Se va a utilizar la API del curso anterior, vamos a realizar un cambio de lenguaje a python y además haremos las modificaciones oportunas.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Recurso&lt;br /&gt;
! Descripción&lt;br /&gt;
! Parámetros&lt;br /&gt;
! Ejemplo de llamada&lt;br /&gt;
! Respuesta&lt;br /&gt;
! Ejemplo de respuesta&lt;br /&gt;
|-&lt;br /&gt;
| getUser&lt;br /&gt;
| Obtiene un usuario del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
* user: Nombre del usuario&lt;br /&gt;
| url/api/index.php?method=getUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el usuario pedido. Los datos del usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;tansalalv&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Tania&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Salguero Álvarez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Femenino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getRoleUser&lt;br /&gt;
| Obtiene el rol del usuario que se le ofrece por parámetros.&lt;br /&gt;
|&lt;br /&gt;
* user: nombre del usuario cuyo rol queremos obtener.&lt;br /&gt;
| url/api/index.php?method=getRoleUser&amp;amp;user=nombreusuario&lt;br /&gt;
| JSON con el campo &amp;quot;role&amp;quot; indicando el rol del usuario siendo las opciones: &amp;quot;USUARIO&amp;quot;, &amp;quot;CREADOR_VOTACIONES&amp;quot; y &amp;quot;ADMIN&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;role&amp;quot; = &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| getUsers&lt;br /&gt;
| Obtiene todos los usuarios del sistema, incluyendo sus datos.&lt;br /&gt;
|&lt;br /&gt;
| url/api/index.php?method=getUsers&lt;br /&gt;
| JSON con un array con los datos de cada usuario. Los datos de cada usuario son los siguientes: &amp;quot;username&amp;quot;, &amp;quot;name&amp;quot;, &amp;quot;surname&amp;quot;, &amp;quot;email&amp;quot;, &amp;quot;genre&amp;quot;, &amp;quot;autonomous_community&amp;quot;, &amp;quot;age&amp;quot; y &amp;quot;role&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
    [{&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josgarrod17&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Carlos&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;García Rodríguez&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail1@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Andalucía&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;USUARIO&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;username&amp;quot; : &amp;quot;josdomesp&amp;quot;,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;Jose Ángel&amp;quot;,&lt;br /&gt;
        &amp;quot;surname&amp;quot; : &amp;quot;Domínguez Espinaco&amp;quot;,&lt;br /&gt;
        &amp;quot;email&amp;quot; : &amp;quot;mail2@example.com&amp;quot;,&lt;br /&gt;
        &amp;quot;genre&amp;quot; : &amp;quot;Masculino&amp;quot;,&lt;br /&gt;
        &amp;quot;autonomous_community&amp;quot; : &amp;quot;Madrid&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot; : &amp;quot;21&amp;quot;,&lt;br /&gt;
        &amp;quot;role&amp;quot; : &amp;quot;CREADOR_VOTACIONES&amp;quot;&lt;br /&gt;
    }]&lt;br /&gt;
|-&lt;br /&gt;
| checkToken&lt;br /&gt;
| Comprueba si un token es válido. Para ello, se obtiene el usuario correspondiente al token (indicado al comienzo del token), se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
|&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkToken&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|-&lt;br /&gt;
| checkTokenUser&lt;br /&gt;
| Comprueba si un token es válido para un usuario. Para ello, se obtiene el usuario pasado como parámetro, se genera el token del usuario y se comprueba si es igual que el pasado como parámetro.&lt;br /&gt;
| &lt;br /&gt;
* user: nombre del usuario cuyo token se va a comprobar.&lt;br /&gt;
* token: token a validar.&lt;br /&gt;
| url/api/index.php?method=checkTokenUser&amp;amp;user=nombreusuario&amp;amp;token=nombreusuario%3A5ca38d5a73c0f04c4f7cc1c35acc7a47&lt;br /&gt;
| JSON con el campo &amp;quot;valid&amp;quot; indicando la validez del token (true/false).&lt;br /&gt;
|&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;valid&amp;quot;=true&lt;br /&gt;
    }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enlaces ==&lt;br /&gt;
Opera: http://opera.eii.us.es/egc/public/trabajo/ver/id/95&lt;br /&gt;
GitHub: https://github.com/EGC-G2-Trabajo-1718/autenticacion&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Archivo:Rama_G2-AT.png&amp;diff=6634</id>
		<title>Archivo:Rama G2-AT.png</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Archivo:Rama_G2-AT.png&amp;diff=6634"/>
				<updated>2017-11-29T13:31:55Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6600</id>
		<title>Autenticación - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18_-_G2&amp;diff=6600"/>
				<updated>2017-11-28T10:43:29Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de Python 2.7 y Django 1.4.7&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bibliotecas''': &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
Gestionar todos los usuarios registrados y permitir el inicio de sesión para acceder a los distintos subsistemas.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Se deben gestionar roles o permisos para permitir el acceso a los distintos subsistemas. Por ejemplo, permisos solo para votar, para organizar votaciones, gestionar censos, ...&lt;br /&gt;
* Debe permitir que los otros subsistemas puedan conocer si un usuario está autenticado&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Autentication&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Autenticación_1617&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6599</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6599"/>
				<updated>2017-11-28T10:42:37Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: Página blanqueada&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6573</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6573"/>
				<updated>2017-11-27T18:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de Python 2.7 y Django 1.4.7&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bibliotecas''': &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6571</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6571"/>
				<updated>2017-11-27T18:03:45Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de:´Python 2.7 y Django 1.4.7&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bibliotecas''': &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6570</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6570"/>
				<updated>2017-11-27T18:03:05Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de:&amp;lt;br/&amp;gt;&lt;br /&gt;
-Python 2.7&amp;lt;br/&amp;gt;&lt;br /&gt;
-Django 1.4.7&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bibliotecas''': &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6569</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6569"/>
				<updated>2017-11-27T17:59:06Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de:&lt;br /&gt;
-Python 2.7&amp;lt;br/&amp;gt;&lt;br /&gt;
-Django 1.4.7&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Bibliotecas''': &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6568</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6568"/>
				<updated>2017-11-27T17:55:43Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de:&lt;br /&gt;
-Python 2.7&amp;lt;br/&amp;gt;&lt;br /&gt;
-Django 1.4.7&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6567</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6567"/>
				<updated>2017-11-27T17:55:16Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación que consiste en dar acceso a los distintos usuarios validando su email y contraseña, permitiéndoles un espacio definido según su rol registrado.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de autenticación definido arriba, el objetivo es conseguir que cada rol tenga su espacio independiente sin interferir con el de los demás, tiene que dar la posibilidad de que un mismo usuario se pueda registrar como poniente y como asistente con una sola cuenta y que no haya conflictos entre estas. Además, a la hora de la autenticación el usuario deberá completar un captcha para poder obtener dicho acceso.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Autenticación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Plugin para Eclipse de:&lt;br /&gt;
                      -Python 2.7&amp;lt;br/&amp;gt;&lt;br /&gt;
                      -Django 1.4.7&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
-  &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: sqlite3 &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6566</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6566"/>
				<updated>2017-11-27T17:40:16Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: Página blanqueada&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6565</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6565"/>
				<updated>2017-11-27T17:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;votos&amp;quot;: {&lt;br /&gt;
            &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
    &amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6564</id>
		<title>Autenticación - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Autenticaci%C3%B3n_-_17_18&amp;diff=6564"/>
				<updated>2017-11-27T17:39:03Z</updated>
		
		<summary type="html">&lt;p&gt;Josgarrod17: Página creada con « '''== Resumen del trabajo == '''»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''== Resumen del trabajo ==&lt;br /&gt;
'''&lt;/div&gt;</summary>
		<author><name>Josgarrod17</name></author>	</entry>

	</feed>