Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mohammadkhallaf's avatar

make the system require the email and password when request a route

when click in this button i want the system require the email and the password how to do that


  <li class="nav-item">
                        <a href="{{ route('admin.employee') }}" class="nav-link">
                            <i class="fa fa-file-invoice-dollar"></i>
                            <p> الموظفين
                                <span class="right badge badge-danger">{{ App\Models\Transaction::count() }}</span>

                            </p>
                        </a>
    
                </li>

this is the controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
class EmployeeController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $employees =User::all();
        return view('admin.employee.index', compact('employees'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

this button also

<li class="nav-item" >

            <li class="nav-item">
                <a href="{{ route('admin.transaction.create') }}" >
                    <button type="button" class="btn btn-info">اضافة دفعات مالية
                    </button>
            </li>

<?php

namespace App\Http\Controllers;

use App\Models\Finance;

use App\Models\Transaction;
use DB;
use Illuminate\Http\Request;

class TransactionController extends Controller
{
    public function index()
    {
        $transactions = Transaction::all();
        return view('admin.transaction.index', compact('transactions'));
    }

    public function create()
    {
        return view('admin.transaction.create');
    }

    public function store(Request $request)
    {
        $this->validate($request, [
            'finance_id' => "required|exists:finances,id",
            'payment' => "required|integer",
            'date' => "required",

        ]);
        DB::transaction(function () use ($request) {
            $transaction = Transaction::create([
                'finance_id'=> $request->finance_id,
                'payment' => $request->payment,
                'date' => $request->date,
                'note' => $request->note
            ]);
            Finance::where('id', $request->finance_id)
                ->decrement('remaining', $request->payment);
        });

        return redirect()->route('admin.transaction')->with('success', 'تم اضافة دفعة جديدة بنجاح');
    }

    public function edit(Transaction $transaction)
{
    return view('admin.transaction.edit',compact('transaction'));
}

    public function update(Request $request, Transaction $transaction)
    {
        $this->validate($request, [
            'finance_id' => "required|exists:finances,id",
            'payment' => "required|integer",
            'date' => "required|date",

        ]);

        $transaction->update([
            'finance_id'=> $request->finance_id,
            'payment' => $request->payment,
            'date' => $request->date,
            'note' => $request->note
        ]);

        return redirect()->route('admin.transaction')->with('success', 'تم التعديل بنجاح');
    }

    public function destroy($id)
    {
        $transaction = Transaction::findOrFail($id);
        $transaction->delete();
        return redirect()->route('admin.transaction')->with('message', 'تم الحذف بنجاح');
    }
}

0 likes
9 replies
Ashraam's avatar

Are you using Laravel Fortify to authenticate the users ?

If yes then there is a password confirmation middleware (https://laravel.com/docs/9.x/fortify#password-confirmation)

If not you should probably create a middleware that redirect to a password verification page with the request url to redirect the user if the password verification was a success.

mohammadkhallaf's avatar

@Ashraam how to do this in code

If not you should probably create a middleware that redirect to a password verification page with the request url to redirect the user if the password verification was a success.



...
Ashraam's avatar

@mohammadkhallaf first of all check in the app/Http/Kernel.php if you have the password.confirm middleware (this middleware is shipped with recent laravel version) then use it ^^

1 like
mohammadkhallaf's avatar

@Ashraam

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array<int, class-string|string>
     */
    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Illuminate\Http\Middleware\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array<string, array<int, class-string|string>>
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array<string, class-string|string>
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \App\Http\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'is_admin' => isAdminMiddleware::class

    ];
}

mohammadkhallaf's avatar

@Ashraam how to use it in the controller ?


<?php

namespace App\Http\Controllers;

use App\Models\Transaction;
use App\Models\Test;

use App\Models\Finance;
use Illuminate\Http\Request;
use App\Models\Customer;

class FinanceController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $finances = Finance::all();
        return view('admin.finance.index', compact('finances'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.finance.create');
    }


    public function store(Request $request)
    {
        $this->validate($request, [

            'customer_id' => 'required|exists:customers,personal_id',
            'test_id' => 'required|exists:tests,id',
            'amount' => 'required|integer',
            'date' => 'required'
        ]);

        $finances = Finance::create([
            'customer_id' => Customer::where('personal_id', $request->customer_id)->first()->id,
            'test_id' => $request->test_id,
            'date' => $request->date,
            'amount' => $request->amount,
            'remaining' =>  $request->id ,
            'note' => $request->note ,

        ]);

        return redirect()->back()->with('success', 'تم اضافة معلومات مالية جديدة');

    }




    public function edit(Finance $finance,$id)
    {
        $finance = Finance::find($id);
        return view('admin.finance.edit',compact('finance'));
    }


    public function update(Request $request,Finance $finances,$id)
    {
        $this->validate($request, [
            'customer_id' => 'required|exists:customers,personal_id',
            'test_id' => 'required|exists:tests,id',
            'amount' => 'required|integer',
            'date' => 'required'
        ]);
        $test = Test::findOrFail($request->id);

        $finances ->update([
                    'customer_id' => $finances->customer->id,
                    'test_id' => $test->id,
                    'date' => $request->date,
                   'amount'=>$request->amount,
                   'remaining'=>$request->amount-$test->payment,
                   'note'=>$request->note
                ]); dd($request);
        return redirect()->route('admin.finance')->with('success', 'تم تحديث معلومات مالية جديدة');


    }

    public function destroy($id)
    {
        $finance = Finance::findOrFail($id);
        $finance->delete();
        return redirect()->route('admin.finance')->with('message', 'تم الحذف بنجاح');
    }
}

Ashraam's avatar
Ashraam
Best Answer
Level 41

@mohammadkhallaf well you have it, so use it on your route like this

Route::get('/whatever', [MyController::class, 'index'])->middleware('password.confirm');

Please or to participate in this conversation.