Index: app/Http/Controllers/AuthController.php
===================================================================
--- app/Http/Controllers/AuthController.php	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
+++ app/Http/Controllers/AuthController.php	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Validator;
+use Inertia\Inertia;
+
+class AuthController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     */
+    public function login()
+    {
+        return Inertia::render('Auth/Login');
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     */
+    public function storeLogin(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'email' => ['required', 'string', 'email'],
+            'password' => ['required', 'string'],
+        ]);
+
+        if ($validator->fails()) {
+            return back()->withErrors($validator->errors()->toArray());
+        }
+
+        $credentials = [
+            'email' => $request->email,
+            'password' => $request->password,
+        ];
+
+        if (Auth::attempt($credentials)) {
+            $request->session()->regenerate();
+
+            return redirect()->intended('/dashboard');
+        }
+
+        return back()->withErrors([
+            'email' => 'The provided credentials do not match our records.',
+        ]);
+    }
+
+    /**
+     * Display the specified resource.
+     */
+    public function show(string $id)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     */
+    public function edit(string $id)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     */
+    public function update(Request $request, string $id)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     */
+    public function destroy(string $id)
+    {
+        //
+    }
+}
Index: app/Models/User.php
===================================================================
--- app/Models/User.php	(revision 82ff9f9b279491ccd7f117cb24a1620bba0b4f2f)
+++ app/Models/User.php	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -4,4 +4,5 @@
 
 // use Illuminate\Contracts\Auth\MustVerifyEmail;
