cfmgrv4/app/Controllers/AuthController.php
2024-09-27 19:44:50 +09:00

59 lines
1.9 KiB
PHP

<?php
namespace App\Controllers;
use App\Entities\UserEntity;
use App\Models\UserModel;
class AuthController extends CommonController
{
public function login()
{
helper(['form']);
$viewDatas = [
'layout' => LAYOUTS['empty'],
'title' => '로그인',
'forms' => [
'attributes' => ['action' => 'post', 'class' => 'row g-3'],
'hiddens' => [SESSION_NAMES['RETURN_URL'] => session()->get(SESSION_NAMES['RETURN_URL'])],
]
];
return view('auth/login', $viewDatas);
}
public function signin()
{
$id = $this->request->getVar('id');
$passwd = $this->request->getVar('passwd');
$model = new UserModel();
$user = $model->asObject(UserEntity::class)->where('id', $id)->first();
if (is_null($user) || !isset($user->passwd)) {
session()->setFlashdata('error', "사용자ID: {$id}가 존재하지 않습니다.");
return redirect()->back()->withInput();
}
if (password_verify($passwd, $user->passwd)) {
//Session에 Login 정보전달
$authData = [
'uid' => $user->uid,
'name' => $user->name,
'email' => $user->email,
'role' => $user->role,
SESSION_NAMES['ISLOGIN'] => true
];
session()->set($authData);
return redirect()->to($this->request->getVar(SESSION_NAMES['RETURN_URL']) ? $this->request->getVar(SESSION_NAMES['RETURN_URL']) : "/");
} else {
session()->setFlashdata('error', '암호가 맞지 않습니다.');
return redirect()->back()->withInput();
}
}
public function logout()
{
//Session에 Login 정보 삭제
session()->set([SESSION_NAMES['ISLOGIN'] => false]);
session_destroy();
return redirect()->route('/');
}
}