private function validateCredential(PassphraseCredential $credential, $provides_type) { $type = $credential->getCredentialTypeImplementation(); if (!$type) { throw new Exception(pht('Credential "%s" is of unknown type "%s"!', 'K' . $credential->getID(), $credential->getCredentialType())); } if ($type->getProvidesType() !== $provides_type) { throw new Exception(pht('Credential "%s" must provide "%s", but provides "%s"!', 'K' . $credential->getID(), $provides_type, $type->getProvidesType())); } }
private function buildActionView(PassphraseCredential $credential, PassphraseCredentialType $type) { $viewer = $this->getRequest()->getUser(); $id = $credential->getID(); $is_locked = $credential->getIsLocked(); if ($is_locked) { $credential_lock_text = pht('Locked Permanently'); $credential_lock_icon = 'fa-lock'; } else { $credential_lock_text = pht('Lock Permanently'); $credential_lock_icon = 'fa-unlock'; } $allow_conduit = $credential->getAllowConduit(); if ($allow_conduit) { $credential_conduit_text = pht('Prevent Conduit Access'); $credential_conduit_icon = 'fa-ban'; } else { $credential_conduit_text = pht('Allow Conduit Access'); $credential_conduit_icon = 'fa-wrench'; } $actions = id(new PhabricatorActionListView())->setObjectURI('/K' . $id)->setObject($credential)->setUser($viewer); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $credential, PhabricatorPolicyCapability::CAN_EDIT); $actions->addAction(id(new PhabricatorActionView())->setName(pht('Edit Credential'))->setIcon('fa-pencil')->setHref($this->getApplicationURI("edit/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(!$can_edit)); if (!$credential->getIsDestroyed()) { $actions->addAction(id(new PhabricatorActionView())->setName(pht('Destroy Credential'))->setIcon('fa-times')->setHref($this->getApplicationURI("destroy/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(true)); $actions->addAction(id(new PhabricatorActionView())->setName(pht('Show Secret'))->setIcon('fa-eye')->setHref($this->getApplicationURI("reveal/{$id}/"))->setDisabled(!$can_edit || $is_locked)->setWorkflow(true)); if ($type->hasPublicKey()) { $actions->addAction(id(new PhabricatorActionView())->setName(pht('Show Public Key'))->setIcon('fa-download')->setHref($this->getApplicationURI("public/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(true)); } $actions->addAction(id(new PhabricatorActionView())->setName($credential_conduit_text)->setIcon($credential_conduit_icon)->setHref($this->getApplicationURI("conduit/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(true)); $actions->addAction(id(new PhabricatorActionView())->setName($credential_lock_text)->setIcon($credential_lock_icon)->setHref($this->getApplicationURI("lock/{$id}/"))->setDisabled(!$can_edit || $is_locked)->setWorkflow(true)); } return $actions; }