Skip to content

Commit

Permalink
Merge branch 'main' into improve
Browse files Browse the repository at this point in the history
  • Loading branch information
rahmanramsi authored Dec 1, 2023
2 parents 65e1124 + d5c687d commit b0fe95c
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 110 deletions.
11 changes: 10 additions & 1 deletion app/Website/Pages/Register.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Website\Pages;

use App\Actions\User\UserCreateAction;
use App\Models\Enums\UserRole;
use DanHarrin\LivewireRateLimiting\WithRateLimiting;
use Filament\Facades\Filament;
use Filament\Http\Responses\Auth\Contracts\RegistrationResponse;
Expand Down Expand Up @@ -42,6 +43,9 @@ class Register extends Page
#[Rule('required')]
public $privacy_statement_agree = false;

#[Rule('required')]
public $selfAssignRole = [];

public function mount()
{
if (Filament::auth()->check()) {
Expand All @@ -61,6 +65,7 @@ protected function getViewData(): array
{
return [
'countries' => Country::all(),
'roles' => UserRole::selfAssignedRoleNames(),
];
}

Expand All @@ -73,7 +78,11 @@ public function register()
'meta' => Arr::only($data, ['affiliation', 'country']),
]);

event(new Registered($user));
if (data_get($data, 'selfAssignRole')) {
$user->assignRole($data['selfAssignRole']);
}

// event(new Registered($user));

Filament::auth()->login($user);

Expand Down
2 changes: 1 addition & 1 deletion public/build/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"isEntry": true,
"src": "resources/panel/js/panel.js"
},
"resources/website/css/website.css": {
"resources/website/css/website.css":
"file": "assets/website-cbb12118.css",
"isEntry": true,
"src": "resources/website/css/website.css"
Expand Down
239 changes: 131 additions & 108 deletions resources/views/website/pages/register.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,119 +2,142 @@
<div class="card-body space-y-2">
<x-website::breadcrumbs :breadcrumbs="$this->getBreadcrumbs()" />
<h2 class="card-title">{{ $this->getTitle() }}</h2>
@if(setting('allow_registration'))
<form wire:submit='register' class="space-y-4">
<div class="grid sm:grid-cols-6 gap-4">
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Given Name <span class="text-red-500">*</span>
</label>
<input type="text" class="input input-sm" wire:model="given_name" required />
@error('given_name')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Family Name
</label>
<input type="text" class="input input-sm" wire:model="family_name" />
@error('family_name')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Affiliation
</label>
<input type="text" class="input input-sm" wire:model="affiliation" />
@error('affiliation')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Country
</label>
<select class="select select-sm font-normal" name="country" wire:model='country'>
<option value="none" selected disabled>Select country</option>
@foreach ($countries as $country)
<option value="{{ $country->id }}">{{ $country->flag . ' ' . $country->name }}</option>
@endforeach
</select>
@error('country')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-6 gap-2">
<label class="label-text">
Email <span class="text-red-500">*</span>
</label>
<input type="email" class="input input-sm" wire:model="email" />
@error('email')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Password <span class="text-red-500">*</span>
</label>
<input type="password" class="input input-sm" wire:model="password" required />
@error('password')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Password Confirmation <span class="text-red-500">*</span>
</label>
<input type="password" class="input input-sm" wire:model="password_confirmation" required />
@error('password_confirmation')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-6 gap-2">
<div class="form-control">
<label class="label justify-normal gap-2">
<input type="checkbox" class="checkbox checkbox-primary checkbox-sm" wire:model="privacy_statement_agree" required/>
<p class="label-text">
I accept and approve according to <x-website::link href="{{ route('livewirePageGroup.current-conference.pages.privacy-statement') }}" class="link link-primary link-hover">Privacy Statement.</x-conference::link>
</p>
@if (setting('allow_registration'))
<form wire:submit='register' class="space-y-4">
<div class="grid sm:grid-cols-6 gap-4">
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Given Name <span class="text-red-500">*</span>
</label>
<input type="text" class="input input-sm" wire:model="given_name" required />
@error('given_name')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
@error('password_confirmation')
<div class="text-red-600 text-sm">
{{ $message }}
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Family Name
</label>
<input type="text" class="input input-sm" wire:model="family_name" />
@error('family_name')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Affiliation
</label>
<input type="text" class="input input-sm" wire:model="affiliation" />
@error('affiliation')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Country
</label>
<select class="select select-sm font-normal" name="country" wire:model='country'>
<option value="none" selected disabled>Select country</option>
@foreach ($countries as $country)
<option value="{{ $country->id }}">{{ $country->flag . ' ' . $country->name }}</option>
@endforeach
</select>
@error('country')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>

<div class="form-control sm:col-span-6 gap-2">
<label class="label-text">
Email <span class="text-red-500">*</span>
</label>
<input type="email" class="input input-sm" wire:model="email" />
@error('email')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Password <span class="text-red-500">*</span>
</label>
<input type="password" class="input input-sm" wire:model="password" required />
@error('password')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
<div class="form-control sm:col-span-3 gap-2">
<label class="label-text">
Password Confirmation <span class="text-red-500">*</span>
</label>
<input type="password" class="input input-sm" wire:model="password_confirmation" required />
@error('password_confirmation')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>

<div class="form-control sm:col-span-6 gap-2 p-1">
<label class="label-text">Register as <span class="text-red-500">*</span></label>
@foreach ($roles as $role)
<div class="form-control">
<div class="inline-flex gap-2 items-center cursor">
<input type="checkbox" class="checkbox checkbox-sm" wire:model='selfAssignRole'
value="{{ $role }}" />
<label class="label-text">{{ $role }}</label>
</div>
</div>
@endforeach
@error('selfAssignRole')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>

<div class="form-control sm:col-span-6 gap-2">
<div class="form-control">
<label class="label justify-normal gap-2">
<input type="checkbox" class="checkbox checkbox-sm" wire:model="privacy_statement_agree"
required />
<p class="label-text">
I accept and approve according to <x-website::link
href="{{ route('livewirePageGroup.current-conference.pages.privacy-statement') }}"
class="link link-primary link-hover">Privacy Statement.</x-conference::link>
</p>
</label>
</div>
@enderror
@error('password_confirmation')
<div class="text-red-600 text-sm">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="flex gap-2">
<button type="submit" class="btn btn-primary btn-sm" wire:loading.attr="disabled">
<span class="loading loading-spinner loading-xs" wire:loading></span>
Register
</button>
<x-website::link class="btn btn-outline btn-sm" :href="url('login')">
Login
</x-conference::link>
</div>
</div>
<div class="flex gap-2">
<button type="submit" class="btn btn-primary btn-sm" wire:loading.attr="disabled">
<span class="loading loading-spinner loading-xs" wire:loading></span>
Register
</button>
<x-website::link class="btn btn-outline btn-sm" :href="url('login')">
Login
</x-conference::link>
</div>
</form>
</form>
@else
<p>This conference is currently closing user registrations</p>
@endif
</div>
</x-conference::layouts.main>
</x-conference::layouts.main>

0 comments on commit b0fe95c

Please sign in to comment.