서버 열단, 리셋 부분 권한 추가

This commit is contained in:
2018-06-18 03:21:52 +09:00
parent acb09bfe71
commit 746977d5d0
16 changed files with 172 additions and 44 deletions
+40 -1
View File
@@ -5,7 +5,21 @@ include "lib.php";
include "func.php";
$session = Session::requireLogin([])->setReadOnly();
if($session->userGrade < 5){
if(!class_exists('\\sammo\\DB')){
Json::die([
'result'=>false,
'reason'=>'DB리셋 필요'
]);
}
$serverName = DB::prefix();
$serverAcl = $session->acl[$serverName]??[];
$allowReset = in_array('reset', $serverAcl);
$allowFullReset = in_array('fullReset',$serverAcl);
$allowReset |= $allowFullReset;
if($session->userGrade < 5 && !$allowReset){
Json::die([
'result'=>false,
'reason'=>'관리자 아님'
@@ -38,6 +52,30 @@ if(!$v->validate()){
]);
}
$allowReset = true;
if($session->userGrade < 5 && !$allowFullReset){
//리셋 가능한 조건인지 테스트
$allowReset = false;
if(file_exists(__dir__.'/.htaccess')){
$allowReset = true;
}
else{
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
if($gameStor->isunited){
$allowReset = true;
}
}
}
if(!$allowReset){
Json::die([
'result'=>false,
'reason'=>'부족한 권한: 서버가 닫혀있거나, 천통되어 있을 경우에만 리셋 가능합니다.'
]);
}
$turnterm = (int)$_POST['turnterm'];
$sync = (int)$_POST['sync'];
$scenario = (int)$_POST['scenario'];
@@ -83,6 +121,7 @@ if($reserve_open){
]),
'date'=>$reserve_open->format('Y-m-d H:i:s')
]);
AppConf::getList()[DB::prefix()]->closeServer();
Json::die([
'result'=>true,
'reason'=>'예약'