Recaptcha Guide
Recaptcha Guide
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title')</title>
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH"
crossorigin="anonymous">
</head>
<body>
<div class="container">
@yield('content')
</div>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
crossorigin="anonymous"></script>
</body>
</html>
REGISTRAION PAGE
@extends('layout.asset')
@section('title', 'Registration Page')
@section('content')
@error('mail')
<div class="text-danger">{{$message}}</div>
@enderror
<div class="mb-3">
{!!NoCaptcha::renderJs()!!}
{!!NoCaptcha::display()!!}
@error('g-recaptcha-response')
<div class="text-danger">{{ $message }}
@enderror
<br>
<input type="submit" class="form-control btn btn-primary"
id="password" value="Create Account"></form>
</div>
<i style="text-align: right">Already have an account? <a
href="{{ route('login') }}">Login here</a></i>
</div>
</div>
<div class="col-sm-4">
</div>
</div>
LOGIN PAGE
@extends('layout.asset')
@section('title', 'Login Page')
@section('content')
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@if(session('error'))
<div class="alert alert-danger">
{{ session('error') }}
</div>
@endif
<div class="row mt-4">
<div class="col-sm-4">
</div>
<div class="col-sm-4">
<br>
<br>
<div class="card p-3">
<div class="mb-3">
<form action="{{ ('loginprocess') }}" method="POST">
<h2>Login</h2>
@csrf
<label for="email" class="form-lable">Email address</label>
<input type="email" class="form-control" name="email"
id="email" placeholder="[email protected]" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" name="password"
id="password" placeholder="********" required>
@error('password')
<div class="text-danger">{{ $message }} </div>
@enderror
</div>
<div class="mb-3">
{!!NoCaptcha::renderJs()!!}
{!!NoCaptcha::display()!!}
@if($errors->has('g-recaptcha-response'))
<div class="alert alert-danger">
{{ $errors->first('g-recaptcha-response') }}
</div>
@endif
<br>
<input type="submit" class="form-control btn btn-primary"
id="login" value="Login">
</form>
</div>
<i style="text-align: right">Don't have an account?<a
href="{{ route('register') }}"> Create account</a></i>
</div>
</div>
<div class="col-sm-4">
</div>
</div>
@endsection
@endsection
3. Mange routes
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
Route::middleware(['auth'])->group(function(){
Route::middleware(['auth', 'roles:admin'])->group(function(){
4. Create database
5. add users in the migrations
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('contact');
$table->string('password');
$table->timestamps();
});
6. Add roles to users table. "php artisan make:migration add_roles_to_user_table"
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('roles');
});
}
};
namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckAdmin
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\
HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next, $role): Response
{
if(!Auth::check()){
return redirect()->route('login');
}
$user = Auth::user();
if($user && $user->roles === $role){
return $next($request);
}
return redirect('/login')->with('error', 'Access Denied Admins only');
}
}
12. Install the recaptcha package in your larvel. "composer require anhskohbo/no-
captcha"