Files
nexusphp/app/Http/Controllers/AuthenticateController.php

64 lines
1.8 KiB
PHP
Raw Normal View History

2021-04-23 01:28:41 +08:00
<?php
namespace App\Http\Controllers;
use App\Http\Resources\ExamResource;
use App\Http\Resources\UserResource;
use App\Models\Setting;
2022-07-06 13:10:22 +08:00
use App\Models\User;
2021-04-23 01:28:41 +08:00
use App\Repositories\AuthenticateRepository;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Auth;
2022-07-06 13:10:22 +08:00
use Illuminate\Support\Facades\Cookie;
2021-04-23 01:28:41 +08:00
class AuthenticateController extends Controller
{
private $repository;
public function __construct(AuthenticateRepository $repository)
{
$this->repository = $repository;
}
public function login(Request $request)
{
$request->validate([
'username' => 'required',
'password' => 'required',
]);
$result = $this->repository->login($request->username, $request->password);
$includes = explode(',', $request->get('include', ''));
if (in_array('site_info', $includes)) {
$basic = Setting::get('basic');
$result['site_info'] = [
'site_name' => $basic['SITENAME'],
];
}
2021-04-23 01:28:41 +08:00
return $this->success($result);
}
public function logout(Request $request)
{
$result = $this->repository->logout(Auth::id());
return $this->success($result);
}
2022-07-06 13:10:22 +08:00
public function passkeyLogin($passkey)
{
2022-07-06 15:23:23 +08:00
$deadline = Setting::get('security.login_secret_deadline');
if ($deadline && $deadline > now()->toDateTimeString()) {
$user = User::query()->where('passkey', $passkey)->first(['id', 'passhash']);
if ($user) {
$passhash = md5($user->passhash . $_SERVER["REMOTE_ADDR"]);
2022-08-25 21:45:55 +08:00
logincookie($user->id, $passhash,false, 86400 * 30, true, true, true);
2022-07-06 15:23:23 +08:00
$user->last_login = now();
$user->save();
}
2022-07-06 13:10:22 +08:00
}
return redirect('index.php');
}
2021-04-23 01:28:41 +08:00
}