<div class="request-service-key-dialog-element"> <!-- Modal message dialog --> <div class="co-dialog modal fade"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-show="!working">×</button> <h4 class="modal-title">Create key for service {{ requestKeyInfo.service }}</h4> </div> <div class="modal-body" ng-show="working"> <div class="cor-loader"></div> </div> <div class="modal-body" ng-show="!working"> <!-- Step 0 --> <div ng-show="step == 0"> <table class="co-option-table"> <tr> <td><input type="radio" id="automaticKey" ng-model="requestKind" value="automatic"></td> <td> <label for="automaticKey">Have the service provide a key</label> <div class="help-text">Recommended for <code>{{ requestKeyInfo.service }}</code> installations where the single instance is setup now.</div> </td> </tr> <tr> <td><input type="radio" id="presharedKey" ng-model="requestKind" value="preshared"></td> <td> <label for="presharedKey">Generate shared key</label> <div class="help-text">Recommended for <code>{{ requestKeyInfo.service }}</code> installations where the instances are dynamically started.</div> </td> </tr> </table> </div> <!-- Step 1 (automatic) --> <div ng-show="step == 1 && requestKind == 'automatic'" style="text-align: center"> <div style="margin-top: 20px;"> Please start the <code>{{ requestKeyInfo.service }}</code> service now, configured for <a href="https://github.com/coreos/jwtproxy#autogenerated-private-key" ng-safenewtab>autogenerated private key</a>. The key approval process will continue automatically once the service connects to Quay. </div> <div style="margin-top: 20px;"> Waiting for service to connect </div> <div style="margin-top: 10px; margin-bottom: 20px;"> <div class="cor-loader-inline"></div> </div> </div> <!-- Step 2 (automatic) --> <div ng-show="step == 2 && requestKind == 'automatic'" style="text-align: center"> A key for service <code>{{ requestKeyInfo.service }}</code> has been automatically generated, approved and saved in the service's keystore. </div> <!-- Step 1 (generate) --> <div ng-show="step == 1 && requestKind == 'preshared'"> <form name="createForm" ng-submit="createPresharedKey()"> <table class="co-form-table"> <tr> <td><label for="create-key-name">Key Name:</label></td> <td> <input class="form-control" name="create-key-name" type="text" ng-model="preshared.name" placeholder="Friendly Key Name"> <span class="co-help-text"> A friendly name for the key for later reference. </span> </td> </tr> <tr> <td><label for="create-key-expiration">Expiration date (optional):</label></td> <td> <span class="datetime-picker" datetime="preshared.expiration"></span> <span class="co-help-text"> The date and time that the key expires. If left blank, the key will never expire. </span> </td> </tr> <tr> <td><label for="create-key-notes">Approval Notes (optional):</label></td> <td> <div class="markdown-editor" content="preshared.notes"></div> <span class="co-help-text"> Optional notes for additional human-readable information about why the key was created. </span> </td> </tr> </table> </form> </div> <!-- Step 2 (generate) --> <div ng-show="step == 2 && requestKind == 'preshared'"> <div class="co-alert co-alert-warning"> The following key has been generated for service <code>{{ requestKeyInfo.service }}</code>. <br><br> Please copy the key's ID and copy/download the key's private contents and place it in the directory with the service's configuration. <br><br> <strong>Once this dialog is closed this private key will not be accessible anywhere else!</strong> </div> <label>Key ID:</label> <div class="copy-box" value="createdKey.kid"></div> <label>Private Key (PEM):</label> <textarea class="key-display form-control" onclick="this.focus();this.select()" readonly>{{ createdKey.private_key }}</textarea> </div> </div> <div class="modal-footer" ng-show="!working"> <button type="button" class="btn btn-primary" ng-show="step == 1 && requestKind == 'preshared'" ng-disabled="createForm.$invalid" ng-click="createPresharedKey()"> Generate Key </button> <button type="button" class="btn btn-primary" ng-show="step == 0 && requestKind == 'preshared'" ng-click="showGenerate()"> Continue </button> <button type="button" class="btn btn-primary" ng-show="step == 0 && requestKind == 'automatic'" ng-click="startApproval()"> Start Approval </button> <button type="button" class="btn btn-primary" ng-click="downloadPrivateKey(createdKey)" ng-if="createdKey && isDownloadSupported()"> <i class="fa fa-download"></i> Download Private Key </button> <button type="button" class="btn btn-default" data-dismiss="modal" ng-show="step == 2">Close</button> <button type="button" class="btn btn-default" data-dismiss="modal" ng-show="step != 2">Cancel</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal --> </div> </div>