- 按 docs/renew-code-comment.md 将 PHP 文件头改为带边框的 Author 注释\n- 注释中的 crmeb.com 替换为 uj345.cn(代码字符串中的外链未改)\n- 新增 docs/renew-code-comment.md 说明 Made-with: Cursor
70 lines
1.8 KiB
PHP
70 lines
1.8 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ScottPan Team
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace crmeb\services\upload\extend\cos;
|
|
|
|
|
|
class Scope
|
|
{
|
|
protected $action;
|
|
protected $bucket;
|
|
protected $region;
|
|
protected $resourcePrefix;
|
|
protected $effect = 'allow';
|
|
|
|
public function __construct($action, $bucket, $region, $resourcePrefix)
|
|
{
|
|
$this->action = $action;
|
|
$this->bucket = $bucket;
|
|
$this->region = $region;
|
|
$this->resourcePrefix = $resourcePrefix;
|
|
}
|
|
|
|
public function set_effect($isAllow)
|
|
{
|
|
if ($isAllow) {
|
|
$this->effect = 'allow';
|
|
} else {
|
|
$this->effect = 'deny';
|
|
}
|
|
}
|
|
|
|
public function get_action()
|
|
{
|
|
if ($this->action == null) {
|
|
throw new \Exception("action == null");
|
|
}
|
|
return $this->action;
|
|
}
|
|
|
|
public function get_resource()
|
|
{
|
|
if ($this->bucket == null) {
|
|
throw new \Exception("bucket == null");
|
|
}
|
|
if ($this->region == null) {
|
|
throw new \Exception("region == null");
|
|
}
|
|
if ($this->resourcePrefix == null) {
|
|
throw new \Exception("resourcePrefix == null");
|
|
}
|
|
$index = strripos($this->bucket, '-');
|
|
if ($index < 0) {
|
|
throw new Exception("bucket is invalid: " . $this->bucket);
|
|
}
|
|
$appid = substr($this->bucket, $index + 1);
|
|
if (!(strpos($this->resourcePrefix, '/') === 0)) {
|
|
$this->resourcePrefix = '/' . $this->resourcePrefix;
|
|
}
|
|
return 'qcs::cos:' . $this->region . ':uid/' . $appid . ':' . $this->bucket . $this->resourcePrefix;
|
|
}
|
|
|
|
public function get_effect()
|
|
{
|
|
return $this->effect;
|
|
}
|
|
|
|
}
|