1
0
Fork 0
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:
Mzhelskiy Maxim 2014-02-21 13:41:37 +07:00
parent 5e5aed6e71
commit 15e24d6553
3 changed files with 38 additions and 20 deletions

View file

@ -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'));
}
}

View file

@ -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;
}

View file

@ -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));
}
};