mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-26 03:30:48 +03:00
Media: проверка прав при сохранении данных о файле #404
This commit is contained in:
parent
5e5aed6e71
commit
15e24d6553
|
@ -502,11 +502,14 @@ class ActionAjax extends Action {
|
|||
return $this->EventErrorDebug();
|
||||
}
|
||||
$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->Update();
|
||||
} 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_REMOVE='remove';
|
||||
const TYPE_CHECK_ALLOW_UPDATE='update';
|
||||
/**
|
||||
* Объект текущего пользователя
|
||||
*
|
||||
|
@ -723,7 +724,29 @@ class ModuleMedia extends ModuleORM {
|
|||
}
|
||||
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"
|
||||
* Название метода формируется автоматически
|
||||
|
@ -753,14 +776,8 @@ class ModuleMedia extends ModuleORM {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
} elseif ($sAllowType==self::TYPE_CHECK_ALLOW_REMOVE) {
|
||||
/**
|
||||
* Доступ на удаление файла
|
||||
*/
|
||||
$oMedia=$aParams['media'];
|
||||
if ($oMedia->getUserId()==$oUser->getId()) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return $this->CheckStandartMediaAllow($sAllowType,$aParams);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -793,14 +810,8 @@ class ModuleMedia extends ModuleORM {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
} elseif($sAllowType==self::TYPE_CHECK_ALLOW_REMOVE) {
|
||||
/**
|
||||
* Доступ на удаление файла
|
||||
*/
|
||||
$oMedia=$aParams['media'];
|
||||
if ($oMedia->getUserId()==$oUser->getId()) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return $this->CheckStandartMediaAllow($sAllowType,$aParams);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -580,7 +580,11 @@ ls.media = (function ($) {
|
|||
var id = item.data('mediaId');
|
||||
|
||||
ls.ajax.load(this.options.routers.save_data_file, { name: name, value: value, id: id }, function(result) {
|
||||
$(this.options.selectors.gallery.file + '[data-media-id=' + id + ']').data('mediaData' + name.charAt(0).toUpperCase() + name.slice(1), value);
|
||||
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);
|
||||
}
|
||||
}.bind(this));
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue