Check Laravel logs for the 500 error
Dec 18, 2023
7
Level 1
Issue with logout a user form custom middleware.
I have created a custom Middleware for my Offerwall users.
Offerwall Middleware.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Offerwall
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (Auth::guard('offerwall')->check()) {
return $next($request);
}
return response()->json(['error' => 'Unauthenticated'], 401);
}
}
in Kernel.php
'offerwall' => [
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
protected $routeMiddleware = [
//other middleware
'offerwall' => \App\Http\Middleware\OfferwallMiddleware::class,
];
In config/auth
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'offerwall' => [
'driver' => 'session',
'provider' => 'offerwalls',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'offerwalls' => [
'driver' => 'eloquent',
'model' => App\Models\OfferwallUsers::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
In api.php i have
Route::middleware('offerwall')->group(function () {
Route::get('/redirect/offer/{api}/{user}/{oid}', [OfferwallController::class, 'redirect']);
//Route::post('/wallstatus', [OfferwallController::class, 'wallstatus']);
Route::get('/offers', [OfferwallController::class, 'offers']);
Route::post('/wall_logout', [OfferwallController::class, 'logout']);
});
And in Offerwall Controller
public function logout(Request $request){
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return response()->json(['success' => 'Offerwall User logget Out.']);
}
protected function guard()
{
return Auth::guard('offerwall');
}
Also this is my Offerwalll User Model
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\Authenticatable;
//use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
//use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
//use Laravel\Sanctum\HasApiTokens;
//class OfferwallUsers extends Model
class OfferwallUsers extends Model implements Authenticatable
//class OfferwallUsers extends Authenticatable
{
use Notifiable;
protected $guard = 'offerwall';
protected $fillable = [
'name',
'email',
'password',
'points',
'p_points',
];
protected $hidden = [
'password',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
public function getAuthIdentifierName()
{
return 'id';
}
public function getAuthIdentifier()
{
return $this->getKey();
}
public function getAuthPassword()
{
return $this->password;
}
public function getRememberToken()
{
return $this->getRememberToken();
}
public function setRememberToken($value)
{
$this->remember_token = $value;
}
public function getRememberTokenName()
{
return 'remember_token';
}
}
My issue is that i cant logout the offerwall user , when i try to logout i get app.js:20900
POST http://127.0.0.1:8000/api/wall_logout 500 (Internal Server Error) and blank white page in Console->preview. Please help me. Thank you.
Please or to participate in this conversation.