175 lines
4.6 KiB
PHP
Executable File
175 lines
4.6 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Admin\app\Http\Controllers;
|
|
|
|
use App\Helper\Cache\CustomThemeCacheHelper;
|
|
use App\Helper\Cache\SettingCacheHelper;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Contact;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Mail\Mailable;
|
|
use Illuminate\Support\Facades\Config;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Str;
|
|
use Modules\Admin\app\Emails\ForgotPasswordMail;
|
|
use Modules\Admin\app\Emails\ResetPasswordMail;
|
|
use Modules\Admin\app\Models\Admin;
|
|
use Modules\Admin\app\Models\Banner;
|
|
use Modules\Admin\app\Models\CustomTheme;
|
|
use Modules\Admin\app\Models\Setting;
|
|
use Modules\Admin\app\Rules\PasswordRule;
|
|
use Tymon\JWTAuth\Facades\JWTAuth;
|
|
|
|
class AdminController extends Controller
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
Config::set('auth.guards.api.provider', 'admin');
|
|
}
|
|
|
|
protected function respondWithToken()
|
|
{
|
|
$token = Admin::getTokenByAuth();
|
|
return response()->json([
|
|
'expires_in' => JWTAuth::setToken($token)->getPayload()->get('exp'),
|
|
'token' => $token,
|
|
'user' => auth('admins')->user(),
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function login(Request $request)
|
|
{
|
|
$email = $request->get('email');
|
|
$password = $request->get('password');
|
|
$admin = Admin::where('email', $email)->first();
|
|
if ($admin && Hash::check($password, $admin->password)) {
|
|
auth('admins')->login($admin);
|
|
return $this->respondWithToken();
|
|
}
|
|
|
|
return response()->json([
|
|
'message' => 'Incorrect email or password.',
|
|
'status' => false
|
|
], 400);
|
|
}
|
|
|
|
public function register()
|
|
{
|
|
}
|
|
|
|
public function forgotPassword(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'email' => 'required|email'
|
|
]);
|
|
|
|
$admin = Admin::where('email', $request->get('email'))->first();
|
|
if ($admin) {
|
|
$admin->update([
|
|
'forgot_code' => Str::random()
|
|
]);
|
|
|
|
Mail::send(new ForgotPasswordMail(
|
|
name: $admin->name,
|
|
email: $admin->email,
|
|
forgot_code: $admin->forgot_code
|
|
));
|
|
}
|
|
|
|
return response()->json([
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function resetPassword(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'forgot_code' => 'required|exists:admin',
|
|
'new_password' => new PasswordRule,
|
|
'confirm_password' => 'same:new_password'
|
|
]);
|
|
|
|
$admin = Admin::where('forgot_code', $request->get('forgot_code'))->first();
|
|
if ($admin) {
|
|
$admin->update([
|
|
'password' => bcrypt($request->get('new_password')),
|
|
'forgot_code' => null
|
|
]);
|
|
|
|
Mail::send(new ResetPasswordMail(
|
|
name: $admin->name,
|
|
email: $admin->email,
|
|
));
|
|
|
|
return response()->json([
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
|
|
return response()->json([
|
|
'status' => false
|
|
]);
|
|
}
|
|
|
|
public function changePassword(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'password' => 'required',
|
|
'new_password' => new PasswordRule,
|
|
'confirm_password' => 'same:new_password'
|
|
]);
|
|
|
|
$admin = auth('admins')->user();
|
|
if (!Hash::check($request->get('password'), $admin->password)) {
|
|
// Fail check old password
|
|
return response()->json([
|
|
'errors' => [
|
|
'password' => [
|
|
'The old password is incorrect'
|
|
]
|
|
],
|
|
], 400);
|
|
}
|
|
|
|
$admin->update([
|
|
'password' => bcrypt($request->get('new_password')),
|
|
'forgot_code' => null
|
|
]);
|
|
|
|
Mail::send(new ResetPasswordMail(
|
|
name: $admin->name,
|
|
email: $admin->email,
|
|
));
|
|
|
|
return response()->json([
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function detail()
|
|
{
|
|
return response()->json([
|
|
'user' => auth('admins')->user(),
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function logout()
|
|
{
|
|
$user = auth('admins')->user();
|
|
auth('admins')->logout();
|
|
|
|
return response()->json([
|
|
'status' => true,
|
|
'user' => $user
|
|
]);
|
|
}
|
|
}
|