Merge pull request #452 from conory/pr/seo

시스템 에러 메세지를 출력할 경우 403 HTTP 코드로 설정
This commit is contained in:
CONORY 2016-04-20 17:09:35 +09:00
commit ea0e550ba1
14 changed files with 70 additions and 41 deletions

View file

@ -1524,7 +1524,6 @@ class Context
if ($status != 200)
{
$oMessageObject->setHttpStatusCode($status);
ModuleHandler::_setHttpStatusMessage($status);
}
if (in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK')))

View file

@ -83,7 +83,7 @@ class DisplayHandler extends Handler
// header output
$httpStatusCode = $oModule->getHttpStatusCode();
if($httpStatusCode && $httpStatusCode != 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK')))
if($httpStatusCode !== 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK')))
{
self::_printHttpStatusCode($httpStatusCode);
}

View file

@ -207,6 +207,20 @@ class ModuleHandler extends Handler
{
unset($module_info);
}
// if the secret document permission does not have, specify HTTP 403
if(Context::getRequestMethod() == 'GET')
{
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($this->document_srl);
if($oDocument->isSecret() || $oDocument->get('status') === $oDocumentModel->getConfigStatus('temp'))
{
if(!$oDocument->isGranted() && !$oDocument->isAccessible())
{
$this->httpStatusCode = '403';
}
}
}
}
}
@ -632,7 +646,7 @@ class ModuleHandler extends Handler
{
self::_setInputErrorToContext();
$this->error = 'msg_is_not_administrator';
$this->error = 'admin.msg_is_not_administrator';
$oMessageObject = self::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
@ -646,7 +660,7 @@ class ModuleHandler extends Handler
if(!$grant->manager)
{
self::_setInputErrorToContext();
$this->error = 'msg_is_not_administrator';
$this->error = 'admin.msg_is_not_administrator';
$oMessageObject = self::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
@ -658,7 +672,7 @@ class ModuleHandler extends Handler
if(!$grant->is_admin && $this->module != $this->orig_module->module && $xml_info->permission->{$this->act} != 'manager')
{
self::_setInputErrorToContext();
$this->error = 'msg_is_not_administrator';
$this->error = 'admin.msg_is_not_administrator';
$oMessageObject = self::getModuleInstance('message', $display_mode);
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
@ -897,7 +911,6 @@ class ModuleHandler extends Handler
$methodList = array('XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1);
if(!isset($methodList[Context::getRequestMethod()]))
{
if($_SESSION['XE_VALIDATOR_RETURN_URL'])
{
header('location: ' . $_SESSION['XE_VALIDATOR_RETURN_URL']);
@ -914,24 +927,25 @@ class ModuleHandler extends Handler
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
if($oMessageObject->getHttpStatusCode() && $oMessageObject->getHttpStatusCode() != '200')
// display Error Page
if(!in_array($oMessageObject->getHttpStatusCode(), array(200, 403)))
{
self::_setHttpStatusMessage($oMessageObject->getHttpStatusCode());
$oMessageObject->setTemplateFile('http_status_code');
}
// If module was called normally, change the templates of the module into ones of the message view module
if($oModule)
{
$oModule->setTemplatePath($oMessageObject->getTemplatePath());
$oModule->setTemplateFile($oMessageObject->getTemplateFile());
$oModule->setHttpStatusCode($oMessageObject->getHttpStatusCode());
// Otherwise, set message instance as the target module
}
else
{
$oModule = $oMessageObject;
}
self::_clearErrorSession();
}
@ -1049,7 +1063,16 @@ class ModuleHandler extends Handler
}
}
}
// Set http status code
if($this->httpStatusCode && $oModule->getHttpStatusCode() === 200)
{
$oModule->setHttpStatusCode($this->httpStatusCode);
}
// Set http status message
self::_setHttpStatusMessage($oModule->getHttpStatusCode());
// Display contents
$oDisplayHandler = new DisplayHandler();
$oDisplayHandler->printContent($oModule);

View file

@ -191,7 +191,7 @@ class ModuleObject extends Object
{
case 'root' :
case 'manager' :
$this->stop('msg_is_not_administrator');
$this->stop('admin.msg_is_not_administrator');
return;
case 'member' :
if(!$is_logged)
@ -236,7 +236,8 @@ class ModuleObject extends Object
$this->setTemplatePath($oMessageObject->getTemplatePath());
$this->setTemplateFile($oMessageObject->getTemplateFile());
$this->setHttpStatusCode($oMessageObject->getHttpStatusCode());
return $this;
}

View file

@ -31,7 +31,7 @@ class Object
* http status code.
* @var int
*/
var $httpStatusCode = NULL;
var $httpStatusCode = 200;
/**
* Constructor
@ -73,9 +73,9 @@ class Object
* @param int $code HTTP status code. Default value is `200` that means successful
* @return void
*/
function setHttpStatusCode($code = '200')
function setHttpStatusCode($code = 200)
{
$this->httpStatusCode = $code;
$this->httpStatusCode = (int) $code;
}
/**

View file

@ -203,7 +203,7 @@
// If the response contains an error, display the error message.
if(data.error != "0" && data.error > -1000) {
if(data.error == -1 && data.message == "msg_is_not_administrator") {
if(data.error == -1 && data.message == "admin.msg_is_not_administrator") {
alert("You are not logged in as an administrator.");
if ($.isFunction(callback_error)) {
callback_error(data);

View file

@ -22,7 +22,7 @@ class adminAdminController extends admin
$logged_info = $oMemberModel->getLoggedInfo();
if($logged_info->is_admin != 'Y')
{
return $this->stop("msg_is_not_administrator");
return $this->stop("admin.msg_is_not_administrator");
}
}

View file

@ -40,7 +40,7 @@ class adminAdminView extends admin
$logged_info = $oMemberModel->getLoggedInfo();
if($logged_info->is_admin != 'Y')
{
return $this->stop("msg_is_not_administrator");
return $this->stop("admin.msg_is_not_administrator");
}
// change into administration layout

View file

@ -23,7 +23,7 @@ class adminloggingController extends adminlogging
$logged_info = $oMemberModel->getLoggedInfo();
if($logged_info->is_admin != 'Y')
{
return $this->stop("msg_is_not_administrator");
return $this->stop("admin.msg_is_not_administrator");
}
}

View file

@ -1136,9 +1136,9 @@ class boardView extends board
**/
function dispBoardMessage($msg_code)
{
$msg = lang($msg_code);
if(!$msg) $msg = $msg_code;
Context::set('message', $msg);
Context::set('message', lang($msg_code));
$this->setHttpStatusCode(403);
$this->setTemplateFile('message');
}
@ -1189,7 +1189,9 @@ class boardView extends board
function alertMessage($message)
{
$script = sprintf('<script> jQuery(function(){ alert("%s"); } );</script>', lang($message));
Context::addHtmlFooter( $script );
Context::addHtmlFooter($script);
$this->setHttpStatusCode(403);
}
}

View file

@ -20,12 +20,15 @@ class messageMobile extends messageView
$config = $oModuleModel->getModuleConfig('message');
if(!is_object($config)) $config = new stdClass;
if(!$config->mskin) $config->mskin = 'default';
// Set the template path
$template_path = sprintf('%sm.skins/%s', $this->module_path, $config->mskin);
// Get the member configuration
$oModuleModel = getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
Context::set('member_config', $member_config);
// Set a flag to check if the https connection is made when using SSL and create https url
$ssl_mode = false;
if($member_config->enable_ssl == 'Y')
@ -41,6 +44,12 @@ class messageMobile extends messageView
$this->setTemplatePath($template_path);
$this->setTemplateFile('system_message');
// Default 403 Error
if($this->getHttpStatusCode() === 200)
{
$this->setHttpStatusCode(403);
}
}
}
/* End of file message.mobile.php */

