Files
sccs_laravel/app/Http/Controllers/Api/Student/AuthController.php
2025-11-04 16:23:40 +05:00

96 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers\Api\Student;
use App\Http\Controllers\Controller;
use App\Http\Resources\BannerResource;
use App\Http\Resources\CategoryResource;
use App\Http\Resources\CourseResource;
use App\Http\Resources\SettingResource;
use App\Http\Resources\TransactionResource;
use App\Http\Resources\UserResource;
use App\Models\Banner;
use App\Models\Category;
use App\Models\Setting;
use App\Models\User;
use App\Notifications\EmailVerification;
use App\Traits\ApiResponseHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Validator;
class AuthController extends Controller
{
use ApiResponseHelper;
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => ['required', 'email'],
'password' => ['required', 'min:6'],
]);
if ($validator->fails()) {
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
}
try {
$user = User::where('email', $request->email)->where('role', 'STUDENT')->first();
if (!$user || !Hash::check($request->password, $user->password)) {
$message = 'The provided credentials are incorrect.';
return $this->apiResponse(false, $message);
}
if ($user->status != 1){
return $this->apiResponse(false, 'You account is not activated', [], 401);
}
$token = $user->createToken($user->email)->plainTextToken;
$banners = Banner::where('status', true)->latest()->take(config('custom.HOME_RECORD_LIMIT'))->get();
$categories = Category::where('status', true)->latest()->take(config('custom.HOME_RECORD_LIMIT'))->get();
$courses = $user->courses;
$transactions = $user->transactions;
$settings = Setting::first();
$data = collect([
'student' => new UserResource($user),
'banners' => BannerResource::collection($banners),
'courseCategories' => CategoryResource::collection($categories),
'courses' => CourseResource::collection($courses),
'transactions' => TransactionResource::collection($transactions),
'settings' => new SettingResource($settings),
'token' => $token
]);
$message = 'Authorized successfully';
return $this->apiResponse(true, $message, $data);
} catch (\Throwable $exception) {
return $this->apiResponse(false, $exception->getMessage());
}
}
public function resetPassword(Request $request){
$validator = Validator::make($request->all(), [
'email' => ['required', 'email'],
]);
if ($validator->fails()) {
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
}
try {
$user = User::where('email', $request->email)->first();
if (!$user){
return $this->apiResponse(false, 'No user found');
}
$token = encrypt($user->email);
$route = route('password.reset',['token'=>$token]);
$data = [
'name'=>$user->name,
'route'=>$route
];
$status = Password::sendResetLink($user->email);
// $user->notify(new EmailVerification($data));
$message = 'Check your email to rest your password';
return $this->apiResponse(true, $message);
} catch (\Throwable $exception) {
return $this->apiResponse(false, $exception->getMessage());
}
}
}