134 lines
		
	
	
		
			No EOL
		
	
	
		
			6.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			No EOL
		
	
	
		
			6.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <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> |