View file

@ -31,27 +31,16 @@ class messageView extends message
if(!$config->skin)
{
$config->skin = 'xedition';
$template_path = sprintf('%sskins/%s', $this->module_path, $config->skin);
}
else
{
//check theme
$config_parse = explode('|@|', $config->skin);
if (count($config_parse) > 1)
{
$template_path = sprintf('./themes/%s/modules/message/', $config_parse[0]);
}
else
{
$template_path = sprintf('%sskins/%s', $this->module_path, $config->skin);
}
}
$template_path = sprintf('%sskins/%s', $this->module_path, $config->skin);
// Template path
$this->setTemplatePath($template_path);
// Get the member configuration
$member_config = $oModuleModel->getModuleConfig('member');
Context::set('member_config', $member_config);
// Set a flag to check if the https connection is made when using SSL and create https url
$ssl_mode = false;
if($member_config->enable_ssl == 'Y')
@ -64,6 +53,12 @@ class messageView extends message
Context::set('system_message_detail', nl2br($detail));
$this->setTemplateFile('system_message');
// Default 403 Error
if($this->getHttpStatusCode() === 200)
{
$this->setHttpStatusCode(403);
}
}
}
/* End of file message.view.php */

View file

@ -11,7 +11,7 @@ section{margin-top:20px}
</style>
<section>
<div>
<h1>404 Not Found</h1>
<h1>{$http_status_code} {$http_status_message}</h1>
<p>{$lang->msg_module_is_not_exists}</p>
</div>
</section>

View file

@ -30,7 +30,7 @@
<!--// BODY -->
<section class="xedition-error">
<h1>404</h1>
<p>Oops, Sorry.<br>Page is not found!</p>
<h1>{$http_status_code}</h1>
<p>Oops, Sorry.<br>Page is {$http_status_message}!</p>
<img src="./img/error.png" width="340" height="400" />
</section>