ikechukwukalu/requirepin

A laravel package for pin confirmation and validation before processing requests to a specified route

v2.0.2 2024-06-18 11:11 UTC

README

Latest Version on Packagist Quality Score Code Quality Known Vulnerabilities Github Workflow Status Total Downloads GitHub Repo stars GitHub issues GitHub forks Licence

A simple Laravel package that provides a middleware which will require users to confirm routes utilizing their pin for authentication.

REQUIREMENTS

  • PHP 7.3+
  • Laravel 8+

STEPS TO INSTALL

composer require ikechukwukalu/requirepin
  • php artisan vendor:publish --tag=rp-migrations
  • php artisan migrate
  • Set REDIS_CLIENT=predis and QUEUE_CONNECTION=redis within your .env file.
  • php artisan queue:work

ROUTES

Api routes

  • POST api/change/pin
  • POST api/pin/required/{uuid}

Web routes

  • POST change/pin
  • POST pin/required/{uuid}
  • GET change/pin
  • GET pin/required/{uuid?}

NOTE

  • To receive json response add 'Accept': 'application/json' to your headers.

HOW IT WORKS

  • First, it's like eating candy.
  • The require.pin middlware should be added to a route or route group.
  • This middleware will arrest all incoming requests.
  • A temporary URL (pin/required/{uuid}) is generated for a user to authenticate with the specified input config(requirepin.input) using their pin.
  • It either returns a JSON response with the generated URL or it redirects to a page where a user is required to authenticate the request by entering their pin into a form that will send a POST request to the generated URL when submitted.
  • To display return payload within blade:
@if (session('return_payload'))
    @php
        [$status, $status_code, $data] = json_decode(session('return_payload'), true);
    @endphp
    <div class="alert alert-{!! $status === 'fail' ? 'danger' : 'success' !!} m-5 text-center">
        {!! $data['message'] !!}
    </div>
@endif

Reserved keys for payload

  • _uuid
  • _pin
  • expires
  • signature
  • return_payload
  • pin_validation

PUBLISH CONFIG

  • php artisan vendor:publish --tag=rp-config

PUBLISH LANG

  • php artisan vendor:publish --tag=rp-lang

PUBLISH VIEWS

  • php artisan vendor:publish --tag=rp-views

LICENSE

The RP package is an open-sourced software licensed under the MIT license.