{"flag":true,"single":true,"pageTitle":"Custom Login \/ Registration , forget Password in Laravel","post":{"id":20,"user_id":"1","slug":"custom-login-registration-forget-password-in-laravel-gx13","title":"Custom Login \/ Registration , forget Password in Laravel","body":"<p>1. Goto mail trap make account and config your laravel app. https:\/\/mailtrap.io\/<\/p>\r\n<p>2. Make authentication controller<\/p>\r\n<pre class=\"language-markup\"><code>php artisan make:model Authentication--controller \/\/model with controller<\/code><\/pre>\r\n<p>3. Make login, register and do login, do register, logout routes<\/p>\r\n<pre class=\"language-markup\"><code>Route::controller(\\App\\Http\\Controllers\\AuthenticationController::class)-&gt;group(function () {\r\n    Route::get('login','index')-&gt;name('login');\r\n    Route::get('register','register')-&gt;name('register');\r\n    Route::post('do_login','do_login')-&gt;name('do_login');\r\n    Route::post('do_register','do_register')-&gt;name('do_register');\r\n    Route::get('logout', 'logout')-&gt;name('logout');\r\n});<\/code><\/pre>\r\n<p>4. CREATE VIEWS<\/p>\r\n<p>&gt;&gt;auth&gt;login.blade.php<\/p>\r\n<pre class=\"language-markup\"><code>@if(session()-&gt;has('status'))<\/code><\/pre>\r\n<div class=\"alert alert-danger\">{{session('status')}}<\/div>\r\n<pre class=\"language-markup\"><code>\r\n@elseif(session()-&gt;has('success'))<\/code><\/pre>\r\n<div class=\"alert alert-success\">{{session('success')}}<\/div>\r\n<pre class=\"language-markup\"><code>\r\n@endif<\/code><\/pre>\r\n<form action=\"{{URL::to('\/do_login')}}\" method=\"post\">@csrf <input name=\"email\" required=\"\" type=\"email\" placeholder=\"ENTER YOUR EMAIL\"> <input name=\"password\" required=\"\" type=\"password\" placeholder=\"Enter the Password\"> <input type=\"submit\" value=\"Login\"><\/form>\r\n<pre class=\"language-markup\"><code>\r\n<\/code><\/pre>\r\n<p>&gt;&gt;auth&gt;&gt;register.blade.php<\/p>\r\n<pre class=\"language-markup\"><code>@if ($errors-&gt;any())\r\n    @foreach ($errors-&gt;all() as $error)<\/code><\/pre>\r\n<p>{{ $error }}<\/p>\r\n<pre class=\"language-markup\"><code>\r\n    @endforeach\r\n@endif<\/code><\/pre>\r\n<form action=\"{{URL::to('\/do_register')}}\" method=\"POST\">@csrf <input required=\"\" type=\"text\" value=\"{{ old('name') }}\" placeholder=\"ie John Doe\"> <input name=\"email\" required=\"\" type=\"email\" value=\"{{ old('email') }}\" placeholder=\"ie johndoe@gmail.com\"> <input name=\"password\" required=\"\" type=\"password\" placeholder=\"Enter Your Password\"> <input name=\"password_confirmation\" required=\"\" type=\"password\" placeholder=\"Repeat Password\"> <input type=\"submit\" value=\"Register\"><\/form>\r\n<pre class=\"language-markup\"><code>\r\n                          <\/code><\/pre>\r\n<p>&gt;&gt;auth&gt;&gt;reset.blade.php<\/p>\r\n<pre class=\"language-markup\"><code>\r\n<\/code><\/pre>\r\n<form action=\"{{URL::to('\/reset_password_init')}}\" method=\"post\">@csrf <input name=\"token\" type=\"hidden\" value=\"{{$token}}\"> <input name=\"email\" required=\"\" type=\"email\" value=\"{{$_GET['email']}}\"> <input name=\"password\" required=\"\" type=\"password\" placeholder=\"Enter the Password\"> <input name=\"password_confirmation\" required=\"\" type=\"password\" placeholder=\"Repeat Password\"> <input type=\"submit\" value=\"Reset Password\"><\/form>\r\n<pre class=\"language-markup\"><code>\r\n<\/code><\/pre>\r\n<p>auth&gt;&gt;forgot-password.blade.php<\/p>\r\n<pre class=\"language-markup\"><code>\r\n<\/code><\/pre>\r\n<form action=\"{{URL::to('\/forgot_password_init')}}\" method=\"post\">@csrf <input name=\"email\" required=\"\" type=\"email\" placeholder=\"ENTER YOUR EMAIL\"> <input type=\"submit\" value=\"Reset\"><\/form>\r\n<pre class=\"language-markup\"><code>\r\n<\/code><\/pre>\r\n<p><strong>5. AuthenticationController.php<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>&lt;?php\r\nnamespace App\\Http\\Controllers;\r\nuse Hash;\r\nuse Session;\r\nuse Illuminate\\Support\\Facades\\Auth;\r\nuse Illuminate\\Http\\Request;\r\nclass AuthenticationController extends Controller\r\n{\r\n    public function index(){\r\n        return view(\"auth.login\");\r\n    }\r\n\r\n    public function do_login(Request $request){\r\n         $request-&gt;validate([\r\n            'email' =&gt; 'required',\r\n            'password' =&gt; 'required',\r\n        ]);\r\n   \r\n        $credentials = $request-&gt;only('email', 'password');\r\n        if (Auth::attempt($credentials)) {\r\n            return redirect()-&gt;intended('home')\r\n                        -&gt;with('success','Signed in');\r\n        }\r\n        return redirect(\"login\")-&gt;with('status','Login details are not valid');\r\n    }\r\n\r\n    public function register(){\r\n        \/\/do_register\r\n        return view(\"auth.register\");\r\n    }\r\n\r\n    public function do_register(Request $request){\r\n        \/\/do_register\r\n        $request-&gt;validate([\r\n            'name' =&gt; 'required',\r\n            'email' =&gt; 'required|email|unique:users',\r\n            'password' =&gt; 'required|confirmed|min:6'\r\n        ]);\r\n        \r\n        $user = \\App\\Models\\User::create([\r\n            'name' =&gt; $request-&gt;name,\r\n            'email'=&gt;$request-&gt;email,\r\n            'password'=&gt; Hash::make($request-&gt;password)\r\n        ]);\r\n        Auth::login($user);\r\n        return redirect(\"home\")-&gt;withSuccess('You have signed-in');\r\n    }\r\n    public function logout() {\r\n        Session::flush();\r\n        Auth::logout();\r\n        return Redirect('login');\r\n    }\r\n}<\/code><\/pre>\r\n<p>FOR RESET<\/p>\r\n<p>1. ADD THIS LINE INTO USER MODEL, CanResetPassword;<\/p>\r\n<pre class=\"language-markup\"><code>Illuminate\\Auth\\Passwords\\CanResetPassword;\r\nclass User extends Authenticatable\r\n{\r\n    use HasApiTokens, HasFactory, Notifiable,CanResetPassword;\r\n.....\r\n}<\/code><\/pre>\r\n<p>add in routing web.php, you must provide default route names to make it working else error thrown<\/p>\r\n<pre class=\"language-markup\"><code>use Illuminate\\Support\\Facades\\Route;\r\nRoute::controller(\\App\\Http\\Controllers\\AuthenticationController::class)-&gt;group(function () {\r\n    \/*********** RESET ***************\/\r\n    Route::get('forgot-password', 'forgot_password')-&gt;middleware('guest')-&gt;name('password.request');\r\n    Route::post('forgot_password_init', 'forgot_password_init')-&gt;middleware('guest');\r\n\r\n    Route::get('\/reset-password\/{token}', 'reset_password')-&gt;middleware('guest')-&gt;name('password.reset');\r\n    Route::post('\/reset_password_init', 'reset_password_init')-&gt;middleware('guest');\r\n});<\/code><\/pre>\r\n<p>In controller Logic.<\/p>\r\n<pre class=\"language-markup\"><code>&lt;?php\r\nnamespace App\\Http\\Controllers;\r\nuse Hash;\r\nuse Session;\r\nuse Illuminate\\Support\\Facades\\Auth;\r\nuse Illuminate\\Http\\Request;\r\n\r\nuse Illuminate\\Support\\Facades\\Password;\r\nuse Illuminate\\Auth\\Events\\PasswordReset;\r\nuse Illuminate\\Support\\Str;\r\n\r\nclass AuthenticationController extends Controller\r\n{\r\n    \/*************** FORGET PASSWORD **************\/\r\n    public function forgot_password(){\r\n        return view(\"auth.forgot-password\");\r\n    }\r\n    public function forgot_password_init(Request $request){\r\n\r\n         $request-&gt;validate(['email' =&gt; 'required|email']);\r\n        $status = Password::sendResetLink(\r\n            $request-&gt;only('email')\r\n        );\r\n        \r\n        return $status === Password::RESET_LINK_SENT\r\n                    ? back()-&gt;with('success',\"link sent to your email\")\r\n                    : back()-&gt;with('status', \"Email not found\");\r\n    }\r\n    public function reset_password($token){\r\n        return view('auth.reset-password', ['token' =&gt; $token]);\r\n    }\r\n\r\n    public function reset_password_init(Request $request){\r\n        $request-&gt;validate([\r\n            'token' =&gt; 'required',\r\n            'email' =&gt; 'required|email',\r\n            'password' =&gt; 'required|confirmed',\r\n        ]);\r\n \r\n        $status = Password::reset(\r\n        $request-&gt;only('email', 'password', 'password_confirmation', 'token'),\r\n            function ($user, $password) {\r\n                $user-&gt;forceFill([\r\n                    'password' =&gt; Hash::make($password)\r\n                ])-&gt;setRememberToken(Str::random(60));\r\n     \r\n                $user-&gt;save();\r\n     \r\n                event(new PasswordReset($user));\r\n            }\r\n        );\r\n        return $status === Password::PASSWORD_RESET\r\n                ? redirect()-&gt;route('login')-&gt;with('success', \"Password Updated Successfully\")\r\n                : back()-&gt;with('status', \"Not changed try again\");\r\n    }\r\n}\r\n<\/code><\/pre>","category_id":"2","is_private":"0","created_at":"2023-03-14T04:21:47.000000Z","updated_at":"2023-03-14T04:21:47.000000Z","category":{"id":2,"user_id":"1","name":"Laravel Core","slug":"laravel-nhyt","parent_id":"1","created_at":"2023-03-14T03:58:27.000000Z","updated_at":"2023-03-20T11:30:50.000000Z"},"user":{"id":1,"name":"R GONDAL","email":"rizikmw@gmail.com","email_verified_at":null,"two_factor_confirmed_at":null,"current_team_id":"1","profile_photo_path":null,"created_at":"2023-03-12T10:49:33.000000Z","updated_at":"2025-01-10T12:59:00.000000Z","profile_photo_url":"https:\/\/ui-avatars.com\/api\/?name=R+G&color=7F9CF5&background=EBF4FF"}},"pageDesc":"1. Goto mail trap make account and config your laravel app. https:\/\/mailtrap.io\/ 2. Make authentication controller php artisan make:model Au - Custom Login \/ Registration , forget Password in Laravel (Updated: March 14, 2023) - Read more about Custom Login \/ Registration , forget Password in Laravel at my programming site [SITE]","categories":[]}