- Adds Character model with survival needs (hunger, thirst, energy) and state machine - Implements city:tick world ticker for offline progression every minute - Adds city territory expansion and building construction system - Introduces job economy, inventory, and transaction audit trail - Adds social graph (friends, marriage, children) and character chat - Implements admin approval workflow for new registrations - Adds hospital admission system for traffic accidents - Includes comprehensive feature tests and world seeders
81 lines
3.5 KiB
PHP
Executable File
81 lines
3.5 KiB
PHP
Executable File
@extends('layouts.app')
|
|
|
|
@section('title', __('Register'))
|
|
|
|
@section('content')
|
|
<div style="max-width: 460px; margin: 0 auto;">
|
|
<div class="card">
|
|
<h2 style="margin-top:0; color:#fff;">{{ __('Register') }}</h2>
|
|
|
|
<form method="POST" action="{{ route('register') }}">
|
|
@csrf
|
|
|
|
<div class="field">
|
|
<label for="name">{{ __('Name') }}</label>
|
|
<input id="name" type="text" name="name" value="{{ old('name') }}" required autofocus maxlength="120">
|
|
@error('name')<div class="error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="email">{{ __('Email') }}</label>
|
|
<input id="email" type="email" name="email" value="{{ old('email') }}" required autocomplete="username">
|
|
@error('email')<div class="error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="password">{{ __('Password') }}</label>
|
|
<div class="pw-wrap">
|
|
<input id="password" type="password" name="password" required autocomplete="new-password">
|
|
<button type="button" class="eye-toggle" data-eye="password" aria-label="Mostrar senha">👁️</button>
|
|
</div>
|
|
@error('password')<div class="error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="password_confirmation">{{ __('Password Confirmation') }}</label>
|
|
<div class="pw-wrap">
|
|
<input id="password_confirmation" type="password" name="password_confirmation" required autocomplete="new-password">
|
|
<button type="button" class="eye-toggle" data-eye="password_confirmation" aria-label="Confirmar senha">👁️</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="locale">Idioma / Language / Idioma</label>
|
|
<select id="locale" name="locale">
|
|
<option value="pt_BR" @selected(old('locale', 'pt_BR') === 'pt_BR')>Português (Brasil)</option>
|
|
<option value="en" @selected(old('locale') === 'en')>English</option>
|
|
<option value="es" @selected(old('locale') === 'es')>Español</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label for="captcha">{{ $captcha['question'] }}</label>
|
|
<input id="captcha" type="number" name="captcha" required inputmode="numeric">
|
|
@error('captcha')<div class="error">{{ $message }}</div>@enderror
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary" style="width:100%; padding:.8rem;">{{ __('Register') }}</button>
|
|
</form>
|
|
|
|
<p style="margin-top:1rem; font-size:.9rem; color:var(--muted);">
|
|
{{ __('welcome.has_account') }} <a href="{{ route('login') }}">{{ __('Login') }}</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@push('scripts')
|
|
<script>
|
|
// Eye icons toggle password visibility on the registration form.
|
|
document.querySelectorAll('.eye-toggle').forEach(function (btn) {
|
|
btn.addEventListener('click', function () {
|
|
var input = document.getElementById(btn.dataset.eye);
|
|
if (!input) return;
|
|
var showing = input.type === 'text';
|
|
input.type = showing ? 'password' : 'text';
|
|
btn.textContent = showing ? '👁️' : '🙈';
|
|
});
|
|
});
|
|
</script>
|
|
@endpush
|