1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-28 20:45:00 +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(); 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'));
} }
} }

View file

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

View file

@ -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) {
$(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)); }.bind(this));
} }
}; };