Added Page URL to register page

+ validation
This commit is contained in:
Julian Prieber 2023-12-18 15:29:24 +01:00
parent d6264b4064
commit 0b6e9b5ace
3 changed files with 74 additions and 39 deletions

View File

@ -11,33 +11,36 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
class RegisteredUserController extends Controller class RegisteredUserController extends Controller
{ {
/**
* Display the registration view.
*
* @return \Illuminate\View\View
*/
public function create() public function create()
{ {
return view('auth.register'); return view('auth.register');
} }
/** public function validateHandle(Request $request)
* Handle an incoming registration request. {
* $validator = Validator::make($request->all(), [
* @param \Illuminate\Http\Request $request 'littlelink_name' => 'required|string|max:50|unique:users',
* @return \Illuminate\Http\RedirectResponse ]);
*
* @throws \Illuminate\Validation\ValidationException if ($validator->fails()) {
*/ return response()->json(['valid' => false]);
}
return response()->json(['valid' => true]);
}
public function store(Request $request) public function store(Request $request)
{ {
$request->validate([ $request->validate([
'name' => 'required|string|max:255', 'name' => 'required|string|max:255',
'littlelink_name' => 'required|string|max:50|unique:users',
'email' => 'required|string|email|max:255|unique:users', 'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|confirmed|min:8', 'password' => 'required|string|min:8',
]); ]);
$name = $request->input('name'); $name = $request->input('name');
@ -48,23 +51,13 @@ class RegisteredUserController extends Controller
$block = 'no'; $block = 'no';
} }
if(DB::table('users')->where('littlelink_name', $request->name)->exists()) Auth::login($user = User::create([
{ 'name' => $request->name,
Auth::login($user = User::create([ 'email' => $request->email,
'name' => $request->name, 'littlelink_name' => $request->littlelink_name,
'email' => $request->email, 'password' => Hash::make($request->password),
'password' => Hash::make($request->password), 'role' => 'user',
'role' => 'user', ]));
]));
} else {
Auth::login($user = User::create([
'name' => $request->name,
'email' => $request->email,
'littlelink_name' => $request->name,
'password' => Hash::make($request->password),
'role' => 'user',
]));
}
$user->block = $block; $user->block = $block;
$user->save(); $user->save();

View File

@ -18,7 +18,7 @@ foreach($pages as $page)
<!-- Validation Errors --> <!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" /> <x-auth-validation-errors class="mb-4" :errors="$errors" />
<div style="max-width:480px" class="container mt-5 w-100"> <div class="container mt-5 w-100">
<div class="card p-5"> <div class="card p-5">
<a href="{{ url('') }}" class="d-flex align-items-center mb-3"> <a href="{{ url('') }}" class="d-flex align-items-center mb-3">
<!--Logo start--> <!--Logo start-->
@ -53,6 +53,16 @@ foreach($pages as $page)
<input type="text" class="form-control" id="name" name="name" aria-describedby="name" placeholder=" " :value="old('name')" required autofocus > <input type="text" class="form-control" id="name" name="name" aria-describedby="name" placeholder=" " :value="old('name')" required autofocus >
</div> </div>
</div> </div>
<div class="col-lg-12">
<div class="form-group">
<label for="littlelink_name" class="form-label">{{__('messages.Page URL')}}</label>
<div class="input-group mb-3 has-validation">
<span class="input-group-text" id="basic-addon3">{{str_replace(['http://', 'https://'], '', url(''))}}/@</span>
<input type="littlelink_name" class="form-control" id="littlelink_name" name="littlelink_name" aria-describedby="littlelink_name" placeholder=" " :value="old('littlelink_name')" required autofocus >
</div>
</div>
</div>
@include('auth.url-validation')
<div class="col-lg-12"> <div class="col-lg-12">
<div class="form-group"> <div class="form-group">
<label for="email" class="form-label">{{__('messages.Email')}}</label> <label for="email" class="form-label">{{__('messages.Email')}}</label>
@ -65,12 +75,6 @@ foreach($pages as $page)
<input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="new-password" /> <input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="new-password" />
</div> </div>
</div> </div>
<div class="col-lg-12">
<div class="form-group">
<label for="password_confirmation" class="form-label">{{__('messages.Confirm Password')}}</label>
<input type="password" class="form-control" id="password_confirmation" aria-describedby="password_confirmation" placeholder=" " name="password_confirmation" required />
</div>
</div>
<div class="col-lg-12 d-flex justify-content-between"> <div class="col-lg-12 d-flex justify-content-between">
<div class="form-check mb-3"> <div class="form-check mb-3">
<input type="checkbox" class="form-check-input" name="remember" id="remember_me"> <input type="checkbox" class="form-check-input" name="remember" id="remember_me">
@ -79,7 +83,7 @@ foreach($pages as $page)
</div> </div>
</div> </div>
<div class="d-flex justify-content-center"> <div class="d-flex justify-content-center">
<button type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button> <button id="submit-btn" type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button>
</div> </div>
@if(env('ENABLE_SOCIAL_LOGIN') == 'true') @if(env('ENABLE_SOCIAL_LOGIN') == 'true')
<p class="text-center my-3">{{__('messages.or sign in with other accounts?')}}</p> <p class="text-center my-3">{{__('messages.or sign in with other accounts?')}}</p>

View File

@ -0,0 +1,38 @@
<script>{!! file_get_contents(base_path("assets/js/jquery.min.js")) !!}</script>
<script>
$(document).ready(function () {
var submitBtn = $('#submit-btn');
$('#littlelink_name').on('keyup', function () {
var littlelinkName = $(this).val();
if (littlelinkName.trim() !== '') {
$.ajax({
type: 'POST',
url: '{{url("/validate-handle")}}',
data: {
'_token': '{{ csrf_token() }}',
'littlelink_name': littlelinkName
},
success: function (data) {
$('#littlelink_name').removeClass('is-valid is-invalid');
$('#username-error').remove();
if (data.valid) {
$('#littlelink_name').addClass('is-valid');
submitBtn.prop('disabled', false);
} else {
$('#littlelink_name').addClass('is-invalid');
$('<div id="username-error" class="invalid-feedback">That username is already taken</div>').insertAfter('#littlelink_name');
submitBtn.prop('disabled', true);
}
}
});
} else {
$('#littlelink_name').removeClass('is-valid is-invalid');
$('#username-error').remove();
submitBtn.prop('disabled', true);
}
});
});
</script>