servermgrv2/app/Controllers/Front/FrontController.php
2023-08-16 09:16:16 +09:00

70 lines
2.8 KiB
PHP

<?php
namespace App\Controllers\Front;
use App\Controllers\BaseController;
use App\Models\CategoryModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
abstract class FrontController extends BaseController
{
protected $_category = null;
private $_categoryModel = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->_viewPath = 'front/';
$this->_viewDatas['control'] = 'front';
$this->_viewDatas['layout'] = LAYOUTS['front'];
}
final protected function getCategoryModel(): CategoryModel
{
return $this->_categoryModel = $this->_categoryModel ?: new CategoryModel();
}
//권한체크
protected function isRole($action)
{
$this->_category ?: throw new \Exception("분류를 지정하지 않으셨습니다.");
$this->_viewDatas['category'] = $this->getCategoryModel()->getEntity([$this->getCategoryModel()->getPrimaryKey() => $this->_category]);
$this->_viewDatas['parent_category'] = $this->getCategoryModel()->getEntity([$this->getCategoryModel()->getPrimaryKey() => $this->_viewDatas['category']->getHierarchy_ParentUID()]);
switch ($action) {
case 'insert':
$category_field = getenv("category.role.{$action}") ?: 'iswrite';
break;
case 'reply':
$category_field = getenv("category.role.{$action}") ?: 'isreply';
break;
case 'view':
$category_field = getenv("category.role.{$action}") ?: 'isread';
break;
case 'upload':
$category_field = getenv("category.role.{$action}") ?: 'isupload';
break;
case 'download':
$category_field = getenv("category.role.{$action}") ?: 'isdownload';
break;
default:
$category_field = getenv("category.role.{$action}") ?: 'isdaccess';
break;
}
//사용자가 Category에서 해당 게시판의 해당권한이 있는지 확인
if (!isRole_CommonHelper(
$this->_viewDatas['currentRoles'],
$this->_viewDatas['category'],
$category_field,
)) {
// echo var_export($this->_viewDatas['currentRoles'], true);
// echo "<HR>";
// echo var_export($this->_viewDatas['category'], true);
// echo "<HR>";
// echo "field->", $action . ":" . $category_field;
// exit;
throw new \Exception("고객님은 " . lang("Category.label." . $category_field) . "이 없습니다.");
}
}
}