mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-30 21:45:01 +03:00
Media: проверка прав при сохранении данных о файле #404
This commit is contained in:
parent
5e5aed6e71
commit
15e24d6553
|
@ -502,11 +502,14 @@ class ActionAjax extends Action {
|
||||||
return $this->EventErrorDebug();
|
return $this->EventErrorDebug();
|
||||||
}
|
}
|
||||||
$sId=getRequestStr('id');
|
$sId=getRequestStr('id');
|
||||||
if ($oMedia=$this->Media_GetMediaByIdAndUserId($sId,$this->oUserCurrent->getId())) {
|
if (!$oMedia=$this->Media_GetMediaById($sId)) {
|
||||||
|
return $this->EventErrorDebug();
|
||||||
|
}
|
||||||
|
if (true===$res=$this->Media_CheckTarget($oMedia->getTargetType(),null,ModuleMedia::TYPE_CHECK_ALLOW_UPDATE,array('media'=>$oMedia,'user'=>$this->oUserCurrent))) {
|
||||||
$oMedia->setDataOne($sName,$sValue);
|
$oMedia->setDataOne($sName,$sValue);
|
||||||
$oMedia->Update();
|
$oMedia->Update();
|
||||||
} else {
|
} else {
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
|
$this->Message_AddErrorSingle(is_string($res) ? $res : $this->Lang_Get('system_error'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ class ModuleMedia extends ModuleORM {
|
||||||
*/
|
*/
|
||||||
const TYPE_CHECK_ALLOW_ADD='add';
|
const TYPE_CHECK_ALLOW_ADD='add';
|
||||||
const TYPE_CHECK_ALLOW_REMOVE='remove';
|
const TYPE_CHECK_ALLOW_REMOVE='remove';
|
||||||
|
const TYPE_CHECK_ALLOW_UPDATE='update';
|
||||||
/**
|
/**
|
||||||
* Объект текущего пользователя
|
* Объект текущего пользователя
|
||||||
*
|
*
|
||||||
|
@ -723,7 +724,29 @@ class ModuleMedia extends ModuleORM {
|
||||||
}
|
}
|
||||||
return $aSize;
|
return $aSize;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Производит стандартнуе проверку на определенное действие с конкретным объектом Media
|
||||||
|
*
|
||||||
|
* @param $sAllowType
|
||||||
|
* @param $aParams
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function CheckStandartMediaAllow($sAllowType,$aParams) {
|
||||||
|
if (!$oUser=$aParams['user']) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$oMedia=isset($aParams['media']) ? $aParams['media'] : null;
|
||||||
|
if (!$oMedia) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (in_array($sAllowType,array(self::TYPE_CHECK_ALLOW_REMOVE,self::TYPE_CHECK_ALLOW_UPDATE))) {
|
||||||
|
if ($oMedia->getUserId()==$oUser->getId()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Проверка владельца с типом "topic"
|
* Проверка владельца с типом "topic"
|
||||||
* Название метода формируется автоматически
|
* Название метода формируется автоматически
|
||||||
|
@ -753,14 +776,8 @@ class ModuleMedia extends ModuleORM {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($sAllowType==self::TYPE_CHECK_ALLOW_REMOVE) {
|
} else {
|
||||||
/**
|
return $this->CheckStandartMediaAllow($sAllowType,$aParams);
|
||||||
* Доступ на удаление файла
|
|
||||||
*/
|
|
||||||
$oMedia=$aParams['media'];
|
|
||||||
if ($oMedia->getUserId()==$oUser->getId()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -793,14 +810,8 @@ class ModuleMedia extends ModuleORM {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif($sAllowType==self::TYPE_CHECK_ALLOW_REMOVE) {
|
} else {
|
||||||
/**
|
return $this->CheckStandartMediaAllow($sAllowType,$aParams);
|
||||||
* Доступ на удаление файла
|
|
||||||
*/
|
|
||||||
$oMedia=$aParams['media'];
|
|
||||||
if ($oMedia->getUserId()==$oUser->getId()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -580,7 +580,11 @@ ls.media = (function ($) {
|
||||||
var id = item.data('mediaId');
|
var id = item.data('mediaId');
|
||||||
|
|
||||||
ls.ajax.load(this.options.routers.save_data_file, { name: name, value: value, id: id }, function(result) {
|
ls.ajax.load(this.options.routers.save_data_file, { name: name, value: value, id: id }, function(result) {
|
||||||
|
if (result.bStateError) {
|
||||||
|
ls.msg.error(result.sMsgTitle,result.sMsg);
|
||||||
|
} else {
|
||||||
$(this.options.selectors.gallery.file + '[data-media-id=' + id + ']').data('mediaData' + name.charAt(0).toUpperCase() + name.slice(1), value);
|
$(this.options.selectors.gallery.file + '[data-media-id=' + id + ']').data('mediaData' + name.charAt(0).toUpperCase() + name.slice(1), value);
|
||||||
|
}
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue