EGC 2017/2018

Autenticación - 17 18 - G1

Trabajo

Miembros

  • Raúl Romero Palomo.
  • Manuel Gómez Suárez.
  • Alejandro Polvillo Hall.
  • Federico Álvaro Plasencia García de Diego.
  • Tomas Ruan Rollan.
  • Francisco Javier Santos Velázquez.

Repositorio de GitHub

El repositorio de GitHub del equipo será accesible en este enlace Cualquier cambio o documentación importante añadida a él se notificará a los coordinadores en el momento.

Opera

El proyecto en Opera del grupo es accesible desde el siguiente enlace

Entorno

Para la realización del trabajo usaremos las siguientes herramientas:

  • certifi==2017.7.27.1
  • click==6.7
  • Flask==0.12.2
  • flask-marshmallow==0.8.0
  • Flask-SQLAlchemy==2.1
  • itsdangerous==0.24
  • Jinja2==2.10
  • MarkupSafe==1.0
  • marshmallow==2.14.0
  • marshmallow-sqlalchemy==0.13.2
  • mysqlclient==1.3.12
  • passlib==1.7.1
  • six==1.11.0
  • SQLAlchemy==1.1.15
  • Werkzeug==0.12.2
  • Python==3.6
  • Docker==1.17.1

EndPoints

\

EndPoint para comprobar cookies:

Url de entrada para comprobar cookies:
:/cookies/{session_id}

Verbos:

Petición GET

Salida → Json con la siguiente información:

codigo:

0 → Si no existe la cookie en la base de datos

1 → La cookie existe en la base de datos y tiene un usuario asociado

status:

para Código 0 → "Cookie Incorrecta, no existe en la base de datos"

para Código 1 → "Cookie válida y existente en la base de datos"

usuario:

para código 0 → null

para código 1 → json con los datos de la cuenta de usuario asociado a la cookie.

Ejemplo Salida Cookie Válida:

{
"codigo": 1,
"status": "Cookie valida y existente en la base de datos",
"usuario": {
"email": "imosciski@example.com",
"id": 3,
"password": "77d6ab52742226b77d651f0e12fa22ff6adda3b9",
"role_id": 2,
"username": "rickey.nolan"
}
}

Ejemplo Salida Cookie Incorrecta:

{
"codigo": 0,
"status": "Cookie Incorrecta, no existe en la base de datos",
"usuario": null
}

EndPoint para asignar roles:

Url de entrada para asignar roles:
:/users/{user_id}/role

Verbos:
:Petición PUT Entrada → Json con el nuevo role:

{
"role_id": 1
}

Salida → Json con la siguiente información:
codigo:

0 → La Id de usuario no existe en la base de datos

1 → El role ha sido cambiado

2 → Role incorrecto, es diferente de 1 y 2

status:

para Código 0 → "Id de usuario incorrecta, no existe en la base de datos"

para Código 1 → "Role cambiado"

para Código 2 → "Role incorrecto, es diferente de 1 o 2"

usuario:

para código 0 → null

para código 1 → json con los datos de la cuenta de usuario asociado al ID.

para código 2 → null

Ejemplo Salida ID Válida:

{
"codigo": 1,
"status": "Role cambiado",
"usuario": {
"email": "imosciski@example.com",
"id": 3,
"password": "77d6ab52742226b77d651f0e12fa22ff6adda3b9",
"role_id": 2,
"username": "rickey.nolan"
}
}

Ejemplo Salida Role Incorrecto:

{
"codigo": 2,
"status": "Role incorrecto, es diferente de 1 o 2",
"usuario": null
}

Ejemplo Salida ID Incorrecta:

{
"codigo": 0,
"status": "Id de usuario incorrecta, no existe en la base de datos",
"usuario": null
}

EndPoint para cerrar sesión:

Nota: Realmente no es un endpoint REST, sino un enlace. No devuelve un JSON, sino una template (en este caso un redirect).

Url de entrada para cerrar sesión:

/logout

Verbos:

Petición GET

Salida:

Se busca la cookie de la sesión y en caso de obtenerla, se procede a borrar la cookie de la base de datos. Después se redirige a /login