Skip to content

Commit c8aebee

Browse files
committed
Merge branch 'master' of github.com:connorabbas/laravel-inertia-primevue into admin-role-dev
2 parents f5547e3 + 03867d9 commit c8aebee

21 files changed

+379
-183
lines changed

app/Http/Controllers/Settings/ProfileController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use Illuminate\Http\RedirectResponse;
99
use Illuminate\Http\Request;
1010
use Illuminate\Support\Facades\Auth;
11-
use Illuminate\Support\Facades\Redirect;
1211
use Inertia\Inertia;
1312
use Inertia\Response;
1413

@@ -40,7 +39,7 @@ public function update(ProfileUpdateRequest $request): RedirectResponse
4039

4140
$user?->save();
4241

43-
return Redirect::route('profile.edit');
42+
return redirect()->route('profile.edit');
4443
}
4544

4645
/**

app/Http/Middleware/HandleInertiaRequests.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ public function share(Request $request): array
4747
'user' => $request->user(),
4848
'isAdmin' => $request->user()?->hasRole('Admin'),
4949
],
50+
'flash' => [
51+
'success' => fn () => $request->session()->get('flash_success'),
52+
'info' => fn () => $request->session()->get('flash_info'),
53+
'warn' => fn () => $request->session()->get('flash_warn'),
54+
'error' => fn () => $request->session()->get('flash_error'),
55+
'message' => fn () => $request->session()->get('flash_message'),
56+
],
5057
];
5158
}
5259
}

app/Models/User.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44

55
//use Illuminate\Contracts\Auth\MustVerifyEmail;
66
use App\Models\Traits\Filterable;
7-
use Database\Factories\UserFactory;
87
use Illuminate\Database\Eloquent\Factories\HasFactory;
98
use Illuminate\Foundation\Auth\User as Authenticatable;
109
use Illuminate\Notifications\Notifiable;
1110
use Spatie\Permission\Traits\HasRoles;
1211

1312
class User extends Authenticatable //implements MustVerifyEmail
1413
{
15-
/** @use HasFactory<UserFactory> */
14+
/** @use HasFactory<\Database\Factories\UserFactory> */
1615
use HasFactory;
1716
use Notifiable;
1817
use HasRoles;

bootstrap/app.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
->setStatusCode($response->getStatusCode());
4848
} elseif ($response->getStatusCode() === 419) {
4949
return back()->with([
50-
'message' => 'The page expired, please try again.',
50+
'flash_message' => 'The page expired, please try again.',
5151
]);
5252
}
5353

