private function buildSSHKeysTable(AlmanacDevice $device) { $viewer = $this->getViewer(); $id = $device->getID(); $device_phid = $device->getPHID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $device, PhabricatorPolicyCapability::CAN_EDIT); $keys = id(new PhabricatorAuthSSHKeyQuery())->setViewer($viewer)->withObjectPHIDs(array($device_phid))->withIsActive(true)->execute(); $table = id(new PhabricatorAuthSSHKeyTableView())->setUser($viewer)->setKeys($keys)->setCanEdit($can_edit)->setShowID(true)->setShowTrusted(true)->setNoDataString(pht('This device has no associated SSH public keys.')); $menu_button = PhabricatorAuthSSHKeyTableView::newKeyActionsMenu($viewer, $device); $header = id(new PHUIHeaderView())->setHeader(pht('SSH Public Keys'))->addActionLink($menu_button); return id(new PHUIObjectBoxView())->setHeader($header)->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->setTable($table); }
private function buildSSHKeysTable(AlmanacDevice $device) { $viewer = $this->getViewer(); $id = $device->getID(); $device_phid = $device->getPHID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $device, PhabricatorPolicyCapability::CAN_EDIT); $keys = id(new PhabricatorAuthSSHKeyQuery())->setViewer($viewer)->withObjectPHIDs(array($device_phid))->execute(); $table = id(new PhabricatorAuthSSHKeyTableView())->setUser($viewer)->setKeys($keys)->setCanEdit($can_edit)->setShowID(true)->setShowTrusted(true)->setNoDataString(pht('This device has no associated SSH public keys.')); try { PhabricatorSSHKeyGenerator::assertCanGenerateKeypair(); $can_generate = true; } catch (Exception $ex) { $can_generate = false; } $generate_uri = '/auth/sshkey/generate/?objectPHID=' . $device_phid; $upload_uri = '/auth/sshkey/upload/?objectPHID=' . $device_phid; $header = id(new PHUIHeaderView())->setHeader(pht('SSH PUBLIC KEYS'))->addActionLink(id(new PHUIButtonView())->setTag('a')->setHref($generate_uri)->setWorkflow(true)->setDisabled(!$can_edit || !$can_generate)->setText(pht('Generate Keypair'))->setIcon(id(new PHUIIconView())->setIcon('fa-lock')))->addActionLink(id(new PHUIButtonView())->setTag('a')->setHref($upload_uri)->setWorkflow(true)->setDisabled(!$can_edit)->setText(pht('Upload Public Key'))->setIcon(id(new PHUIIconView())->setIcon('fa-upload'))); return id(new PHUIObjectBoxView())->setHeader($header)->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->setTable($table); }
protected function getDeviceDictionary(AlmanacDevice $device) { return array('id' => (int) $device->getID(), 'phid' => $device->getPHID(), 'name' => $device->getName(), 'properties' => $this->getPropertiesDictionary($device)); }