Skip to content

Commit

Permalink
BcAppController を削除
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuring committed Oct 25, 2023
1 parent b5a8b6d commit 6dd51c1
Show file tree
Hide file tree
Showing 10 changed files with 130 additions and 389 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
namespace BaserCore\Controller\Admin;

use Authentication\Controller\Component\AuthenticationComponent;
use BaserCore\Controller\BcAppController;
use BaserCore\Controller\AppController;
use BaserCore\Service\Admin\BcAdminAppServiceInterface;
use BaserCore\Service\SiteConfigsService;
use BaserCore\Service\SiteConfigsServiceInterface;
Expand All @@ -34,7 +34,7 @@
* Class BcAdminAppController
* @property AuthenticationComponent $Authentication
*/
class BcAdminAppController extends BcAppController
class BcAdminAppController extends AppController
{

/**
Expand Down
83 changes: 63 additions & 20 deletions plugins/baser-core/src/Controller/AppController.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use BaserCore\Annotation\Checked;
use BaserCore\Annotation\Note;
use BaserCore\Service\AppServiceInterface;
use BaserCore\Service\DblogsServiceInterface;
use BaserCore\Service\PermissionsServiceInterface;
use BaserCore\Utility\BcContainerTrait;
use BaserCore\Utility\BcSiteConfig;
Expand All @@ -37,6 +38,7 @@
use Cake\Http\ServerRequest;
use Cake\Utility\Hash;
use Cake\Utility\Inflector;
use Psr\Http\Message\ResponseInterface;

/**
* Class AppController
Expand All @@ -54,22 +56,23 @@ class AppController extends BaseController
use BcContainerTrait;

/**
* BcAppController constructor.
* AppController constructor.
* @param ServerRequest|null $request
* @param Response|null $response
* @param string|null $name
* @param EventManagerInterface|null $eventManager
* @param ComponentRegistry|null $components
* @return void|ResponseInterface
* @checked
* @noTodo
* @unitTest
*/
public function __construct(
?ServerRequest $request = null,
?Response $response = null,
?string $name = null,
?ServerRequest $request = null,
?Response $response = null,
?string $name = null,
?EventManagerInterface $eventManager = null,
?ComponentRegistry $components = null
?ComponentRegistry $components = null
)
{
parent::__construct($request, $response, $name, $eventManager, $components);
Expand All @@ -82,10 +85,10 @@ public function __construct(
if (!($request? $request->is('install') : false)) {
// app_local.php が存在しない場合は、CakePHPの Internal Server のエラー画面が出て、
// 原因がわからなくなるので強制的にコピーする
if($this->getName() === 'BcError' && !file_exists(CONFIG . 'app_local.php')) {
if ($this->getName() === 'BcError' && !file_exists(CONFIG . 'app_local.php')) {
copy(CONFIG . 'app_local.example.php', CONFIG . 'app_local.php');
// app_local.php が存在しない場合、.env もない可能性があるので確認
if(!file_exists(CONFIG . '.env')){
if (!file_exists(CONFIG . '.env')) {
copy(CONFIG . '.env.example', CONFIG . '.env');
}
}
Expand All @@ -105,7 +108,6 @@ public function __construct(
}
}
}

}

/**
Expand Down Expand Up @@ -137,13 +139,13 @@ public function initialize(): void
public function beforeFilter(EventInterface $event)
{
$response = parent::beforeFilter($event);
if($response) return $response;
if ($response) return $response;

// index.php をつけたURLの場合、base の値が正常でなくなり、
// 内部リンクが影響を受けておかしくなってしまうため強制的に Not Found とする
if(preg_match('/\/index\.php\//', $this->getRequest()->getAttribute('base'))) {
$this->notFound();
}
// index.php をつけたURLの場合、base の値が正常でなくなり、
// 内部リンクが影響を受けておかしくなってしまうため強制的に Not Found とする
if (preg_match('/\/index\.php\//', $this->getRequest()->getAttribute('base'))) {
$this->notFound();
}

if (!$this->getRequest()->is('requestview')) return;

Expand All @@ -160,21 +162,21 @@ public function beforeFilter(EventInterface $event)
return;
}

if(!$this->checkPermission()) {
if (!$this->checkPermission()) {
$prefix = BcUtil::getRequestPrefix($this->getRequest());
if ($prefix === 'Api/Admin') {
throw new ForbiddenException(__d('baser_core', '指定されたAPIエンドポイントへのアクセスは許可されていません。'));
} else {
if (BcUtil::loginUser()) {
if($this->getRequest()->getMethod() === 'GET') {
if ($this->getRequest()->getMethod() === 'GET') {
$this->BcMessage->setError(__d('baser_core', '指定されたページへのアクセスは許可されていません。'));
} else {
$this->BcMessage->setError(__d('baser_core', '実行した操作は許可されていません。'));
}
}
// リファラが存在する場合はリファラにリダイレクトする
// $this->referer() で判定した場合、リファラがなくてもトップのURLが返却されるため ServerRequest で判定
if($this->getRequest()->getEnv('HTTP_REFERER')) {
if ($this->getRequest()->getEnv('HTTP_REFERER')) {
$url = $this->referer();
} else {
$url = Configure::read("BcPrefixAuth.{$prefix}.loginRedirect");
Expand All @@ -200,7 +202,7 @@ public function beforeFilter(EventInterface $event)
private function checkPermission()
{
$user = BcUtil::loginUser();
if($user && $user->user_groups) {
if ($user && $user->user_groups) {
$userGroupsIds = Hash::extract($user->toArray()['user_groups'], '{n}.id');
} else {
$userGroupsIds = [];
Expand Down Expand Up @@ -292,8 +294,8 @@ protected function _autoConvertEncodingByArray($data, $outenc = 'UTF-8'): array
continue;
}
$inenc = mb_detect_encoding((string)$value);
if(!$inenc) continue;
if(!in_array($inenc, Configure::read('BcEncode.detectOrder'))) continue;
if (!$inenc) continue;
if (!in_array($inenc, Configure::read('BcEncode.detectOrder'))) continue;
if ($inenc === $outenc) continue;
// 半角カナは一旦全角に変換する
$value = mb_convert_kana($value, 'KV', $inenc);
Expand Down Expand Up @@ -533,4 +535,45 @@ public function notFound()
throw new NotFoundException(__d('baser_core', '見つかりませんでした。'));
}

/**
* データベースログを記録する
*
* @param string $message
* @return \Cake\Datasource\EntityInterface
* @checked
* @unitTest
* @noTodo
*/
protected function saveDblog($message)
{
$dblogsService = $this->getService(DblogsServiceInterface::class);
return $dblogsService->create(['message' => $message]);
}

/**
* Ajax用のエラーを出力する
*
* @param int $errorNo エラーのステータスコード
* @param mixed $message エラーメッセージ
* @return void
* @deprecated since 5.0.5 このメソッドは非推奨です。
* @checked
* @noTodo
*/
public function ajaxError(int $errorNo = 500, $message = '')
{
$this->response = $this->getResponse()->withStatus($errorNo);
if (!$message) return;
if (!is_array($message)) $message = [$message];
$aryMessage = [];
foreach($message as $value) {
if (is_array($value)) {
$aryMessage[] = implode('<br />', $value);
} else {
$aryMessage[] = $value;
}
}
echo implode('<br>', $aryMessage);
}

}
Loading

0 comments on commit 6dd51c1

Please sign in to comment.