Esta es una API desarrollada en rails para probar la autenticación basada en token. Contiene login y registro de usuario aparte de "posts" para comprobar dicha autorización.
Los ficheros se han creado usando la orden rails g scaffold User name surname password_digest para los usuarios y rails g scaffold Posts name description para los posts.
Las gemas necesarias las instalaremos en el fichero Gemfile, estas gemas son bcrypt, JWT y simple_command despues de esto ejecutamos bundle install.
En el fichero user.rb añadimos la línea has_secure_password para encriptar las contraseñas.
En el fichero users_controller.rb en def user_params cambiamos los parámetros para añadir la contraseña y la confirmación de la contraseña en vez de "password_digest".
En el fichero config/application.rb añadimos la línea config.autoload_path << Rails.root.jon('lib') para cargar los ficheros de configuración que posteriormente añadiremos a la carpeta lib.
Dentro de la carpeta app crearemos la carpeta commands y dentro el fichero authenticate_user.rb.
Dentro de la misma carpeta commands añadiremos otro fichero que será llamado authorize_api_request.rb que revisará que el token sea valido
En la carpeta lib crearemos el archivo json_web_token.rb que contendrá los métodos para codificar y decodificar el token.
En la carpeta controllers añadiremos un fichero llamado authentication_controller.rb que en caso de no tener autorización rechazará la petición con el estado de no permitido.
En el fichero application_controller.rb añadiremos el método "authenticate_request" que hará que antes de ejecutar cualquier petición a la API se compruebe la autenticación.
Para permitir la creación de usuarios añadiremos que la autenticación solo sea necesaria en las peticiones de actualizacion y destrucción dentro del fichero application_controller.rb
Cómo último paso añadiremos en el fichero routes.rb la ruta para el controlador de la autenticación
Si intentamos acceder sin autenticación aparecerá el error 401 unauthorized
Crearemos un usuario de prueba con una contraseña y veremos que nos permite realizarlo ya que añadimos la línea de no realizar autenticación en las peticiones de creación
Y si realizamos una petición al end-point de autenticación con el usuario y la contraseña que pusimos a la hora de registrar el usuario nos devolverá el token de ese usuario
















