SYNC 7 Register + activate + reset + mail customisation

This commit is contained in:
Jérémy Munsch 2023-11-29 10:57:39 +01:00
parent f17deffdd0
commit 2297bf7eff
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC
29 changed files with 964 additions and 783 deletions

View file

@ -8,6 +8,14 @@ body {
}
}
@include media-breakpoint-up(xxxl, map.merge($grid-breakpoints, ("xxxl": 1600px))) {
.game-logo-banner {
position: absolute;
top: 0;
}
}
.rest-in-game-banner {
transform: skew(12deg) translateX(5%);
@ -32,13 +40,6 @@ body {
transform: translateY(-50%);
}
}
@include media-breakpoint-up(xxxl, map.merge($grid-breakpoints, ("xxxl": 1600px))) {
.navbar-brand {
position: absolute;
top: 0;
}
}
}
> footer {
@ -80,7 +81,7 @@ body {
> a {
position: absolute;
top: -6rem;
top: -3rem;
left: 50%;
width: 11rem;
max-height: 8rem;

View file

@ -5,7 +5,7 @@
@import "utilities/bootstrap-variables";
// 2. Include functions first (so you can manipulate colors, SVGs, calc, etc)
@import "bootstrap/scss/functions";
// @import "bootstrap/scss/functions";
// 3. Include remainder of required Bootstrap stylesheets
@import "bootstrap/scss/variables";
@ -67,6 +67,7 @@ a img {
h1 {
margin-top: 0;
color: $color-primary;
color: $color-tertiary;
font-size: 18px;
font-weight: bold;
text-align: left;
@ -74,6 +75,7 @@ h1 {
h2 {
margin-top: 0;
color: $color-tertiary;
font-size: 16px;
font-weight: bold;
text-align: left;
@ -81,6 +83,7 @@ h2 {
h3 {
margin-top: 0;
color: $color-tertiary;
font-size: 14px;
font-weight: bold;
text-align: left;

View file

@ -1,5 +1,7 @@
@use "sass:list";
@import "mixins";
@import "bootstrap/scss/functions";
@import "./bs-customs/input";
// SET SOME CLASSES WITH BOOTSTRAP BREAKPOINTS
// * Reponsive borders

View file

@ -11,7 +11,7 @@ $color-warning: #e6cd00;
$color-primary: #0f437e;
$color-secondary: #135ba7;
$color-tertiary: #db275a;
$color-quad: #0179a9;
$color-quad: #00719e;
$color-quint: #fba629;
// * BACKGROUNDS COLORS
@ -29,6 +29,12 @@ $font-default-size-base: 1rem; // Assumes the browser default, typically `16px`
$line-default-height-base: 1.65;
// * Inputs
$input-bg: color.adjust($color-tertiary, $lightness: 45%);
$input-color: color.adjust($color-tertiary, $lightness: -10%);
// * Cookie Notice
$ck-primary-color: $color-primary;
$ck-secondary-color: color.adjust($color-tertiary, $lightness: -10%);

View file

@ -0,0 +1,32 @@
@use "sass:color";
// * Input Form floating text
.form-floating {
> label {
color: #{color.adjust($color-tertiary, $lightness: -4%)};
font-weight: bold;
}
> .form-control,
> .form-control-plaintext {
&::placeholder {
color: transparent;
}
}
> .form-control-plaintext,
> .form-control:focus,
> .form-control:not(:placeholder-shown),
> .form-select {
/* stylelint-disable-next-line no-descending-specificity */
~ label {
color: #{rgba(color.adjust($color-tertiary, $lightness: -4%), $form-floating-label-opacity)};
}
}
// Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
// > .form-control:-webkit-autofill {
// ~ label {
// color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
// }
// }
}

View file

@ -0,0 +1,102 @@
<template>
<input
ref="inputDate"
:id="String(ipt_id)"
:class="String(ipt_class)"
:type="ipt_type"
:name="String(ipt_name)"
:placeholder="`${String(ipt_placeholder)} ${ipt_required ? '*' : ''}`"
v-model="ipt_value"
:autocomplete="String(ipt_autocomplete)"
:required="Boolean(ipt_required)"
@focus="startEditing"
@change="changed"
>
<label :for="String(ipt_id)">{{ `${String(ipt_placeholder)} ${ipt_required ? '*' : ''}` }}</label>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import trans from "../../../../ts/modules/trans";
export default defineComponent({
name: "InputBirthDate",
mixins: [trans],
data(): {
ipt_id: string | null;
ipt_class: string;
ipt_name: string;
ipt_placeholder: string;
ipt_autocomplete: string;
ipt_required: boolean;
ipt_value: string | undefined;
ipt_type: string;
cached_value: string | null;
} {
return {
ipt_id: null,
ipt_class: "form-control",
ipt_name: "birthdate",
ipt_placeholder: this.__("Date de naissance"),
ipt_autocomplete: "bday",
ipt_required: true,
ipt_value: undefined,
ipt_type: "text",
cached_value: null,
};
},
computed: {},
mounted() {
const json = String(this.$attrs.json ?? "{}"),
data = JSON.parse(json);
this.ipt_id = data.id ?? this.ipt_id;
this.ipt_class = data.class ?? this.ipt_class;
this.ipt_name = data.name ?? this.ipt_name;
this.ipt_placeholder = data.placeholder ?? this.ipt_placeholder;
this.ipt_autocomplete = data.autocomplete ?? this.ipt_autocomplete;
this.ipt_required = data.required ?? this.ipt_required;
this.ipt_value = data.value;
// * Transform to date type before submit
this.$nextTick(() => {
const inputDate = this.$refs.inputDate as HTMLInputElement;
// * Input already filled.
if (inputDate.value) {
this.startEditing();
} else if (this.ipt_value) {
this.ipt_value = new Date(this.ipt_value).toLocaleDateString();
}
inputDate.closest("form")?.addEventListener("submit", () => {
this.startEditing();
});
});
},
methods: {
beforeSubmit() {},
startEditing(): void {
const inputDate = this.$refs.inputDate as HTMLInputElement;
if (inputDate.value.length) {
this.cached_value = inputDate.value;
}
this.switchIptTypeToDate();
},
/**
* Change the input type to date
*/
switchIptTypeToDate(): void {
this.ipt_type = "date";
if (this.cached_value) {
const date = new Date(Date.parse(this.cached_value));
this.ipt_value = new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
.toISOString()
.split("T")[0] ?? date.toISOString().substring(0,10);
}
},
changed() {
const inputDate = this.$refs.inputDate as HTMLInputElement;
this.cached_value = inputDate.value;
this.switchIptTypeToDate();
}
},
});
</script>

View file

@ -0,0 +1,136 @@
<template>
<button
@click.prevent="toggleVisibility()"
@keydown="keydown"
:class="`btn btn-tertiary rounded-0 rounded-end password-visibility-${inputId} h-100`"
:aria-pressed="visible"
>
<span
class="text-bg-tertiary reveal d-flex justify-content-center align-items-center h-100"
type="button"
:title="visible ? __('vue.PasswordVisibility.hide') : __('vue.PasswordVisibility.show')"
data-bs="tooltip"
>
<FontAwesomeIcon
v-if="visible"
icon="fas fa-eye-slash"
:aria-hidden="true"
/>
<FontAwesomeIcon
v-else
icon="fas fa-eye"
:aria-hidden="true"
/>
</span>
</button>
</template>
<script lang="ts">
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { Tooltip } from "bootstrap";
import { defineComponent } from "vue";
import trans from "./../../../../ts/modules/trans";
export default defineComponent({
name: "PasswordVisibility",
mixins: [trans],
components: { FontAwesomeIcon },
data(): {
inputId: string;
input: HTMLInputElement;
visible: boolean;
tooltipList: HTMLButtonElement[];
} {
return {
inputId: "",
input: document.createElement("input"),
visible: false,
tooltipList: [],
};
},
computed: {},
mounted() {
const json = String(this.$attrs.json ?? "{}"),
data = JSON.parse(json);
this.inputId = data.inputId;
this.input = document.getElementById(this.inputId) as HTMLInputElement;
if (!this.input) {
throw new Error(`Cannot find input id '${this.inputId}'`);
}
if (this.input.tagName !== "INPUT") {
throw new Error(`id '${this.inputId}' is not an input`);
}
if ((this.input as HTMLInputElement).type !== "password") {
throw new Error(`id '${this.inputId}' is not an input password`);
}
this.input = this.input as HTMLInputElement;
this.$nextTick(() => {
this.updateBootstrapTooltip();
});
},
methods: {
keydown(e:KeyboardEvent):void {
if (
e.key === " " ||
e.code === "Space" ||
e.keyCode === 32 ||
e.key === "Enter" ||
e.code === "Enter" ||
e.keyCode === 13
) {
this.toggleVisibility();
e.preventDefault();
}
},
/**
* Update password status (visible, hidden).
*/
toggleVisibility(): void {
if (this.input.type === "password") {
this.input.type = "text";
this.visible = true;
} else {
this.input.type = "password";
this.visible = false;
}
this.$nextTick(() => {
this.updateBootstrapTooltip();
});
},
/**
* Update Bootstrap tooltips.
*/
updateBootstrapTooltip() {
let newTooltipList = [].slice.call(
document.querySelectorAll(
".password-visibility-" + this.inputId + " [data-bs=\"tooltip\"]"
)
) as HTMLButtonElement[];
let tmp = newTooltipList.filter((x) => !this.tooltipList.includes(x));
tmp.map((tooltip) => {
return new Tooltip(tooltip);
});
this.closeBootstrapTooltip();
this.tooltipList = newTooltipList;
},
/**
* Close all Bootstrap tooltips.
*/
closeBootstrapTooltip() {
this.tooltipList.forEach((tooltip) => {
tooltip.blur();
Tooltip.getInstance(tooltip)?.hide();
});
},
},
});
</script>
<style lang="scss">
.reveal {
width: 52px;
}
</style>

View file

@ -1,5 +0,0 @@
declare module "*.vue" {
import type { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}

100
views/auth/login.blade.php Normal file
View file

@ -0,0 +1,100 @@
@extends('theme::layout')
@section('title', __('Connexion'))
@section('description', __('Connexion'))
@section('no-flash', true)
@section('content')
<div class="container pb-5 pt-5">
@error('email')
<div class="row">
<div class="col">
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>{{ implode(',', $errors->get('email')) }}</strong>
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="Close"></button>
</div>
</div>
</div>
@enderror
<div class="row mb-3">
<div class="col-12 col-md-6 text-md-end g-0">
<span class="h1 fw-bold text-uppercase text-tertiary d-block mb-5">{{ __('Je m\'inscris') }}</span>
<p class="mb-5">{{ __('Pour participer et tenter votre chance, inscrivez-vous !') }}</p>
<a class="btn btn-lg btn-tertiary" href="{{ route('fo.register') }}">{{ __('Inscription') }}</a>
</div>
<div class="vr bg-tertiary d-none d-md-inline-block mx-4 px-1"></div>
<div class="col g-0">
<hr class="border-tertiary d-md-none border-3 border opacity-25">
<span class="h1 fw-bold text-uppercase text-tertiary d-block mb-5">{{ __('Je me connecte') }}</span>
<p class="mb-5">{{ __('Si vous possédez déjà un compte Club Le Gaulois, vous pouvez utiliser les mêmes identifiants.') }}</p>
<form class="needs-validation" method="POST" action="{{ route('fo.login') }}">
@csrf
<div class="row justify-content-center mb-3">
<div class="col-xl-8">
<div class="input-group has-validation">
<div class="form-floating @error('email') is-invalid @enderror">
<input class="form-control @error('email') is-invalid @enderror" id="email" name="email"
type="email" value="{{ old('email') }}" placeholder="name@example.com" required autocomplete="email"
autofocus>
<label for="email">{{ __('Email Address') }}</label>
</div>
@error('email')
<div class="invalid-feedback" role="alert">
<strong>{{ implode(',', $errors->get('email')) }}</strong>
</div>
@enderror
</div>
</div>
</div>
<div class="row justify-content-center mb-3">
<div class="col-xl-8">
<div class="input-group has-validation">
<div class="form-floating @error('password') is-invalid @enderror">
<input class="form-control @error('password') is-invalid @enderror" id="password" name="password"
type="password" placeholder="" required autocomplete="current-password">
<label for="password">{{ __('Password') }}</label>
</div>
@error('password')
<div class="invalid-feedback" role="alert">
<strong>{{ implode(',', $errors->get('password')) }}</strong>
</div>
@enderror
</div>
</div>
</div>
<div class="row justify-content-center mb-3">
<div class="col-xl-8">
<div class="form-check text-md-end">
<input class="form-check-input float-md-none" id="remember" name="remember" type="checkbox"
{{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Remember Me') }}
</label>
</div>
</div>
</div>
<div class="row justify-content-center mb-0">
<div class="col-xl-8">
<button class="btn btn-tertiary fw-bold text-uppercase" type="submit">
{{ __('Login') }}
</button>
@if (Route::has('fo.password.request'))
<a class="btn btn-link link-tertiary fw-bold" href="{{ route('fo.password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
</form>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,13 @@
<div class="row justify-content-center mb-3">
<div class="col col-md-8 text-dark lh-sm px-0 py-2 text-start">
<small>
{!! nl2br(
clean(
__(
"Le mot de passe doit avoir une longueur de 8 caractères minimum,\n doit contenir une lettre majuscule et une lettre minucule,\n doit contenir un caractère spécial comme une virgule par exemple,\n doit contenir un chiffre.",
),
),
) !!}
</small>
</div>
</div>

View file

@ -0,0 +1,53 @@
@extends('theme::layout')
@section('title', __('Confirmer son adresse e-mail'))
@section('description', __('Confirmer son adresse e-mail'))
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Confirm Password') }}</div>
<div class="card-body">
{{ __('Please confirm your password before continuing.') }}
<form method="POST" action="{{ route('fo.password.confirm') }}">
@csrf
<div class="row mb-3">
<label class="col-md-4 col-form-label text-md-end" for="password">{{ __('Password') }}</label>
<div class="col-md-6">
<input class="form-control @error('password') is-invalid @enderror" id="password" name="password"
type="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-0">
<div class="col-md-8 offset-md-4">
<button class="btn btn-primary" type="submit">
{{ __('Confirm Password') }}
</button>
@if (Route::has('fo.password.request'))
<a class="btn btn-link" href="{{ route('fo.password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,44 @@
@extends('theme::layout')
@section('title', __('Réinitialiser son mot de passe'))
@section('description', __('Réinitialiser son mot de passe'))
@section('content')
<div class="container pb-5 pt-5">
<div class="row justify-content-center mb-3">
<div class="col-md-8">
<h1 class="fw-bold text-tertiary text-uppercase text-center">{{ __('Reset Password') }}</h1>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-8">
<form method="POST" action="{{ route('fo.password.email') }}">
@csrf
<div class="row mb-3">
<label class="col-md-4 col-form-label text-md-end" for="email">{{ __('Email Address') }}</label>
<div class="col-md-6">
<input class="form-control @error('email') is-invalid @enderror" id="email" name="email" type="email"
value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="row mb-0">
<div class="col-md-6 offset-md-4">
<button class="btn btn-primary" type="submit">
{{ __('Send Password Reset Link') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,85 @@
@extends('theme::layout')
@section('title', __('Réinitialiser son mot de passe'))
@section('description', __('Réinitialiser son mot de passe'))
@section('content')
<div class="container pb-5 pt-5">
<div class="row justify-content-center mb-3">
<div class="col-md-8">
<h1 class="fw-bold text-tertiary text-uppercase text-center">{{ __('Reset Password') }}</h1>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-8">
<form method="POST" action="{{ route('fo.password.update') }}">
@csrf
<input name="token" type="hidden" value="{{ $token }}">
<div class="container">
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('email')) is-invalid @endif mx-auto" id="register-email"
name="email" type="email" value="{{ $email ?? old('email') }}"
placeholder="{{ __('Votre adresse email') }}*" autocomplete="off"
@if (!empty($displayEdit)) disabled @else required @endif />
<label for="register-email">{{ __('Votre adresse email') }}*</label>
@foreach ($errors->get('email') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 input-group d-flex justify-content-center py-2">
<div class="input-group has-validation">
<div class="form-floating @if ($errors->has('password')) is-invalid @endif">
<input class="form-control rounded-0 rounded-start @if ($errors->has('password')) is-invalid @endif"
id="register-password" name="password" type="password" placeholder="{{ __('Mot de passe') }}*"
autocomplete="new-password" required />
<label for="register-password">{{ __('Mot de passe') }}*</label>
</div>
@php $dataPassword = ['inputId' => 'register-password']; @endphp
<span class="password-visibility p-0" data-json='@json($dataPassword)'></span>
@foreach ($errors->get('password') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 input-group d-flex justify-content-center py-2">
<div class="input-group has-validation">
<div class="form-floating @if ($errors->has('password_confirmation')) is-invalid @endif">
<input class="form-control rounded-0 rounded-start @if ($errors->has('password_confirmation')) is-invalid @endif"
id="register-password-confirmation" name="password_confirmation" type="password"
placeholder="{{ __('Confirmer votre mot de passe') }}*" autocomplete="new-password" required />
<label for="register-password-confirmation">{{ __('Confirmer votre mot de passe') }}*</label>
</div>
@php $dataConfirmPassword = ['inputId' => 'register-password-confirmation']; @endphp
<span class="password-visibility p-0" data-json='@json($dataConfirmPassword)'></span>
@foreach ($errors->get('password_confirmation') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
@include('theme::auth.password-min-strength')
<div class="row mb-0">
<div class="col-md-6 offset-md-4">
<button class="btn btn-primary" type="submit">
{{ __('Reset Password') }}
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,259 @@
@extends('theme::layout')
@section('title', __('Créer un compte'))
@section('description', __('Créer un compte'))
@section('content')
<div class="container pb-5 pt-5">
<div class="row justify-content-center">
<div class="col-md-8">
<h1 class="fw-bold text-tertiary text-uppercase text-center">{{ __('S\'inscrire au club Le Gaulois') }}</h1>
<form class="container-fluid" method="POST" action="{{ route('fo.register') }}">
@csrf
<div class="row mb-3">
<div class="col-md-8">
<span class="h2 d-block text-center">{{ __("Merci de renseigner les champs ci-dessous\u{00A0}:") }}</span>
</div>
</div>
<fieldset class="mb-3">
<legend class="text-center">{{ __('Votre profil') }}</legend>
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('lastname')) is-invalid @endif mx-auto"
id="register-lastname" name="lastname" type="text"
value="{{ old('lastname', $crmCustomer->lastname ?? null) }}" placeholder="{{ __('Nom') }}*"
autocomplete="given-name" required />
<label for="register-lastname">{{ __('Nom') }}*</label>
@foreach ($errors->get('lastname') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('firstname')) is-invalid @endif mx-auto"
id="register-firstname" name="firstname" type="text"
value="{{ old('firstname', $crmCustomer->firstname ?? null) }}" placeholder="{{ __('Prénom') }}*"
autocomplete="family-name" required />
<label for="register-firstname">{{ __('Prénom') }}*</label>
@foreach ($errors->get('firstname') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
@php
$dataBirthDate = [
'id' => 'register-birth_date',
'class' => 'form-control mx-auto ' . ($errors->has('birth_date') ? 'is-invalid' : ''),
'name' => 'birth_date',
'placeholder' => __('Date de naissance'),
'autocomplete' => 'bday',
'required' => true,
'value' => old('birth_date', $crmCustomer->birth_date ?? null),
];
@endphp
<div class="input-birth-date form-floating" data-json='@json($dataBirthDate)'></div>
@foreach ($errors->get('birth_date') as $message)
<div class="invalid-feedback d-block">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
</div>
</fieldset>
<fieldset class="mb-3">
<legend class="text-center">{{ __('Vos coordonnées') }}</legend>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('address')) is-invalid @endif mx-auto"
id="register-address" name="address" type="text"
value="{{ old('address', $crmCustomer->address ?? null) }}" placeholder="{{ __('Adresse') }}*"
autocomplete="street-address" required />
<label for="register-address">{{ __('Adresse') }}*</label>
@foreach ($errors->get('address') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('address2')) is-invalid @endif mx-auto"
id="register-address2" name="address2" type="text"
value="{{ old('address2', $crmCustomer->address2 ?? null) }}"
placeholder="{{ __('Adresse complément') }}" />
<label for="register-address2">{{ __('Adresse complément') }}</label>
@foreach ($errors->get('address2') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('city')) is-invalid @endif mx-auto" id="register-city"
name="city" type="text" value="{{ old('city', $crmCustomer->city ?? null) }}"
placeholder="{{ __('Ville') }}*" autocomplete="address-level2" required />
<label for="register-city">{{ __('Ville') }}*</label>
@foreach ($errors->get('city') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('postcode')) is-invalid @endif mx-auto"
id="register-postcode" name="postcode" type="text"
value="{{ old('postcode', $crmCustomer->postcode ?? null) }}" placeholder="{{ __('Code postal') }}*"
autocomplete="postal-code" required />
<label for="register-postcode">{{ __('Code postal') }}*</label>
@foreach ($errors->get('postcode') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
</fieldset>
<fieldset class="mb-3">
<legend class="text-center">{{ __('Vos identifiants') }}</legend>
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 py-2">
<div class="form-floating">
<input class="form-control @if ($errors->has('email')) is-invalid @endif mx-auto"
id="register-email" name="email" type="email"
value="{{ old('email', $crmCustomer->email ?? null) }}"
placeholder="{{ __('Votre adresse email') }}*" autocomplete="email"
@if (!empty($displayEdit)) disabled @else required @endif />
<label for="register-email">{{ __('Votre adresse email') }}*</label>
@foreach ($errors->get('email') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
@if (empty($displayEdit))
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 input-group d-flex justify-content-center py-2">
<div class="input-group has-validation">
<div class="form-floating @if ($errors->has('password')) is-invalid @endif">
<input
class="form-control rounded-0 rounded-start @if ($errors->has('password')) is-invalid @endif"
id="register-password" name="password" type="password"
placeholder="{{ __('Mot de passe') }}*" autocomplete="new-password" required />
<label for="register-password">{{ __('Mot de passe') }}*</label>
</div>
@php $dataPassword = ['inputId' => 'register-password']; @endphp
<span class="password-visibility p-0" data-json='@json($dataPassword)'></span>
@foreach ($errors->get('password') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col col-md-10 col-lg-8 input-group d-flex justify-content-center py-2">
<div class="input-group has-validation">
<div class="form-floating @if ($errors->has('password_confirmation')) is-invalid @endif">
<input
class="form-control rounded-0 rounded-start @if ($errors->has('password_confirmation')) is-invalid @endif"
id="register-password-confirmation" name="password_confirmation" type="password"
placeholder="{{ __('Confirmer votre mot de passe') }}*" autocomplete="new-password"
required />
<label for="register-password-confirmation">{{ __('Confirmer votre mot de passe') }}*</label>
</div>
@php $dataConfirmPassword = ['inputId' => 'register-password-confirmation']; @endphp
<span class="password-visibility p-0" data-json='@json($dataConfirmPassword)'></span>
@foreach ($errors->get('password_confirmation') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</div>
@include('theme::auth.password-min-strength')
@endif
</div>
</fieldset>
<div class="row justify-content-center">
<div class="col col-md-8 px-0 py-2">
<div class="form-check text-start">
<input class="form-check-input @if ($errors->has('opt_in')) is-invalid @endif me-1" id="register-optin"
name="opt_in" type="checkbox">
<label class="form-check-label fw-bold w-fit" for="register-optin" role="button">
{{ __('Je souhaite m\'inscrire à la newsletter') }} {{ Config::get('theme.site_name') }}
</label>
</div>
@foreach ($errors->get('opt_in') as $message)
<div class="invalid-feedback d-block">{{ $message }}</div>
@endforeach
</div>
</div>
<div class="row justify-content-center mb-5">
<div class="col col-md-8 px-0 py-2">
<div class="form-check">
<input class="form-check-input @if ($errors->has('ok_cgv')) is-invalid @endif me-1"
id="register-ok-cgv" name="ok_cgv" type="checkbox" required />
<label class="form-check-label fw-bold w-fit" for="register-ok-cgv" role="button">
{!! clean(
__('J\'ai lu et accepte le :a règlement du jeu :enda', [
'a' => '<a href="' . route('fo.reglement') . '" target="_blank">',
'enda' => '</a>',
]),
) !!}
</label>
</div>
@foreach ($errors->get('ok_cgv') as $message)
<div class="invalid-feedback d-block">{{ $message }}</div>
@endforeach
</div>
</div>
<div class="row mb-2">
<div class="col-md-6 offset-md-4">
<button class="btn btn-lg btn-tertiary" type="submit">
{{ __('Register') }}
</button>
</div>
</div>
<div class="row mb-0">
<div class="col-md-6 offset-md-4">
<span class="fw-bold">{{ __('* champs obligatoires') }}</span>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,30 @@
@extends('theme::layout')
@section('title', __('Vérifier son adresse e-mail'))
@section('description', __('Vérifier son adresse e-mail'))
@section('content')
<div class="container pb-5 pt-5">
<div class="row justify-content-center mb-3">
<div class="col-md-8">
<h1 class="fw-bold text-tertiary text-uppercase text-center">{{ __('Verify Your Email Address') }}</h1>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-8">
@if (session('resent'))
<div class="alert alert-success" role="alert">
{{ __('A fresh verification link has been sent to your email address.') }}
</div>
@endif
{{ __('Before proceeding, please check your email for a verification link.') }}
{{ __('If you did not receive the email') }},
<form class="d-inline" method="POST" action="{{ route('fo.verification.resend') }}">
@csrf
<button class="btn btn-link m-0 p-0 align-baseline" type="submit">{{ __('click here to request another') }}</button>.
</form>
</div>
</div>
</div>
@endsection

View file

@ -1,44 +0,0 @@
@extends('theme::layout')
@section('title', 'Activation de votre compte')
@section('content')
<div class="activate floating grid">
<div class="head-bloc"></div>
<section class="main--bloc container">
<div class="result flex">
<h1 class="post-title">Activation du compte</h1>
@if ($result === true)
<p>Compte activé avec succès, vous pouvez désormais vous connecter</p>
<div class="main-btn">
<a href="{{ route('fo.fo.login') }}">Se connecter</a>
</div>
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@else
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div>
<h1>Oups !</h1>
<p>Votre compte n'a pu être activé. Le lien d'activation que vous avez reçu par mail doit être périmé.</p><br>
<p>Cliquez sur le bouton ci-dessous pour vous inscrire.</p>
</div>
<div class="btn">
<a href="{{ route('fo.inscription') }}">Je m'inscris</a>
</div>
@endif
</div>
</section>
</div>
@endsection

View file

@ -1,67 +0,0 @@
@extends('theme::layout')
@section('title', 'Mot de passe oublié')
@section('content')
<div class="connect floating grid">
<div class="head-bloc"></div>
<section class="main--bloc container">
<div class="flex" id="lost_edit">
@if (!isset($tokenValid) || !$tokenValid)
<h1 class="post-title">Mot de passe oublié</h1>
<form class="flex" id="lost--form" method="POST" action="{{ route('fo.mail-password') }}">
@method('PUT')
@csrf
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<p>Pour que nous puissions vous envoyer un lien de réinitialisation de votre mot de passe, merci de nous indiquer
l'adresse e-mail saisie lors de votre inscription.</p>
<div class="edit--blocs flex">
<input id="" name="email" type="email" value="" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"
placeholder="Votre adresse email" required>
</div>
<input class="btn" type="submit" value="Je valide">
</form>
@elseif ($tokenValid)
<h1 class="post-title">Changement de votre mot de passe</h1>
<form method="POST" action="{{ route('fo.change-password', $token) }}">
@method('PUT')
@csrf
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<input name="password" type="password" placeholder="Votre nouveau mot de passe*" required>
<input id="password-confirm" name="password_confirmation" type="password" required autocomplete="new-password"
placeholder="Confirmer votre nouveau mot de passe*">
<input name="token" type="hidden" value="{{ $token }}">
<input class="btn btn-primary" type="submit" value="Envoyer">
</form>
@endif
</div>
</section>
</div>
@endsection

View file

@ -8,6 +8,16 @@
@include('theme::layouts.header')
</header>
@sectionMissing('no-flash')
<div class="container">
<div class="row">
<div class="col">
@include('theme::modules.flash-messages')
</div>
</div>
</div>
@endif
<main class="container-fluid @hasSection('main-class') @yield('main-class') @endif flex-grow-1" id="content-container">
@yield('content')
</main>
@ -16,6 +26,7 @@
@include('theme::layouts.footer')
</footer>
@include('back::modules.script-routes')
{{-- @include('theme::cookie') --}}
@include('theme::vendor.cn-cookies')
@vite(['resources/theme/mounted/ts/fo.ts'])

View file

@ -7,12 +7,13 @@
<div class="share d-inline-block ms-2" data-href="https://www.facebook.com/LeGauloisFrance/" data-layout="button"
data-size="small">
<a class="fb-xfbml-parse-ignore btn-link" href="https://www.facebook.com/LeGauloisFrance/"
title="{{ __('Aller voir la page Facebook Le Gaulois') }}"
onclick="window.open(this.href, 'mywin', 'left=20,top=20,width=800,height=500,toolbar=1,resizable=0'); return false;">
@include('theme::partials.icons.facebook')
</a>
</div>
<a class="share d-inline-block btn-link text-light mx-1" href="https://www.instagram.com/legaulois_officiel/"
target="_blank">
title="{{ __('Aller voir la page Instagram Le Gaulois') }}" target="_blank">
@include('theme::partials.icons.instagram')
</a>
</div>
@ -25,19 +26,24 @@
{{-- LINKS --}}
<ul class="list-inline p-3">
<li class="list-inline-item">
<a class="link-light" href="{{ route('fo.reglement') }}">{{ __('Règlement du jeu') }}</a>
<a class="link-light" href="{{ route('fo.reglement') }}"
title="{{ __('Aller sur la page du réglement du jeu') }}">{{ __('Règlement du jeu') }}</a>
</li>
<li class="list-inline-item">
<a class="link-light" href="{{ route('fo.legals') }}">{{ __('Mentions légales') }}</a>
<a class="link-light" href="{{ route('fo.legals') }}"
title="{{ __('Aller sur la page des metions légales') }}">{{ __('Mentions légales') }}</a>
</li>
<li class="list-inline-item">
<a class="link-light" href="{{ route('fo.charte') }}">{{ __('Charte de confidentialité') }}</a>
<a class="link-light" href="{{ route('fo.charte') }}"
title="{{ __('Aller sur la page de la charte de confidentialité') }}">{{ __('Charte de confidentialité') }}</a>
</li>
<li class="list-inline-item">
<a class="link-light" href="{{ route('fo.faq') }}">{{ __('FAQ') }}</a>
<a class="link-light" href="{{ route('fo.faq') }}"
title="{{ __('Aller sur la page des questions réponses.') }}">{{ __('FAQ') }}</a>
</li>
<li class="list-inline-item">
<a class="link-light" href="https://www.legaulois.fr/contactez-nous" target="_blank">{{ __('Contact') }}</a>
<a class="link-light" href="https://www.legaulois.fr/contactez-nous" title="{{ __('Aller sur la page de contact') }}"
target="_blank">{{ __('Contact') }}</a>
</li>
<li class="list-inline-item">
<a class="link-light cn-cookie-link" title="{{ __('Afficher la boite cookie notice') }}"
@ -53,7 +59,7 @@
</div>
</div>
<button class="btn btn-link rounded-pill z-1" id="page-up">
<button class="btn btn-link rounded-pill z-1" id="page-up" title="{{ __('Remonter la page tout en haut.') }}">
@include('theme::partials.icons.up-arrow')
</button>

View file

@ -59,11 +59,11 @@
<div class="row">
<div class="col-12 col-lg-6">
<div class="d-flex flex-row">
<a class="d-block flex-grow-1 d-flex" href="{{ route('fo.homepage') }}"
<a class="d-block flex-grow-1 d-flex game-logo-banner" href="{{ route('fo.homepage') }}"
title="{{ __('Aller sur la page d\'accueil') }}">
<span class="d-inline-block">
<img class="img-fluid" src="{{ Vite::asset('resources/theme/mounted/assets/images/home_logo.png') }}"
alt="{{ $settingsGlobal->name ?? config('app.name') }} }}">
alt="{{ $settingsGlobal->name ?? config('app.name') }}">
</span>
<span class="d-inline-block">
<img class="img-fluid"
@ -86,7 +86,7 @@
<div
class="rest-in-game-banner flex-column flex-md-row text-bg-quad d-flex flex-grow-1 justify-content-around mt-3 py-1 pe-5 ps-2">
<span
class="d-flex align-items-center fw-bold text-uppercase fs-5 mx-2">{{ __('Encore en jeu : ') }}</span>
class="d-flex align-items-center fw-bold text-uppercase fs-5 mx-2">{{ __("Encore en jeu\u{00A0}:") }}</span>
@if (Arr::has($prizesGlobal, 0))
<span class="d-flex justify-content-center">
<span

View file

@ -1,87 +0,0 @@
@extends('theme::layout')
@section('title', 'Connexion')
@section('content')
<div class="connect floating grid">
<div class="head-bloc"></div>
<section class="main--bloc container">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (session('success'))
<div class="alert alert-success">
<p>{!! session('success') !!}</p>
</div>
@endif
<div class="mobile-menu flex">
<div class="signup--bloc flex">
<div class="btn-connect flex">
<a href="{{ route('fo.inscription') }}">
<h1>Je m'inscris</h1>
</a>
</div>
<p>Pour participer et tenter votre chance, <br>inscrivez-vous&nbsp;!</p>
</div>
<div class="connect--bloc flex">
<div class="btn-connect flex">
<a class="fancybox" id="inline" data-fancybox href="#connect_edit">
<h2>Je me connecte</h2>
</a>
<div style="display:none">
<div class="flex" id="connect_edit">
<form class="flex" method="POST" action="{{ route('fo.authenticate') }}">
@csrf
<div class="edit--blocs flex">
<input id="" name="email" type="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"
placeholder="Email*" required>
<input id="" name="password" type="password" placeholder="Mot de passe*" required>
<a href="{{ route('fo.forgot-password') }}">
<h2>Mot de passe oublié ?</h2>
</a>
<span>* Champs obligatoires</span>
</div>
<input class="btn" type="submit" value="Connexion">
</form>
</div>
</div>
</div>
<p>Si vous possédez déjà un compte Club Le Gaulois, vous pouvez utiliser les mêmes identifiants.</p>
</div>
</div>
<div class="desktop-menu flex">
<div class="signup--bloc">
<h1 class="post-title raleway">Je m'inscris</h1>
<p>Pour participer et tenter votre chance, <br>inscrivez-vous&nbsp;!</p>
<div class="btn-connect flex">
<a href="{{ route('fo.inscription') }}">Inscription</a>
</div>
</div>
<div class="connect--bloc">
<h2 class="post-chapter raleway">Je me connecte</h2>
<p>Si vous possédez déjà un compte Club Le Gaulois, vous pouvez utiliser les mêmes identifiants.</p>
<form class="flex" id="connect--form" method="POST" action="{{ route('fo.authenticate') }}">
@csrf
<div class="edit--blocs flex">
<input id="" name="email" type="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"
placeholder="Email*" required>
<input id="" name="password" type="password" placeholder="Mot de passe*" required>
<a href="{{ route('fo.forgot-password') }}">
<h2>Mot de passe oublié ?</h2>
</a>
<span>* Champs obligatoires</span>
</div>
<input class="btn" type="submit" value="Connexion">
</form>
</div>
</div>
</section>
</div>
@endsection

View file

@ -0,0 +1,55 @@
@if (!request()->routeIs('login'))
@if ($message = Session::get('success', Session::get('bo.success')))
<div class="alert alert-success alert-dismissible fade show m-0 mb-3" role="alert">
<i class="fa-solid fa-circle-check"></i>
<strong>{!! nl2br(e($message)) !!}</strong>
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
</div>
@endif
@if ($message = Session::get('error', Session::get('bo.error')))
<div class="alert alert-danger alert-dismissible fade show m-0 mb-3" role="alert">
<i class="fa-solid fa-circle-xmark"></i>
<strong>{!! nl2br(e($message)) !!}</strong>
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
</div>
@endif
@if ($message = Session::get('warning', Session::get('bo.warning')))
<div class="alert alert-warning alert-dismissible fade show m-0 mb-3" role="alert">
<i class="fa-solid fa-circle-exclamation"></i>
<strong>{!! nl2br(e($message)) !!}</strong>
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
</div>
@endif
@if ($message = Session::get('status', Session::get('bo.status')))
<div class="alert alert-info alert-dismissible fade show m-0 mb-3" role="alert">
<i class="fa-solid fa-circle-info"></i>
<strong>{!! nl2br(e($message)) !!}</strong>
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
</div>
@endif
@if ($message = Session::get('info', Session::get('bo.info')))
<div class="alert alert-info alert-dismissible fade show m-0 mb-3" role="alert">
<i class="fa-solid fa-circle-info"></i>
<strong>{!! nl2br(e($message)) !!}</strong>
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
</div>
@endif
@if ($errors->any())
<div class="alert alert-danger alert-dismissible fade show m-0 mb-3" role="alert">
<p class="fw-bold m-0"><i class="fa-solid fa-circle-exclamation"></i>&nbsp;Liste des erreurs :</p>
@if ($errors->any())
<ul class="list-unstyled m-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
</div>
@endif
@endif

View file

@ -1,6 +1,7 @@
@extends('theme::layout')
@section('title', 'Accueil')
@section('title', __('Jeu :site_name', ['site_name' => Config::get('theme.site_name')]))
@section('description', __('Jeu :site_name', ['site_name' => Config::get('theme.site_name')]))
@section('main-class', 'home-page')
@section('content')

View file

@ -1,241 +0,0 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700" rel="stylesheet">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="word-spacing:normal;background-color:#FFFFFF;">
<div style="background-color:#FFFFFF;">
<!--[if mso | IE]><table class="" style="width:600px;" align="center" border="0" cellpadding="0" cellspacing="0" width="600"><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table role="presentation" style="background:#FFFFFF;background-color:#FFFFFF;width:100%;" align="center" border="0"
cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;"><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table role="presentation" style="vertical-align:top;" border="0" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="center">
<table role="presentation" style="border-collapse:collapse;border-spacing:0px;"
border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width:300px;">
<img src="{{ Vite::asset('resources/theme/mounted/assets/images/home_logo.png') }}"
style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;"
height="auto" width="300">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="center">
<div
style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:40px;font-weight:bold;line-height:1;text-align:center;text-transform:uppercase;color:black;">
Bonjour</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table class="" style="width:600px;" align="center" border="0" cellpadding="0" cellspacing="0" width="600"><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table role="presentation" style="background:#FFFFFF;background-color:#FFFFFF;width:100%;" align="center" border="0"
cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;"><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table role="presentation" style="vertical-align:top;" border="0" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="left">
<div
style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:black;">
Pour réinitialiser votre mot de passe, cliquez sur le lien suivant : <br></div>
</td>
</tr>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="center"
vertical-align="middle">
<table role="presentation" style="border-collapse:separate;line-height:100%;"
border="0" cellpadding="0" cellspacing="0">
<tr>
<td role="presentation"
style="border:none;border-radius:0;cursor:auto;mso-padding-alt:10px 25px;background:#e30613;"
align="center" bgcolor="#e30613" valign="middle">
<a href="{{ config('app.url') }}{{ URL::temporarySignedRoute('forgot-password-reset', now()->addHours(3), ['token' => $user->password_token], false) }}"
style="display:inline-block;background:#e30613;color:white;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:0;"
target="_blank">
Réinitialisez votre mot de passe
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="left">
<div
style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:black;">
<br>
Ce lien expirera dans 3 heures. <br><br>
L'équipe Le Gaulois <br><br>
Si vous avez des questions, n'hésitez pas à nous contacter via notre <a
class="link-nostyle" href="https://www.legaulois.fr/contactez-nous"
style="color: inherit;">formulaire de contact</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</div>
</body>
</html>

View file

@ -1,73 +0,0 @@
@extends('theme::layout')
@section('title', 'Connexion')
@section('content')
<div class="register floating grid">
<div class="head-bloc"></div>
<section class="main--bloc container">
<div class="title-inscription1">
<h1 class="post-title">S’inscrire au Club Le Gaulois</h1>
<p class="info2">Merci de renseigner les champs ci-dessous :</p>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
</div>
<div class="form-inscription1">
<form class="flex" name="inscriptionForm" action="{{ route('fo.register') }}" method="POST" novalidate="novalidate">
@csrf
<p class="section">Votre profil</p>
<!-- <select name="civilite">
<option value="1">Mr</option>
<option value="2">Mme</option>
<option value="3">Mlle</option>
</select> -->
<input name="firstname" type="text" value="{{ old('firstname') }}" placeholder="Prénom*" maxlength="50" required>
<input name="lastname" type="text" value="{{ old('lastname') }}" placeholder="Nom*" maxlength="50" required>
<input name="birth_date" type="date" value="{{ old('birth_date') }}" placeholder="Date de naissance*" required>
<p class="section">Vos identifiants</p>
<input id="email" name="email" type="email" value="{{ old('email') }}" placeholder="E-mail*" maxlength="50"
required>
<input name="email_confirmation" type="email" value="{{ old('email_confirmation') }}" placeholder="Confirmation E-mail*"
required>
<input id="password" name="password" type="password" value="" aria-required="true"
placeholder="Mot de passe* (min. 8 caractères)" maxlength="50" required>
<input name="password_confirmation" type="password" aria-required="true" placeholder="Confirmation mot de passe*" required>
<p class="section">Vos coordonnées</p>
<input name="address" type="text" value="{{ old('address') }}" placeholder="Adresse*" maxlength="200" required>
<input name="address2" type="text" value="{{ old('address2') }}" placeholder="Adresse complémentaire*" required>
<input name="town" type="text" value="{{ old('town') }}" placeholder="Ville*" maxlength="50" required>
<input name="postal_code" type="text" value="{{ old('postal_code') }}" placeholder="Code postal*" maxlength="10"
required>
<input name="country" type="text" value="{{ old('country') }}" placeholder="Pays*" required>
<div class="chk--blocs">
<div class="check-holder flex">
<input id="checknews" name="news" type="checkbox">
<label for="checknews">Je souhaite m'inscrire à la newsletter Le Gaulois</label>
</div>
<div class="check-holder flex">
<input id="check" name="reglement" type="checkbox">
<label for="check">J’ai lu et j’accepte le <a href="{{ route('fo.reglement') }}">règlement*</a></label>
</div>
</div>
<input name="action" type="hidden" value="inscription_jeu">
<div class="btn-form">
<button class="btn">Je valide</button>
</div>
<span class="info">* champs obligatoires</span>
</form>
</div>
</section>
</div>
@endsection

View file

@ -2,11 +2,11 @@
<td class="header">
<a href="{{ $url }}" style="display: inline-block;">
@if (trim($slot) === 'Laravel')
<img src="https://laravel.com/img/notification-logo.png" class="logo" alt="Laravel Logo">
<img class="logo" src="https://laravel.com/img/notification-logo.png" alt="Laravel Logo">
@else
{{-- FIXME: Personaliser ca --}}
<img src="{{ Vite::asset('resources/assets/images/logo.png') }}" class="logo img-fluid" alt="{{ config('app.name') }}">
{{ $slot }}
<img class="logo img-fluid" src="{{ Vite::asset('resources/theme/mounted/assets/images/logo-footer.png') }}"
alt="{{ config('app.name') }}">
{{ $slot }}
@endif
</a>
</td>

View file

@ -1,241 +0,0 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700" rel="stylesheet">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="word-spacing:normal;background-color:#FFF;">
<div style="background-color:#FFF;">
<!--[if mso | IE]><table class="" style="width:600px;" align="center" border="0" cellpadding="0" cellspacing="0" width="600"><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#FFF;background-color:#FFF;margin:0px auto;max-width:600px;">
<table role="presentation" style="background:#FFF;background-color:#FFF;width:100%;" align="center" border="0"
cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;"><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table role="presentation" style="vertical-align:top;" border="0" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="center">
<table role="presentation" style="border-collapse:collapse;border-spacing:0px;"
border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width:300px;">
<img src="{{ Vite::asset('resources/theme/mounted/assets/images/home_logo.png') }}"
style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;"
height="auto" width="300">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="center">
<div
style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:40px;font-weight:bold;line-height:1;text-align:center;text-transform:uppercase;color:black;">
Bonjour {{ $user->firstname }},</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table class="" style="width:600px;" align="center" border="0" cellpadding="0" cellspacing="0" width="600"><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#FFF;background-color:#FFF;margin:0px auto;max-width:600px;">
<table role="presentation" style="background:#FFF;background-color:#FFF;width:100%;" align="center" border="0"
cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;"><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table role="presentation" style="vertical-align:top;" border="0" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="left">
<div
style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:black;">
Vous n'êtes plus qu'à un clic de votre inscription... <br><br>
Pour finaliser votre inscription, cliquez sur le lien ci-dessous : <br></div>
</td>
</tr>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="center"
vertical-align="middle">
<table role="presentation" style="border-collapse:separate;line-height:100%;"
border="0" cellpadding="0" cellspacing="0">
<tr>
<td role="presentation"
style="border:none;border-radius:0;cursor:auto;mso-padding-alt:10px 25px;background:#e30613;"
align="center" bgcolor="#e30613" valign="middle">
<a href="{{ route('fo.confirm-email', ['verifyToken' => $user->email_verify_token, 'email' => $user->email]) }}"
style="display:inline-block;background:#e30613;color:white;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:0;"
target="_blank">
Je confirme mon inscription
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="font-size:0px;padding:10px 25px;word-break:break-word;" align="left">
<div
style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:20px;line-height:1;text-align:left;color:black;">
<br>
L'équipe Le Gaulois <br><br>
Si vous avez des questions, n'hésitez pas à nous contacter via notre <a
class="link-nostyle" href="https://www.legaulois.fr/contactez-nous"
style="color: inherit;">formulaire de contact</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</div>
</body>
</html>