96 lines
3.7 KiB
PHP
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());
|
|
}
|
|
}
|
|
}
|