initial commit
This commit is contained in:
		
							
								
								
									
										63
									
								
								resources/js/Pages/Auth/ConfirmPassword.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								resources/js/Pages/Auth/ConfirmPassword.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| <script setup> | ||||
| import { ref } from 'vue'; | ||||
| import { Head, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.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'; | ||||
|  | ||||
| const form = useForm({ | ||||
|     password: '', | ||||
| }); | ||||
|  | ||||
| const passwordInput = ref(null); | ||||
|  | ||||
| const submit = () => { | ||||
|     form.post(route('password.confirm'), { | ||||
|         onFinish: () => { | ||||
|             form.reset(); | ||||
|  | ||||
|             passwordInput.value.focus(); | ||||
|         }, | ||||
|     }); | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Secure Area" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <div class="mb-4 text-sm text-gray-600"> | ||||
|             This is a secure area of the application. Please confirm your password before continuing. | ||||
|         </div> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div> | ||||
|                 <InputLabel for="password" value="Password" /> | ||||
|                 <TextInput | ||||
|                     id="password" | ||||
|                     ref="passwordInput" | ||||
|                     v-model="form.password" | ||||
|                     type="password" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autocomplete="current-password" | ||||
|                     autofocus | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.password" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="flex justify-end mt-4"> | ||||
|                 <PrimaryButton class="ml-4" :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Confirm | ||||
|                 </PrimaryButton> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
							
								
								
									
										60
									
								
								resources/js/Pages/Auth/ForgotPassword.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								resources/js/Pages/Auth/ForgotPassword.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| <script setup> | ||||
| import { Head, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.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'; | ||||
|  | ||||
| defineProps({ | ||||
|     status: String, | ||||
| }); | ||||
|  | ||||
| const form = useForm({ | ||||
|     email: '', | ||||
| }); | ||||
|  | ||||
| const submit = () => { | ||||
|     form.post(route('password.email')); | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Forgot Password" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <div class="mb-4 text-sm text-gray-600"> | ||||
|             Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one. | ||||
|         </div> | ||||
|  | ||||
|         <div v-if="status" class="mb-4 font-medium text-sm text-green-600"> | ||||
|             {{ status }} | ||||
|         </div> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div> | ||||
|                 <InputLabel for="email" value="Email" /> | ||||
|                 <TextInput | ||||
|                     id="email" | ||||
|                     v-model="form.email" | ||||
|                     type="email" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autofocus | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.email" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="flex items-center justify-end mt-4"> | ||||
|                 <PrimaryButton :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Email Password Reset Link | ||||
|                 </PrimaryButton> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
							
								
								
									
										89
									
								
								resources/js/Pages/Auth/Login.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								resources/js/Pages/Auth/Login.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| <script setup> | ||||
| import { Head, Link, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.vue'; | ||||
| import Checkbox from '@/Components/Checkbox.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'; | ||||
|  | ||||
| defineProps({ | ||||
|     canResetPassword: Boolean, | ||||
|     status: String, | ||||
| }); | ||||
|  | ||||
| const form = useForm({ | ||||
|     email: '', | ||||
|     password: '', | ||||
|     remember: false, | ||||
| }); | ||||
|  | ||||
| const submit = () => { | ||||
|     form.transform(data => ({ | ||||
|         ...data, | ||||
|         remember: form.remember ? 'on' : '', | ||||
|     })).post(route('login'), { | ||||
|         onFinish: () => form.reset('password'), | ||||
|     }); | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Log in" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <div v-if="status" class="mb-4 font-medium text-sm text-green-600"> | ||||
|             {{ status }} | ||||
|         </div> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div> | ||||
|                 <InputLabel for="email" value="Email" /> | ||||
|                 <TextInput | ||||
|                     id="email" | ||||
|                     v-model="form.email" | ||||
|                     type="email" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autofocus | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.email" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="mt-4"> | ||||
|                 <InputLabel for="password" value="Password" /> | ||||
|                 <TextInput | ||||
|                     id="password" | ||||
|                     v-model="form.password" | ||||
|                     type="password" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autocomplete="current-password" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.password" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="block mt-4"> | ||||
|                 <label class="flex items-center"> | ||||
|                     <Checkbox v-model:checked="form.remember" name="remember" /> | ||||
|                     <span class="ml-2 text-sm text-gray-600">Remember me</span> | ||||
|                 </label> | ||||
|             </div> | ||||
|  | ||||
|             <div class="flex items-center justify-end mt-4"> | ||||
|                 <Link v-if="canResetPassword" :href="route('password.request')" class="underline text-sm text-gray-600 hover:text-gray-900"> | ||||
|                     Forgot your password? | ||||
|                 </Link> | ||||
|  | ||||
|                 <PrimaryButton class="ml-4" :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Log in | ||||
|                 </PrimaryButton> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
							
								
								
									
										111
									
								
								resources/js/Pages/Auth/Register.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								resources/js/Pages/Auth/Register.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
| <script setup> | ||||
| import { Head, Link, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.vue'; | ||||
| import Checkbox from '@/Components/Checkbox.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'; | ||||
|  | ||||
| const form = useForm({ | ||||
|     name: '', | ||||
|     email: '', | ||||
|     password: '', | ||||
|     password_confirmation: '', | ||||
|     terms: false, | ||||
| }); | ||||
|  | ||||
| const submit = () => { | ||||
|     form.post(route('register'), { | ||||
|         onFinish: () => form.reset('password', 'password_confirmation'), | ||||
|     }); | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Register" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div> | ||||
|                 <InputLabel for="name" value="Name" /> | ||||
|                 <TextInput | ||||
|                     id="name" | ||||
|                     v-model="form.name" | ||||
|                     type="text" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autofocus | ||||
|                     autocomplete="name" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.name" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="mt-4"> | ||||
|                 <InputLabel for="email" value="Email" /> | ||||
|                 <TextInput | ||||
|                     id="email" | ||||
|                     v-model="form.email" | ||||
|                     type="email" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.email" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="mt-4"> | ||||
|                 <InputLabel for="password" value="Password" /> | ||||
|                 <TextInput | ||||
|                     id="password" | ||||
|                     v-model="form.password" | ||||
|                     type="password" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autocomplete="new-password" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.password" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="mt-4"> | ||||
|                 <InputLabel for="password_confirmation" value="Confirm Password" /> | ||||
|                 <TextInput | ||||
|                     id="password_confirmation" | ||||
|                     v-model="form.password_confirmation" | ||||
|                     type="password" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autocomplete="new-password" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.password_confirmation" /> | ||||
|             </div> | ||||
|  | ||||
|             <div v-if="$page.props.jetstream.hasTermsAndPrivacyPolicyFeature" class="mt-4"> | ||||
|                 <InputLabel for="terms"> | ||||
|                     <div class="flex items-center"> | ||||
|                         <Checkbox id="terms" v-model:checked="form.terms" name="terms" required /> | ||||
|  | ||||
|                         <div class="ml-2"> | ||||
|                             I agree to the <a target="_blank" :href="route('terms.show')" class="underline text-sm text-gray-600 hover:text-gray-900">Terms of Service</a> and <a target="_blank" :href="route('policy.show')" class="underline text-sm text-gray-600 hover:text-gray-900">Privacy Policy</a> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <InputError class="mt-2" :message="form.errors.terms" /> | ||||
|                 </InputLabel> | ||||
|             </div> | ||||
|  | ||||
|             <div class="flex items-center justify-end mt-4"> | ||||
|                 <Link :href="route('login')" class="underline text-sm text-gray-600 hover:text-gray-900"> | ||||
|                     Already registered? | ||||
|                 </Link> | ||||
|  | ||||
|                 <PrimaryButton class="ml-4" :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Register | ||||
|                 </PrimaryButton> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
							
								
								
									
										84
									
								
								resources/js/Pages/Auth/ResetPassword.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								resources/js/Pages/Auth/ResetPassword.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| <script setup> | ||||
| import { Head, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.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'; | ||||
|  | ||||
| const props = defineProps({ | ||||
|     email: String, | ||||
|     token: String, | ||||
| }); | ||||
|  | ||||
| const form = useForm({ | ||||
|     token: props.token, | ||||
|     email: props.email, | ||||
|     password: '', | ||||
|     password_confirmation: '', | ||||
| }); | ||||
|  | ||||
| const submit = () => { | ||||
|     form.post(route('password.update'), { | ||||
|         onFinish: () => form.reset('password', 'password_confirmation'), | ||||
|     }); | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Reset Password" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div> | ||||
|                 <InputLabel for="email" value="Email" /> | ||||
|                 <TextInput | ||||
|                     id="email" | ||||
|                     v-model="form.email" | ||||
|                     type="email" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autofocus | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.email" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="mt-4"> | ||||
|                 <InputLabel for="password" value="Password" /> | ||||
|                 <TextInput | ||||
|                     id="password" | ||||
|                     v-model="form.password" | ||||
|                     type="password" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autocomplete="new-password" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.password" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="mt-4"> | ||||
|                 <InputLabel for="password_confirmation" value="Confirm Password" /> | ||||
|                 <TextInput | ||||
|                     id="password_confirmation" | ||||
|                     v-model="form.password_confirmation" | ||||
|                     type="password" | ||||
|                     class="mt-1 block w-full" | ||||
|                     required | ||||
|                     autocomplete="new-password" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.password_confirmation" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="flex items-center justify-end mt-4"> | ||||
|                 <PrimaryButton :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Reset Password | ||||
|                 </PrimaryButton> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
							
								
								
									
										104
									
								
								resources/js/Pages/Auth/TwoFactorChallenge.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								resources/js/Pages/Auth/TwoFactorChallenge.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | ||||
| <script setup> | ||||
| import { nextTick, ref } from 'vue'; | ||||
| import { Head, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.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'; | ||||
|  | ||||
| const recovery = ref(false); | ||||
|  | ||||
| const form = useForm({ | ||||
|     code: '', | ||||
|     recovery_code: '', | ||||
| }); | ||||
|  | ||||
| const recoveryCodeInput = ref(null); | ||||
| const codeInput = ref(null); | ||||
|  | ||||
| const toggleRecovery = async () => { | ||||
|     recovery.value ^= true; | ||||
|  | ||||
|     await nextTick(); | ||||
|  | ||||
|     if (recovery.value) { | ||||
|         recoveryCodeInput.value.focus(); | ||||
|         form.code = ''; | ||||
|     } else { | ||||
|         codeInput.value.focus(); | ||||
|         form.recovery_code = ''; | ||||
|     } | ||||
| }; | ||||
|  | ||||
| const submit = () => { | ||||
|     form.post(route('two-factor.login')); | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Two-factor Confirmation" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <div class="mb-4 text-sm text-gray-600"> | ||||
|             <template v-if="! recovery"> | ||||
|                 Please confirm access to your account by entering the authentication code provided by your authenticator application. | ||||
|             </template> | ||||
|  | ||||
|             <template v-else> | ||||
|                 Please confirm access to your account by entering one of your emergency recovery codes. | ||||
|             </template> | ||||
|         </div> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div v-if="! recovery"> | ||||
|                 <InputLabel for="code" value="Code" /> | ||||
|                 <TextInput | ||||
|                     id="code" | ||||
|                     ref="codeInput" | ||||
|                     v-model="form.code" | ||||
|                     type="text" | ||||
|                     inputmode="numeric" | ||||
|                     class="mt-1 block w-full" | ||||
|                     autofocus | ||||
|                     autocomplete="one-time-code" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.code" /> | ||||
|             </div> | ||||
|  | ||||
|             <div v-else> | ||||
|                 <InputLabel for="recovery_code" value="Recovery Code" /> | ||||
|                 <TextInput | ||||
|                     id="recovery_code" | ||||
|                     ref="recoveryCodeInput" | ||||
|                     v-model="form.recovery_code" | ||||
|                     type="text" | ||||
|                     class="mt-1 block w-full" | ||||
|                     autocomplete="one-time-code" | ||||
|                 /> | ||||
|                 <InputError class="mt-2" :message="form.errors.recovery_code" /> | ||||
|             </div> | ||||
|  | ||||
|             <div class="flex items-center justify-end mt-4"> | ||||
|                 <button type="button" class="text-sm text-gray-600 hover:text-gray-900 underline cursor-pointer" @click.prevent="toggleRecovery"> | ||||
|                     <template v-if="! recovery"> | ||||
|                         Use a recovery code | ||||
|                     </template> | ||||
|  | ||||
|                     <template v-else> | ||||
|                         Use an authentication code | ||||
|                     </template> | ||||
|                 </button> | ||||
|  | ||||
|                 <PrimaryButton class="ml-4" :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Log in | ||||
|                 </PrimaryButton> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
							
								
								
									
										62
									
								
								resources/js/Pages/Auth/VerifyEmail.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								resources/js/Pages/Auth/VerifyEmail.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| <script setup> | ||||
| import { computed } from 'vue'; | ||||
| import { Head, Link, useForm } from '@inertiajs/inertia-vue3'; | ||||
| import AuthenticationCard from '@/Components/AuthenticationCard.vue'; | ||||
| import AuthenticationCardLogo from '@/Components/AuthenticationCardLogo.vue'; | ||||
| import PrimaryButton from '@/Components/PrimaryButton.vue'; | ||||
|  | ||||
| const props = defineProps({ | ||||
|     status: String, | ||||
| }); | ||||
|  | ||||
| const form = useForm(); | ||||
|  | ||||
| const submit = () => { | ||||
|     form.post(route('verification.send')); | ||||
| }; | ||||
|  | ||||
| const verificationLinkSent = computed(() => props.status === 'verification-link-sent'); | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
|     <Head title="Email Verification" /> | ||||
|  | ||||
|     <AuthenticationCard> | ||||
|         <template #logo> | ||||
|             <AuthenticationCardLogo /> | ||||
|         </template> | ||||
|  | ||||
|         <div class="mb-4 text-sm text-gray-600"> | ||||
|             Before continuing, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another. | ||||
|         </div> | ||||
|  | ||||
|         <div v-if="verificationLinkSent" class="mb-4 font-medium text-sm text-green-600"> | ||||
|             A new verification link has been sent to the email address you provided in your profile settings. | ||||
|         </div> | ||||
|  | ||||
|         <form @submit.prevent="submit"> | ||||
|             <div class="mt-4 flex items-center justify-between"> | ||||
|                 <PrimaryButton :class="{ 'opacity-25': form.processing }" :disabled="form.processing"> | ||||
|                     Resend Verification Email | ||||
|                 </PrimaryButton> | ||||
|  | ||||
|                 <div> | ||||
|                     <Link | ||||
|                         :href="route('profile.show')" | ||||
|                         class="underline text-sm text-gray-600 hover:text-gray-900" | ||||
|                     > | ||||
|                         Edit Profile</Link> | ||||
|  | ||||
|                     <Link | ||||
|                         :href="route('logout')" | ||||
|                         method="post" | ||||
|                         as="button" | ||||
|                         class="underline text-sm text-gray-600 hover:text-gray-900 ml-2" | ||||
|                     > | ||||
|                         Log Out | ||||
|                     </Link> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </form> | ||||
|     </AuthenticationCard> | ||||
| </template> | ||||
		Reference in New Issue
	
	Block a user