diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index 82a37e400815ec871d3b88cc2f08a67740cec161..594bedfb51d2e9d594418b85e9e645d2f28ec6e1 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -3,6 +3,10 @@
 namespace App\Exceptions;
 
 use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
+use Illuminate\Http\JsonResponse;
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+use Illuminate\Support\Facades\Log;
 use Throwable;
 
 class Handler extends ExceptionHandler
@@ -44,7 +48,21 @@ class Handler extends ExceptionHandler
     public function register()
     {
         $this->reportable(function (Throwable $e) {
-            //
+            Log::error('exception: '.$e->getTraceAsString());
         });
     }
+
+    /**
+     * @param Request $request
+     * @param Throwable $e
+     * @return Response|JsonResponse|\Symfony\Component\HttpFoundation\Response
+     * @throws Throwable
+     */
+    public function render($request, Throwable $e): Response|JsonResponse|\Symfony\Component\HttpFoundation\Response
+    {
+        if ($e instanceof SactumAuthenticationException) {
+            return \response()->json('This process requires to be authenticated',401);
+        }
+        return parent::render($request, $e);
+    }
 }
diff --git a/app/Exceptions/SactumAuthenticationException.php b/app/Exceptions/SactumAuthenticationException.php
new file mode 100644
index 0000000000000000000000000000000000000000..b0cb5d5a876925be6112748caf847ce26efdbd31
--- /dev/null
+++ b/app/Exceptions/SactumAuthenticationException.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+use JetBrains\PhpStorm\Pure;
+
+class SactumAuthenticationException extends Exception{}
diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php
new file mode 100644
index 0000000000000000000000000000000000000000..87a034926769f706a54507604e114bbe72737b09
--- /dev/null
+++ b/app/Http/Controllers/AuthController.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+
+class AuthController extends Controller
+{
+    public function login(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'email' => 'required|string|email',
+            'password' => 'required|string|min:6'
+        ]);
+
+        if ( $validator->fails() || !auth('api')->attempt($validator->validated()) ) {
+            return response()->json(['Invalid credentials'], 401);
+        }
+
+        return response()->json([
+            'token' => auth('api')->user()->createToken('API Token')->plainTextToken,
+            'user' => auth('api')->user()
+        ]);
+    }
+
+    public function logout()
+    {
+        auth()->user()->tokens()->delete();
+        return  response()->json(['Token revoked']);
+    }
+}
\ No newline at end of file
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
index 704089a7fe757c137d99241b758c912d8391e19d..d9dcc9249a79dff706971403f1b2bad205fbe237 100644
--- a/app/Http/Middleware/Authenticate.php
+++ b/app/Http/Middleware/Authenticate.php
@@ -2,20 +2,16 @@
 
 namespace App\Http\Middleware;
 
+use App\Exceptions\SactumAuthenticationException;
 use Illuminate\Auth\Middleware\Authenticate as Middleware;
 
 class Authenticate extends Middleware
 {
     /**
-     * Get the path the user should be redirected to when they are not authenticated.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @return string|null
+     * @throws SactumAuthenticationException
      */
-    protected function redirectTo($request)
+    protected function unauthenticated($request, array $guards)
     {
-        if (! $request->expectsJson()) {
-            return route('login');
-        }
+        throw new SactumAuthenticationException("To access this endpoint you need to be authenticated",401);
     }
 }
diff --git a/app/Models/User.php b/app/Models/User.php
index aea9982747212ebf54344dcd3e3e63624f17e195..b9cb8bad4182d986e72afc66e46588fb667c32c9 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -12,6 +12,7 @@ use Laravel\Sanctum\HasApiTokens;
 
 /**
  * @method static create(string[] $array)
+ * @method static find(int $id)
  */
 class User extends Authenticatable
 {
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index ee8ca5bcd8f77d219f29529a9163587235c545d5..88da5b60052b9951ea3f8090e56d088e2f91b4ad 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -2,6 +2,7 @@
 
 namespace App\Providers;
 
+use Illuminate\Http\Resources\Json\JsonResource;
 use Illuminate\Support\ServiceProvider;
 
 class AppServiceProvider extends ServiceProvider
@@ -23,6 +24,6 @@ class AppServiceProvider extends ServiceProvider
      */
     public function boot()
     {
-        //
+        JsonResource::withoutWrapping();
     }
 }