resources/js/components/DeleteUserModal.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const deleteUser = () => {
7979
/>
8080
<Button
8181
:loading="form.processing"
82-
label="Delete Account"
82+
label="Delete account"
8383
severity="danger"
8484
@click="deleteUser"
8585
/>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<script setup>
2+
import { Check, Info, TriangleAlert, CircleAlert, Megaphone } from 'lucide-vue-next';
3+
</script>
4+
5+
<template>
6+
<div class="m-0">
7+
<Message
8+
v-if="$page.props.flash.success"
9+
class="mb-6"
10+
severity="success"
11+
closable
12+
>
13+
<template #icon>
14+
<Check />
15+
</template>
16+
{{ $page.props.flash.success }}
17+
</Message>
18+
<Message
19+
v-if="$page.props.flash.info"
20+
class="mb-6"
21+
severity="info"
22+
closable
23+
>
24+
<template #icon>
25+
<Info />
26+
</template>
27+
{{ $page.props.flash.info }}
28+
</Message>
29+
<Message
30+
v-if="$page.props.flash.warn"
31+
class="mb-6"
32+
severity="warn"
33+
closable
34+
>
35+
<template #icon>
36+
<TriangleAlert />
37+
</template>
38+
{{ $page.props.flash.warn }}
39+
</Message>
40+
<Message
41+
v-if="$page.props.flash.error"
42+
class="mb-6"
43+
severity="error"
44+
closable
45+
>
46+
<template #icon>
47+
<CircleAlert />
48+
</template>
49+
{{ $page.props.flash.error }}
50+
</Message>
51+
<Message
52+
v-if="$page.props.flash.message"
53+
class="mb-6"
54+
severity="secondary"
55+
closable
56+
>
57+
<template #icon>
58+
<Megaphone />
59+
</template>
60+
{{ $page.props.flash.message }}
61+
</Message>
62+
</div>
63+
</template>

resources/js/composables/useAppLayout.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export function useAppLayout() {
9292
separator: true
9393
},
9494
{
95-
label: 'Log Out',
95+
label: 'Log out',
9696
lucideIcon: LogOut,
9797
command: () => logout(),
9898
},

resources/js/layouts/GuestAuthLayout.vue

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,50 @@ import ApplicationLogo from '@/components/ApplicationLogo.vue';
44

55
<template>
66
<Container>
7-
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0">
7+
<div class="min-h-screen flex flex-col justify-center items-center pt-6 sm:pt-0">
88
<div>
99
<InertiaLink href="/">
10-
<ApplicationLogo class="w-15 h-15 fill-current text-surface-900 dark:text-surface-0" />
10+
<ApplicationLogo class="w-12 h-12 fill-current text-surface-900 dark:text-surface-0" />
1111
</InertiaLink>
1212
</div>
1313
<div
1414
v-if="$slots.message"
15-
class="w-full sm:max-w-md mt-6 px-4 sm:px-0"
15+
class="w-full sm:max-w-lg mt-6 px-4 sm:px-0"
1616
>
1717
<slot name="message" />
1818
</div>
19-
<div class="w-full sm:max-w-md mt-6">
20-
<Card>
19+
<div class="w-full sm:max-w-lg mt-6">
20+
<Card
21+
pt:caption:class="space-y-2"
22+
pt:body:class="p-6 sm:p-8 space-y-6"
23+
>
24+
<template
25+
v-if="$slots.header"
26+
#header
27+
>
28+
<slot name="header" />
29+
</template>
30+
<template
31+
v-if="$slots.title"
32+
#title
33+
>
34+
<slot name="title" />
35+
</template>
36+
<template
37+
v-if="$slots.subtitle"
38+
#subtitle
39+
>
40+
<slot name="subtitle" />
41+
</template>
2142
<template #content>
2243
<slot />
2344
</template>
45+
<template
46+
v-if="$slots.footer"
47+
#footer
48+
>
49+
<slot name="footer" />
50+
</template>
2451
</Card>
2552
</div>
2653
</div>

resources/js/layouts/app/HeaderLayout.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useAppLayout } from '@/composables/useAppLayout';
55
import { ChevronsUpDown, ChevronDown, Menu as MenuIcon } from 'lucide-vue-next';
66
import ApplicationLogo from '@/components/ApplicationLogo.vue';
77
import ClientOnly from '@/components/ClientOnly.vue';
8+
import FlashMessages from '@/components/FlashMessages.vue';
89
import Menu from '@/components/primevue/menu/Menu.vue';
910
import Menubar from '@/components/primevue/menu/Menubar.vue';
1011
import PanelMenu from '@/components/primevue/menu/PanelMenu.vue';
@@ -153,6 +154,9 @@ const toggleMobileUserMenu = (event) => {
153154

154155
<main>
155156
<Container vertical>
157+
<!-- Session-based Flash Messages -->
158+
<FlashMessages />
159+
156160
<!-- Breadcrumbs -->
157161
<Breadcrumb
158162
v-if="props.breadcrumbs.length"

resources/js/layouts/app/SidebarLayout.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ChevronsUpDown, Menu as MenuIcon } from 'lucide-vue-next';
55
import { useAppLayout } from '@/composables/useAppLayout';
66
import ApplicationLogo from '@/components/ApplicationLogo.vue';
77
import ClientOnly from '@/components/ClientOnly.vue';
8+
import FlashMessages from '@/components/FlashMessages.vue';
89
import Menu from '@/components/primevue/menu/Menu.vue';
910
import PanelMenu from '@/components/primevue/menu/PanelMenu.vue';
1011
import Breadcrumb from '@/components/primevue/menu/Breadcrumb.vue';
@@ -163,6 +164,9 @@ const toggleMobileUserMenu = (event) => {
163164
vertical
164165
fluid
165166
>
167+
<!-- Session-based Flash Messages -->
168+
<FlashMessages />
169+
166170
<!-- Breadcrumbs -->
167171
<Breadcrumb
168172
v-if="props.breadcrumbs.length"

0 commit comments

Comments
 (0)