Skip to content

Commit 0b6e9b5

Browse files
committed
Added Page URL to register page
+ validation
1 parent d6264b4 commit 0b6e9b5

File tree

3 files changed

+74
-39
lines changed

3 files changed

+74
-39
lines changed

app/Http/Controllers/Auth/RegisteredUserController.php

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,36 @@
1111
use Illuminate\Support\Facades\Hash;
1212
use Illuminate\Support\Facades\DB;
1313
use Illuminate\Support\Facades\Mail;
14+
use Illuminate\Support\Facades\Validator;
1415

1516
class RegisteredUserController extends Controller
1617
{
17-
/**
18-
* Display the registration view.
19-
*
20-
* @return \Illuminate\View\View
21-
*/
18+
2219
public function create()
2320
{
2421
return view('auth.register');
2522
}
2623

27-
/**
28-
* Handle an incoming registration request.
29-
*
30-
* @param \Illuminate\Http\Request $request
31-
* @return \Illuminate\Http\RedirectResponse
32-
*
33-
* @throws \Illuminate\Validation\ValidationException
34-
*/
24+
public function validateHandle(Request $request)
25+
{
26+
$validator = Validator::make($request->all(), [
27+
'littlelink_name' => 'required|string|max:50|unique:users',
28+
]);
29+
30+
if ($validator->fails()) {
31+
return response()->json(['valid' => false]);
32+
}
33+
34+
return response()->json(['valid' => true]);
35+
}
36+
3537
public function store(Request $request)
3638
{
3739
$request->validate([
3840
'name' => 'required|string|max:255',
41+
'littlelink_name' => 'required|string|max:50|unique:users',
3942
'email' => 'required|string|email|max:255|unique:users',
40-
'password' => 'required|string|confirmed|min:8',
43+
'password' => 'required|string|min:8',
4144
]);
4245

4346
$name = $request->input('name');
@@ -48,23 +51,13 @@ public function store(Request $request)
4851
$block = 'no';
4952
}
5053

51-
if(DB::table('users')->where('littlelink_name', $request->name)->exists())
52-
{
53-
Auth::login($user = User::create([
54-
'name' => $request->name,
55-
'email' => $request->email,
56-
'password' => Hash::make($request->password),
57-
'role' => 'user',
58-
]));
59-
} else {
60-
Auth::login($user = User::create([
61-
'name' => $request->name,
62-
'email' => $request->email,
63-
'littlelink_name' => $request->name,
64-
'password' => Hash::make($request->password),
65-
'role' => 'user',
66-
]));
67-
}
54+
Auth::login($user = User::create([
55+
'name' => $request->name,
56+
'email' => $request->email,
57+
'littlelink_name' => $request->littlelink_name,
58+
'password' => Hash::make($request->password),
59+
'role' => 'user',
60+
]));
6861

6962
$user->block = $block;
7063
$user->save();

resources/views/auth/register.blade.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<!-- Validation Errors -->
1919
<x-auth-validation-errors class="mb-4" :errors="$errors" />
2020

21-
<div style="max-width:480px" class="container mt-5 w-100">
21+
<div class="container mt-5 w-100">
2222
<div class="card p-5">
2323
<a href="{{ url('') }}" class="d-flex align-items-center mb-3">
2424
<!--Logo start-->
@@ -55,20 +55,24 @@
5555
</div>
5656
<div class="col-lg-12">
5757
<div class="form-group">
58-
<label for="email" class="form-label">{{__('messages.Email')}}</label>
59-
<input type="email" class="form-control" id="email" name="email" aria-describedby="email" placeholder=" " :value="old('email')" required autofocus >
58+
<label for="littlelink_name" class="form-label">{{__('messages.Page URL')}}</label>
59+
<div class="input-group mb-3 has-validation">
60+
<span class="input-group-text" id="basic-addon3">{{str_replace(['http://', 'https://'], '', url(''))}}/@</span>
61+
<input type="littlelink_name" class="form-control" id="littlelink_name" name="littlelink_name" aria-describedby="littlelink_name" placeholder=" " :value="old('littlelink_name')" required autofocus >
62+
</div>
6063
</div>
6164
</div>
65+
@include('auth.url-validation')
6266
<div class="col-lg-12">
6367
<div class="form-group">
64-
<label for="password" class="form-label">{{__('messages.Password')}}</label>
65-
<input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="new-password" />
68+
<label for="email" class="form-label">{{__('messages.Email')}}</label>
69+
<input type="email" class="form-control" id="email" name="email" aria-describedby="email" placeholder=" " :value="old('email')" required autofocus >
6670
</div>
6771
</div>
6872
<div class="col-lg-12">
6973
<div class="form-group">
70-
<label for="password_confirmation" class="form-label">{{__('messages.Confirm Password')}}</label>
71-
<input type="password" class="form-control" id="password_confirmation" aria-describedby="password_confirmation" placeholder=" " name="password_confirmation" required />
74+
<label for="password" class="form-label">{{__('messages.Password')}}</label>
75+
<input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="new-password" />
7276
</div>
7377
</div>
7478
<div class="col-lg-12 d-flex justify-content-between">
@@ -79,7 +83,7 @@
7983
</div>
8084
</div>
8185
<div class="d-flex justify-content-center">
82-
<button type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button>
86+
<button id="submit-btn" type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button>
8387
</div>
8488
@if(env('ENABLE_SOCIAL_LOGIN') == 'true')
8589
<p class="text-center my-3">{{__('messages.or sign in with other accounts?')}}</p>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<script>{!! file_get_contents(base_path("assets/js/jquery.min.js")) !!}</script>
2+
<script>
3+
$(document).ready(function () {
4+
var submitBtn = $('#submit-btn');
5+
6+
$('#littlelink_name').on('keyup', function () {
7+
var littlelinkName = $(this).val();
8+
9+
if (littlelinkName.trim() !== '') {
10+
$.ajax({
11+
type: 'POST',
12+
url: '{{url("/validate-handle")}}',
13+
data: {
14+
'_token': '{{ csrf_token() }}',
15+
'littlelink_name': littlelinkName
16+
},
17+
success: function (data) {
18+
$('#littlelink_name').removeClass('is-valid is-invalid');
19+
$('#username-error').remove();
20+
21+
if (data.valid) {
22+
$('#littlelink_name').addClass('is-valid');
23+
submitBtn.prop('disabled', false);
24+
} else {
25+
$('#littlelink_name').addClass('is-invalid');
26+
$('<div id="username-error" class="invalid-feedback">That username is already taken</div>').insertAfter('#littlelink_name');
27+
submitBtn.prop('disabled', true);
28+
}
29+
}
30+
});
31+
} else {
32+
$('#littlelink_name').removeClass('is-valid is-invalid');
33+
$('#username-error').remove();
34+
submitBtn.prop('disabled', true);
35+
}
36+
});
37+
});
38+
</script>

0 commit comments

Comments
 (0)