Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a5cff8e

Browse files
v1.0.0
1 parent 0216aac commit a5cff8e

File tree

86 files changed

+5022
-627
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+5022
-627
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Http\Requests\Auth\LoginRequest;
7+
use Illuminate\Http\RedirectResponse;
8+
use Illuminate\Http\Request;
9+
use Illuminate\Support\Facades\Auth;
10+
use Illuminate\View\View;
11+
12+
class AuthenticatedSessionController extends Controller
13+
{
14+
/**
15+
* Display the login view.
16+
*/
17+
public function create(): View
18+
{
19+
return view('auth.login');
20+
}
21+
22+
/**
23+
* Handle an incoming authentication request.
24+
*/
25+
public function store(LoginRequest $request): RedirectResponse
26+
{
27+
$request->authenticate();
28+
29+
$request->session()->regenerate();
30+
31+
return redirect()->intended(route('dashboard', absolute: false));
32+
}
33+
34+
/**
35+
* Destroy an authenticated session.
36+
*/
37+
public function destroy(Request $request): RedirectResponse
38+
{
39+
Auth::guard('web')->logout();
40+
41+
$request->session()->invalidate();
42+
43+
$request->session()->regenerateToken();
44+
45+
return redirect('/');
46+
}
47+
48+
// AJAX login method
49+
public function ajaxLogin(Request $request)
50+
{
51+
$credentials = $request->only('email', 'password');
52+
53+
if (Auth::attempt($credentials)) {
54+
// Regenerate the session if needed
55+
$request->session()->regenerate();
56+
return response()->json(['success' => true, 'message' => 'Login successful!']);
57+
}
58+
59+
return response()->json(['success' => false, 'message' => 'Invalid credentials!'], 401);
60+
}
61+
62+
// AJAX registration method
63+
public function ajaxRegister(RegisterRequest $request)
64+
{
65+
$user = User::create([
66+
'name' => $request->name,
67+
'email' => $request->email,
68+
'password' => bcrypt($request->password),
69+
]);
70+
71+
// Log the user in after registration
72+
Auth::login($user);
73+
74+
return response()->json(['success' => true, 'message' => 'Registration successful!']);
75+
}
76+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\RedirectResponse;
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Auth;
9+
use Illuminate\Validation\ValidationException;
10+
use Illuminate\View\View;
11+
12+
class ConfirmablePasswordController extends Controller
13+
{
14+
/**
15+
* Show the confirm password view.
16+
*/
17+
public function show(): View
18+
{
19+
return view('auth.confirm-password');
20+
}
21+
22+
/**
23+
* Confirm the user's password.
24+
*/
25+
public function store(Request $request): RedirectResponse
26+
{
27+
if (! Auth::guard('web')->validate([
28+
'email' => $request->user()->email,
29+
'password' => $request->password,
30+
])) {
31+
throw ValidationException::withMessages([
32+
'password' => __('auth.password'),
33+
]);
34+
}
35+
36+
$request->session()->put('auth.password_confirmed_at', time());
37+
38+
return redirect()->intended(route('dashboard', absolute: false));
39+
}
40+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\RedirectResponse;
7+
use Illuminate\Http\Request;
8+
9+
class EmailVerificationNotificationController extends Controller
10+
{
11+
/**
12+
* Send a new email verification notification.
13+
*/
14+
public function store(Request $request): RedirectResponse
15+
{
16+
if ($request->user()->hasVerifiedEmail()) {
17+
return redirect()->intended(route('dashboard', absolute: false));
18+
}
19+
20+
$request->user()->sendEmailVerificationNotification();
21+
22+
return back()->with('status', 'verification-link-sent');
23+
}
24+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\RedirectResponse;
7+
use Illuminate\Http\Request;
8+
use Illuminate\View\View;
9+
10+
class EmailVerificationPromptController extends Controller
11+
{
12+
/**
13+
* Display the email verification prompt.
14+
*/
15+
public function __invoke(Request $request): RedirectResponse|View
16+
{
17+
return $request->user()->hasVerifiedEmail()
18+
? redirect()->intended(route('dashboard', absolute: false))
19+
: view('auth.verify-email');
20+
}
21+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Auth\Events\PasswordReset;
7+
use Illuminate\Http\RedirectResponse;
8+
use Illuminate\Http\Request;
9+
use Illuminate\Support\Facades\Hash;
10+
use Illuminate\Support\Facades\Password;
11+
use Illuminate\Support\Str;
12+
use Illuminate\Validation\Rules;
13+
use Illuminate\View\View;
14+
15+
class NewPasswordController extends Controller
16+
{
17+
/**
18+
* Display the password reset view.
19+
*/
20+
public function create(Request $request): View
21+
{
22+
return view('auth.reset-password', ['request' => $request]);
23+
}
24+
25+
/**
26+
* Handle an incoming new password request.
27+
*
28+
* @throws \Illuminate\Validation\ValidationException
29+
*/
30+
public function store(Request $request): RedirectResponse
31+
{
32+
$request->validate([
33+
'token' => ['required'],
34+
'email' => ['required', 'email'],
35+
'password' => ['required', 'confirmed', Rules\Password::defaults()],
36+
]);
37+
38+
// Here we will attempt to reset the user's password. If it is successful we
39+
// will update the password on an actual user model and persist it to the
40+
// database. Otherwise we will parse the error and return the response.
41+
$status = Password::reset(
42+
$request->only('email', 'password', 'password_confirmation', 'token'),
43+
function ($user) use ($request) {
44+
$user->forceFill([
45+
'password' => Hash::make($request->password),
46+
'remember_token' => Str::random(60),
47+
])->save();
48+
49+
event(new PasswordReset($user));
50+
}
51+
);
52+
53+
// If the password was successfully reset, we will redirect the user back to
54+
// the application's home authenticated view. If there is an error we can
55+
// redirect them back to where they came from with their error message.
56+
return $status == Password::PASSWORD_RESET
57+
? redirect()->route('login')->with('status', __($status))
58+
: back()->withInput($request->only('email'))
59+
->withErrors(['email' => __($status)]);
60+
}
61+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\RedirectResponse;
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Hash;
9+
use Illuminate\Validation\Rules\Password;
10+
11+
class PasswordController extends Controller
12+
{
13+
/**
14+
* Update the user's password.
15+
*/
16+
public function update(Request $request): RedirectResponse
17+
{
18+
$validated = $request->validateWithBag('updatePassword', [
19+
'current_password' => ['required', 'current_password'],
20+
'password' => ['required', Password::defaults(), 'confirmed'],
21+
]);
22+
23+
$request->user()->update([
24+
'password' => Hash::make($validated['password']),
25+
]);
26+
27+
return back()->with('status', 'password-updated');
28+
}
29+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\RedirectResponse;
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Password;
9+
use Illuminate\View\View;
10+
11+
class PasswordResetLinkController extends Controller
12+
{
13+
/**
14+
* Display the password reset link request view.
15+
*/
16+
public function create(): View
17+
{
18+
return view('auth.forgot-password');
19+
}
20+
21+
/**
22+
* Handle an incoming password reset link request.
23+
*
24+
* @throws \Illuminate\Validation\ValidationException
25+
*/
26+
public function store(Request $request): RedirectResponse
27+
{
28+
$request->validate([
29+
'email' => ['required', 'email'],
30+
]);
31+
32+
// We will send the password reset link to this user. Once we have attempted
33+
// to send the link, we will examine the response then see the message we
34+
// need to show to the user. Finally, we'll send out a proper response.
35+
$status = Password::sendResetLink(
36+
$request->only('email')
37+
);
38+
39+
return $status == Password::RESET_LINK_SENT
40+
? back()->with('status', __($status))
41+
: back()->withInput($request->only('email'))
42+
->withErrors(['email' => __($status)]);
43+
}
44+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Models\User;
7+
use Illuminate\Auth\Events\Registered;
8+
use Illuminate\Http\RedirectResponse;
9+
use Illuminate\Http\Request;
10+
use Illuminate\Support\Facades\Auth;
11+
use Illuminate\Support\Facades\Hash;
12+
use Illuminate\Validation\Rules;
13+
use Illuminate\View\View;
14+
15+
class RegisteredUserController extends Controller
16+
{
17+
/**
18+
* Display the registration view.
19+
*/
20+
public function create(): View
21+
{
22+
return view('auth.register');
23+
}
24+
25+
/**
26+
* Handle an incoming registration request.
27+
*
28+
* @throws \Illuminate\Validation\ValidationException
29+
*/
30+
public function store(Request $request): RedirectResponse
31+
{
32+
$request->validate([
33+
'name' => ['required', 'string', 'max:255'],
34+
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
35+
'password' => ['required', 'confirmed', Rules\Password::defaults()],
36+
]);
37+
38+
$user = User::create([
39+
'name' => $request->name,
40+
'email' => $request->email,
41+
'password' => Hash::make($request->password),
42+
]);
43+
44+
event(new Registered($user));
45+
46+
Auth::login($user);
47+
48+
return redirect(route('dashboard', absolute: false));
49+
}
50+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Auth\Events\Verified;
7+
use Illuminate\Foundation\Auth\EmailVerificationRequest;
8+
use Illuminate\Http\RedirectResponse;
9+
10+
class VerifyEmailController extends Controller
11+
{
12+
/**
13+
* Mark the authenticated user's email address as verified.
14+
*/
15+
public function __invoke(EmailVerificationRequest $request): RedirectResponse
16+
{
17+
if ($request->user()->hasVerifiedEmail()) {
18+
return redirect()->intended(route('dashboard', absolute: false).'?verified=1');
19+
}
20+
21+
if ($request->user()->markEmailAsVerified()) {
22+
event(new Verified($request->user()));
23+
}
24+
25+
return redirect()->intended(route('dashboard', absolute: false).'?verified=1');
26+
}
27+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /