Skip to content

Instantly share code, notes, and snippets.

View tobyokeke's full-sized avatar

Toby Okeke tobyokeke

View GitHub Profile
@tobyokeke
tobyokeke / api.php
Last active March 17, 2021 06:02
Laravel Multi-Auth
<?php
Route::group(['prefix' => 'v1'],function(){
//general unauthenticated routes here
Route::group(['prefix' => 'customer'],function(){
Route::post('sign-up','CustomerController@signUp');
//unauthenticated routes for customers here
<?php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
...
'scopes' => CheckForAllScopes::class,
];
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Auth\AuthenticationException;
class CheckForAllScopes
{
<?php
public function dashboard(Request $request) {
$customer = $request->user();
// the full object of the customer as containted in the able would
// be available now
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage;
use Laravel\Passport\HasApiTokens;
<?php
'providers' => [
'customer' => [
'driver' => 'eloquent',
'model' => App\customer::class,
],
'staff' => [
'driver' => 'eloquent',
'model' => App\staff::class,
<?php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
<?php
public function signIn(Request $request)
{
$email = $request->input('email');
$password = $request->input('password');
$rules = [
'email' => 'required|email:rfc,dns|max:255',
'password' => ['required'],
];
<?php
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensCan([
'staff' => 'Access Admin Backend',
'customer' => 'Access Customer App',
'role' => 'Description for role',
@tobyokeke
tobyokeke / Idempotency.php
Created April 24, 2020 12:34
Laravel Idempotency Middleware
<?php
namespace App\Http\Middleware;
use Carbon\Carbon;
use Closure;
use Illuminate\Support\Facades\Cache;
class Idempotency
{