Код: Выделить всё
namespace App\Http\Controllers;
use App\Models\Admin;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Tymon\JWTAuth\Facades\JWTAuth;
class AdminAuthController extends Controller
{
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (! $token = auth('admin')->attempt($credentials)) {
return response()->json(['error' => 'Unauthorized'], 401);
}
return $this->respondWithToken($token);
}
public function register(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:admins',
'password' => 'required|string|min:6',
]);
$admin = Admin::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = JWTAuth::fromUser($admin);
return response()->json(compact('admin', 'token'), 201);
}
protected function respondWithToken($token)
{
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth('admin')->factory()->getTTL() * 60
]);
}
public function fetch(){
// Check if the admin is authenticated
if (! Auth::guard('admin')->check()) {
return response()->json(['error' => 'Unauthorized'], 401);
} else {
// If authenticated, proceed
$data = Auth::guard('admin')->user(); // Use guard to get the admin data
return response()->json($data);
}
}
}
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable; // Important!
use Illuminate\Notifications\Notifiable;
use Tymon\JWTAuth\Contracts\JWTSubject; // For JWT support
class Admin extends Authenticatable implements JWTSubject
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
// This is needed for JWT
public function getJWTIdentifier()
{
return $this->getKey();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... lan-parmar