2016-05-02 19:29:31 +00:00
< 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 >
2017-07-05 20:08:08 +00:00
< markdown-input content = "preshared.notes"
can-write="true"
(content-changed)="updateNotes($event.content)"
field-title="notes">< / markdown-input >
2016-05-02 19:29:31 +00:00
< 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 >