diff --git a/composer.json b/composer.json
index 164c94bdd7dbe07d31942c7d1279e91f8aba9ab0..0ab4cf735fc13671e559a298985978b4c2dcf0e4 100644
--- a/composer.json
+++ b/composer.json
@@ -8,7 +8,7 @@
         "php": "^8.0.2",
         "guzzlehttp/guzzle": "^7.2",
         "laravel/framework": "^9.11",
-        "laravel/sanctum": "^2.14.1",
+        "laravel/sanctum": "^2.15",
         "laravel/tinker": "^2.7"
     },
     "require-dev": {
diff --git a/composer.lock b/composer.lock
index 5d01821b24868d1bc3e6d01977af95e0f33629e5..292c550f7374c6998d1a77fcf13efcc3b5fd0045 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "1abc7822bd9f28e9a62986817bf04f76",
+    "content-hash": "58fa573d0eb02b0bca9c8679dea764c0",
     "packages": [
         {
             "name": "brick/math",
@@ -895,16 +895,16 @@
         },
         {
             "name": "laravel/framework",
-            "version": "v9.13.0",
+            "version": "v9.17.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/laravel/framework.git",
-                "reference": "87b6cc8bc41d1cf85c7c1401cddde8570a3b95bb"
+                "reference": "091e287678ac723c591509ca6374e4ded4a99b1c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/laravel/framework/zipball/87b6cc8bc41d1cf85c7c1401cddde8570a3b95bb",
-                "reference": "87b6cc8bc41d1cf85c7c1401cddde8570a3b95bb",
+                "url": "https://api.github.com/repos/laravel/framework/zipball/091e287678ac723c591509ca6374e4ded4a99b1c",
+                "reference": "091e287678ac723c591509ca6374e4ded4a99b1c",
                 "shasum": ""
             },
             "require": {
@@ -1070,7 +1070,7 @@
                 "issues": "https://github.com/laravel/framework/issues",
                 "source": "https://github.com/laravel/framework"
             },
-            "time": "2022-05-17T14:07:43+00:00"
+            "time": "2022-06-07T15:09:32+00:00"
         },
         {
             "name": "laravel/sanctum",
diff --git a/config/auth.php b/config/auth.php
index d8c6cee7c19c410449b5b9458bde053ae8f5bda0..d819ad65137efa3a6057771685e0dc020d8bbc19 100644
--- a/config/auth.php
+++ b/config/auth.php
@@ -14,7 +14,7 @@ return [
     */
 
     'defaults' => [
-        'guard' => 'web',
+        'guard' => 'api',
         'passwords' => 'users',
     ],
 
@@ -40,6 +40,10 @@ return [
             'driver' => 'session',
             'provider' => 'users',
         ],
+        'api' => [
+            'driver' => 'session',
+            'provider' => 'users',
+        ],
     ],
 
     /*
diff --git a/config/sanctum.php b/config/sanctum.php
index 529cfdc9916c1bd990016e2d8789895873908548..0b60dde1bc0f352744b4810d086b1c32cfc61b5f 100644
--- a/config/sanctum.php
+++ b/config/sanctum.php
@@ -33,7 +33,7 @@ return [
     |
     */
 
-    'guard' => ['web'],
+    'guard' => ['api'],
 
     /*
     |--------------------------------------------------------------------------
diff --git a/routes/api.php b/routes/api.php
index eb6fa48c25d93f7bf753ba612cd2c7efecea5f4b..fd621dbcf9e902b16e206e12d41295cb02eb7882 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -1,5 +1,9 @@
 <?php
 
+use App\Http\Controllers\AuthController;
+use App\Http\Controllers\BikeController;
+use App\Http\Controllers\RouteController;
+use App\Http\Controllers\StopController;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Route;
 
@@ -17,3 +21,12 @@ use Illuminate\Support\Facades\Route;
 Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
     return $request->user();
 });
+
+Route::post('/login', [AuthController::class, 'login']);
+Route::get('/retobici/stops', [StopController::class, 'getAllStops']);
+
+Route::middleware('auth:sanctum')->group(function (){
+    Route::post('/retobici/bikes/unlock/{bike}', [BikeController::class, 'unlockBike']);
+    Route::put('/retobici/routes', [RouteController::class, 'createRoute']);
+});
+