public function canDeploy($member = null)
{
if (!$member) {
$member = Member::currentUser();
}
if (!$member) {
return false;
}
// Must be logged in to check permissions
if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
if ($this->Project()->allowed(DNRoot::ALLOW_PROD_DEPLOYMENT, $member)) {
return true;
}
} else {
if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_DEPLOYMENT, $member)) {
return true;
}
}
return $this->Deployers()->byID($member->ID) || $member->inGroups($this->DeployerGroups());
}
/** * @param \DNEnvironment $environment * @param \Member|null $member * @return bool */ public static function can_bypass_approval(\DNEnvironment $environment, \Member $member = null) { if ($member === null) { $member = \Member::currentUser(); } // special case for non-Production environments: users who can deploy are able to bypass approval. if ($environment->Usage !== \DNEnvironment::PRODUCTION && $environment->canDeploy($member)) { return true; } return $environment->Project()->allowed(self::ALLOW_APPROVAL_BYPASS, $member); }