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();
}
}
}
это код, помогающий добавить аутентификацию jwt в ваш проект laravel
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', ]);
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;
// This is needed for JWT public function getJWTIdentifier() { return $this->getKey(); } } } [/code] это код, помогающий добавить аутентификацию jwt в ваш проект laravel