|
@@ 393-410 (lines=18) @@
|
| 390 |
|
* @param Member|null $member |
| 391 |
|
* @return boolean |
| 392 |
|
*/ |
| 393 |
|
public function canDeploy($member = null) { |
| 394 |
|
if(!$member) { |
| 395 |
|
$member = Member::currentUser(); |
| 396 |
|
} |
| 397 |
|
if(!$member) { |
| 398 |
|
return false; |
| 399 |
|
} |
| 400 |
|
// Must be logged in to check permissions |
| 401 |
|
|
| 402 |
|
if ($this->Usage==='Production' || $this->Usage==='Unspecified') { |
| 403 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_PROD_DEPLOYMENT, $member)) return true; |
| 404 |
|
} else { |
| 405 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_DEPLOYMENT, $member)) return true; |
| 406 |
|
} |
| 407 |
|
|
| 408 |
|
return $this->Deployers()->byID($member->ID) |
| 409 |
|
|| $member->inGroups($this->DeployerGroups()); |
| 410 |
|
} |
| 411 |
|
|
| 412 |
|
/** |
| 413 |
|
* Provide reason why the user cannot deploy. |
|
@@ 428-445 (lines=18) @@
|
| 425 |
|
* @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember(); |
| 426 |
|
* @return boolean true if $member can restore, and false if they can't. |
| 427 |
|
*/ |
| 428 |
|
public function canRestore($member = null) { |
| 429 |
|
if(!$member) { |
| 430 |
|
$member = Member::currentUser(); |
| 431 |
|
} |
| 432 |
|
if(!$member) { |
| 433 |
|
return false; |
| 434 |
|
} |
| 435 |
|
// Must be logged in to check permissions |
| 436 |
|
|
| 437 |
|
if ($this->Usage==='Production' || $this->Usage==='Unspecified') { |
| 438 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) return true; |
| 439 |
|
} else { |
| 440 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) return true; |
| 441 |
|
} |
| 442 |
|
|
| 443 |
|
return $this->CanRestoreMembers()->byID($member->ID) |
| 444 |
|
|| $member->inGroups($this->CanRestoreGroups()); |
| 445 |
|
} |
| 446 |
|
|
| 447 |
|
/** |
| 448 |
|
* Allows only selected {@link Member} objects to backup this {@link DNEnvironment} to a {@link DNDataArchive} |
|
@@ 520-537 (lines=18) @@
|
| 517 |
|
* @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember(); |
| 518 |
|
* @return boolean true if $member can download archives from this environment, false if they can't. |
| 519 |
|
*/ |
| 520 |
|
public function canDownloadArchive($member = null) { |
| 521 |
|
if(!$member) { |
| 522 |
|
$member = Member::currentUser(); |
| 523 |
|
} |
| 524 |
|
if(!$member) { |
| 525 |
|
return false; |
| 526 |
|
} |
| 527 |
|
// Must be logged in to check permissions |
| 528 |
|
|
| 529 |
|
if ($this->Usage==='Production' || $this->Usage==='Unspecified') { |
| 530 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) return true; |
| 531 |
|
} else { |
| 532 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) return true; |
| 533 |
|
} |
| 534 |
|
|
| 535 |
|
return $this->ArchiveDownloaders()->byID($member->ID) |
| 536 |
|
|| $member->inGroups($this->ArchiveDownloaderGroups()); |
| 537 |
|
} |
| 538 |
|
|
| 539 |
|
/** |
| 540 |
|
* Determine if the specified user can abort any pipelines |
|
@@ 589-606 (lines=18) @@
|
| 586 |
|
* @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember(); |
| 587 |
|
* @return boolean true if $member can delete archives from this environment, false if they can't. |
| 588 |
|
*/ |
| 589 |
|
public function canDeleteArchive($member = null) { |
| 590 |
|
if(!$member) { |
| 591 |
|
$member = Member::currentUser(); |
| 592 |
|
} |
| 593 |
|
if(!$member) { |
| 594 |
|
return false; |
| 595 |
|
} |
| 596 |
|
// Must be logged in to check permissions |
| 597 |
|
|
| 598 |
|
if ($this->Usage==='Production' || $this->Usage==='Unspecified') { |
| 599 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) return true; |
| 600 |
|
} else { |
| 601 |
|
if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) return true; |
| 602 |
|
} |
| 603 |
|
|
| 604 |
|
return $this->ArchiveDeleters()->byID($member->ID) |
| 605 |
|
|| $member->inGroups($this->ArchiveDeleterGroups()); |
| 606 |
|
} |
| 607 |
|
/** |
| 608 |
|
* Get a string of groups/people that are allowed to deploy to this environment. |
| 609 |
|
* Used in DNRoot_project.ss to list {@link Member}s who have permission to perform this action. |