+use Illuminate\Database\Eloquent\Concerns\HasUuids;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Foundation\Auth\User as Authenticatable;
@@ -10,16 +11,14 @@
 class User extends Authenticatable
 {
-    /** @use HasFactory<\Database\Factories\UserFactory> */
-    use HasFactory, Notifiable;
+    use HasFactory, HasUuids, Notifiable;
 
-    /**
-     * The attributes that are mass assignable.
-     *
-     * @var list<string>
-     */
+    public $incrementing = false;
+    protected $keyType = 'string';
     protected $fillable = [
+        'id',
         'name',
         'email',
         'password',
+        'is_admin',
     ];
 
@@ -42,6 +41,8 @@
     {
         return [
+            'id' => 'string',
             'email_verified_at' => 'datetime',
             'password' => 'hashed',
+            'is_admin' => 'boolean'
         ];
     }
Index: database/migrations/0001_01_01_000000_create_users_table.php
===================================================================
--- database/migrations/0001_01_01_000000_create_users_table.php	(revision 82ff9f9b279491ccd7f117cb24a1620bba0b4f2f)
+++ database/migrations/0001_01_01_000000_create_users_table.php	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -13,9 +13,10 @@
     {
         Schema::create('users', function (Blueprint $table) {
-            $table->id();
+            $table->uuid('id')->primary();
             $table->string('name');
             $table->string('email')->unique();
             $table->timestamp('email_verified_at')->nullable();
             $table->string('password');
+            $table->boolean('is_admin')->default(false);
             $table->rememberToken();
             $table->timestamps();
@@ -30,9 +31,11 @@
         Schema::create('sessions', function (Blueprint $table) {
             $table->string('id')->primary();
-            $table->foreignId('user_id')->nullable()->index();
+            $table->uuid('user_id')->nullable()->index();
             $table->string('ip_address', 45)->nullable();
             $table->text('user_agent')->nullable();
             $table->longText('payload');
             $table->integer('last_activity')->index();
+
+            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
         });
     }
Index: resources/js/Pages/Auth/Login.vue
===================================================================
--- resources/js/Pages/Auth/Login.vue	(revision 82ff9f9b279491ccd7f117cb24a1620bba0b4f2f)
+++ resources/js/Pages/Auth/Login.vue	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -1,98 +1,78 @@
 <script setup lang="ts">
-import Checkbox from '@/Components/Checkbox.vue';
-import GuestLayout from '@/Layouts/GuestLayout.vue';
-import InputError from '@/Components/InputError.vue';
-import InputLabel from '@/Components/InputLabel.vue';
-import PrimaryButton from '@/Components/PrimaryButton.vue';
-import TextInput from '@/Components/TextInput.vue';
-import { Head, Link, useForm } from '@inertiajs/vue3';
-
-defineProps<{
-    canResetPassword?: boolean;
-    status?: string;
-}>();
+import {Button} from "@/components/ui/button"
+import {Card, CardContent, CardDescription, CardHeader, CardTitle} from "@/components/ui/card"
+import {Input} from "@/components/ui/input"
+import {Label} from "@/components/ui/label"
+import {useForm} from "@inertiajs/vue3";
+import {computed} from "vue";
+import {route} from 'ziggy-js';
 
 const form = useForm({
     email: '',
     password: '',
-    remember: false,
 });
 
 const submit = () => {
-    form.post(route('login'), {
-        onFinish: () => {
-            form.reset('password');
-        },
+    form.post(route('storeLogin'), {
+        preserveScroll: true,
+        onSuccess: () => form.reset('password'),
     });
 };
+
+const errors = computed(() => ({
+    email: form.errors.email,
+    password: form.errors.password,
+}));
 </script>
 
 <template>
-    <GuestLayout>
-        <Head title="Log in" />
-
-        <div v-if="status" class="mb-4 text-sm font-medium text-green-600">
-            {{ status }}
-        </div>
-
-        <form @submit.prevent="submit">
-            <div>
-                <InputLabel for="email" value="Email" />
-
-                <TextInput
-                    id="email"
-                    type="email"
-                    class="mt-1 block w-full"
-                    v-model="form.email"
-                    required
-                    autofocus
-                    autocomplete="username"
-                />
-
-                <InputError class="mt-2" :message="form.errors.email" />
-            </div>
-
-            <div class="mt-4">
-                <InputLabel for="password" value="Password" />
-
-                <TextInput
-                    id="password"
-                    type="password"
-                    class="mt-1 block w-full"
-                    v-model="form.password"
-                    required
-                    autocomplete="current-password"
-                />
-
-                <InputError class="mt-2" :message="form.errors.password" />
-            </div>
-
-            <div class="mt-4 block">
-                <label class="flex items-center">
-                    <Checkbox name="remember" v-model:checked="form.remember" />
-                    <span class="ms-2 text-sm text-gray-600 dark:text-gray-400"
-                        >Remember me</span
-                    >
-                </label>
-            </div>
-
-            <div class="mt-4 flex items-center justify-end">
-                <Link
-                    v-if="canResetPassword"
-                    :href="route('password.request')"
-                    class="rounded-md text-sm text-gray-600 underline hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:text-gray-400 dark:hover:text-gray-100 dark:focus:ring-offset-gray-800"
-                >
-                    Forgot your password?
-                </Link>
-
-                <PrimaryButton
-                    class="ms-4"
-                    :class="{ 'opacity-25': form.processing }"
-                    :disabled="form.processing"
-                >
-                    Log in
-                </PrimaryButton>
-            </div>
-        </form>
-    </GuestLayout>
+    <div class="h-screen flex items-center justify-center">
+        <Card class="w-100">
+            <CardHeader>
+                <CardTitle class="text-2xl">
+                    Login
+                </CardTitle>
+                <CardDescription>
+                    Enter your email below to login to your account
+                </CardDescription>
+            </CardHeader>
+            <CardContent>
+                <div class="grid gap-4">
+                    <form @submit.prevent="submit">
+                        <div class="grid gap-2">
+                            <Label for="email">Email</Label>
+                            <Input
+                                id="email"
+                                type="email"
+                                v-model="form.email"
+                                :class="{'is-invalid':errors.email}"
+                                placeholder="m@example.com"
+                                required
+                            />
+                            <span v-if="errors.email" class="text-red-600 text-sm">{{ errors.email }}</span>
+                        </div>
+                        <div class="grid gap-2">
+                            <div class="flex items-center">
+                                <Label for="password">Password</Label>
+                                <a href="#" class="ml-auto inline-block text-sm underline">
+                                    Forgot your password?
+                                </a>
+                            </div>
+                            <Input
+                                id="password"
+                                type="password"
+                                v-model="form.password"
+                                :class="{'border-red-600':errors.password}"
+                                required
+                            />
+                        </div>
+                        <Button type="submit" class="w-full" :disabled="form.processing">
+                            <span v-if="form.processing">Logging in...</span>
+                            <span v-else>Login</span>
+                        </Button>
+                    </form>
+                </div>
+            </CardContent>
+        </Card>
+    </div>
 </template>
Index: resources/js/Pages/Home/Index.vue
===================================================================
--- resources/js/Pages/Home/Index.vue	(revision 82ff9f9b279491ccd7f117cb24a1620bba0b4f2f)
+++ resources/js/Pages/Home/Index.vue	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -0,0 +1,5 @@
+<script lang="ts" setup>
+
+</script>
+
+<template></template>
Index: resources/js/components/ui/label/Label.vue
===================================================================
--- resources/js/components/ui/label/Label.vue	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
+++ resources/js/components/ui/label/Label.vue	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -0,0 +1,26 @@
+<script setup lang="ts">
+import type { LabelProps } from "reka-ui"
+import type { HTMLAttributes } from "vue"
+import { reactiveOmit } from "@vueuse/core"
+import { Label } from "reka-ui"
+import { cn } from "@/lib/utils"
+
+const props = defineProps<LabelProps & { class?: HTMLAttributes["class"] }>()
+
+const delegatedProps = reactiveOmit(props, "class")
+</script>
+
+<template>
+  <Label
+    data-slot="label"
+    v-bind="delegatedProps"
+    :class="
+      cn(
+        'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',
+        props.class,
+      )
+    "
+  >
+    <slot />
+  </Label>
+</template>
Index: resources/js/components/ui/label/index.ts
===================================================================
--- resources/js/components/ui/label/index.ts	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
+++ resources/js/components/ui/label/index.ts	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -0,0 +1,1 @@
+export { default as Label } from "./Label.vue"
Index: utes/auth.php
===================================================================
--- routes/auth.php	(revision 82ff9f9b279491ccd7f117cb24a1620bba0b4f2f)
+++ 	(revision )
@@ -1,59 +1,0 @@
-<?php
-
-use App\Http\Controllers\Auth\AuthenticatedSessionController;
-use App\Http\Controllers\Auth\ConfirmablePasswordController;
-use App\Http\Controllers\Auth\EmailVerificationNotificationController;
-use App\Http\Controllers\Auth\EmailVerificationPromptController;
-use App\Http\Controllers\Auth\NewPasswordController;
-use App\Http\Controllers\Auth\PasswordController;
-use App\Http\Controllers\Auth\PasswordResetLinkController;
-use App\Http\Controllers\Auth\RegisteredUserController;
-use App\Http\Controllers\Auth\VerifyEmailController;
-use Illuminate\Support\Facades\Route;
-
-Route::middleware('guest')->group(function () {
-    Route::get('register', [RegisteredUserController::class, 'create'])
-        ->name('register');
-
-    Route::post('register', [RegisteredUserController::class, 'store']);
-
-    Route::get('login', [AuthenticatedSessionController::class, 'create'])
-        ->name('login');
-
-    Route::post('login', [AuthenticatedSessionController::class, 'store']);
-
-    Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
-        ->name('password.request');
-
-    Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])
-        ->name('password.email');
-
-    Route::get('reset-password/{token}', [NewPasswordController::class, 'create'])
-        ->name('password.reset');
-
-    Route::post('reset-password', [NewPasswordController::class, 'store'])
-        ->name('password.store');
-});
-
-Route::middleware('auth')->group(function () {
-    Route::get('verify-email', EmailVerificationPromptController::class)
-        ->name('verification.notice');
-
-    Route::get('verify-email/{id}/{hash}', VerifyEmailController::class)
-        ->middleware(['signed', 'throttle:6,1'])
-        ->name('verification.verify');
-
-    Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
-        ->middleware('throttle:6,1')
-        ->name('verification.send');
-
-    Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
-        ->name('password.confirm');
-
-    Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);
-
-    Route::put('password', [PasswordController::class, 'update'])->name('password.update');
-
-    Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
-        ->name('logout');
-});
Index: routes/web.php
===================================================================
--- routes/web.php	(revision 82ff9f9b279491ccd7f117cb24a1620bba0b4f2f)
+++ routes/web.php	(revision 20d04e297d6fd2f16ee0d707a770feb0fcf4aab9)
@@ -1,4 +1,5 @@
 <?php
 
+use App\Http\Controllers\AuthController;
 use App\Http\Controllers\HomeController;
 use App\Http\Controllers\DashboardController;
@@ -6,4 +7,11 @@
 use Inertia\Inertia;
 
-Route::get('/', [HomeController::class, 'index']);
-Route::get('/dashboard', [DashboardController::class, 'index']);
+Route::middleware('guest')->group(function () {
+    Route::get('/login', [AuthController::class, 'login'])->name('login');
+    Route::post('/login', [AuthController::class, 'storeLogin'])->name('storeLogin');
+
+});
+Route::middleware('auth')->group(function () {
+    Route::redirect('/', '/dashboard');
+    Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
+});
