servermgrv2/app/Filters/AuthFilter.php
2023-07-19 20:59:23 +09:00

65 lines
2.3 KiB
PHP

<?php
namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class AuthFilter implements FilterInterface
{
/**
* Do whatever processing this filter needs to do.
* By default it should not return anything during
* normal execution. However, when an abnormal state
* is found, it should return an instance of
* CodeIgniter\HTTP\Response. If it does, script
* execution will end and that Response will be
* sent back to the client, allowing for error pages,
* redirects, etc.
*
* @param RequestInterface $request
* @param array|null $arguments
*
* @return mixed
*/
public function before(RequestInterface $request, $arguments = null)
{
//dd($request);exit;
if (!session()->get(LOGINS['ISLOGIN'])) {
session()->set(LOGINS['RETURN_URL'], $request->getUri()->getPath() . '?' . $request->getUri()->getQuery());
$error = session()->getFlashdata('error') ? session()->getFlashdata('error') : '먼저 로그인을하셔야합니다.';
return redirect()->to('/login')->with('error', $error);
}
if (!in_array(session()->get(LOGINS['USER']['NAME'])['role'], $arguments)) {
return redirect()->to('/login')->with(
'error',
sprintf(
"%s 회원님은 %s로서 접속에 필요한 권한[%s]이 없습니다. ",
session()->get(LOGINS['USER']['NAME'])[LOGINS['USER']['FIELDS']['TITLE']],
session()->get(LOGINS['USER']['NAME'])[LOGINS['USER']['FIELDS']['ROLE']],
implode(",", $arguments)
)
);
}
}
/**
* Allows After filters to inspect and modify the response
* object as needed. This method does not allow any way
* to stop execution of other after filters, short of
* throwing an Exception or Error.
*
* @param RequestInterface $request
* @param ResponseInterface $response
* @param array|null $arguments
*
* @return mixed
*/
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
//
}
}