279 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			279 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <div class="loading" ng-show="loading">
 | |
|   <i class="icon-spinner icon-spin icon-3x"></i>
 | |
| </div>
 | |
| 
 | |
| <div class="container" ng-show="!loading && (!repo || !permissions)">
 | |
|   No repository found
 | |
| </div>
 | |
| 
 | |
| <div class="container repo repo-admin" ng-show="!loading && repo && permissions">
 | |
|   <div class="header">
 | |
|     <a href="{{ '/repository/' + repo.namespace + '/' + repo.name }}" class="back"><i class="icon-chevron-left"></i></a>
 | |
|     <h3>
 | |
|       <i class="icon-hdd icon-large"></i> <span style="color: #aaa;"> {{repo.namespace}}</span> <span style="color: #ccc">/</span> {{repo.name}}
 | |
|     </h3>
 | |
|    </div>
 | |
|   
 | |
|   <!-- User Access Permissions -->
 | |
|   <div class="panel panel-default">
 | |
|     <div class="panel-heading">User Access Permissions
 | |
| 
 | |
|       <i class="info-icon icon-info-sign" data-content="Allow any number of users to read, write or admin this repository"></i>
 | |
|     </div>
 | |
|     <div class="panel-body">
 | |
|         
 | |
|       <table class="permissions">
 | |
|         <thead>
 | |
|           <tr>
 | |
|             <td>User</td>
 | |
|             <td>Permissions</td>
 | |
|             <td></td>
 | |
|           </tr>
 | |
|         </thead>
 | |
|         
 | |
|         <tr ng-repeat="(username, permission) in permissions">
 | |
|           <td class="user">
 | |
|             <i class="icon-user"></i> 
 | |
|             <span>{{username}}</span>
 | |
|           </td>
 | |
|           <td class="user-permissions">
 | |
|             <div class="btn-group btn-group-sm">
 | |
|               <button type="button" class="btn btn-default" ng-click="setRole(username, 'read')" ng-class="{read: 'active', write: '', admin: ''}[permission.role]">Read only</button>
 | |
|               <button type="button" class="btn btn-default" ng-click="setRole(username, 'write')" ng-class="{read: '', write: 'active', admin: ''}[permission.role]">Write</button>
 | |
|               <button type="button" class="btn btn-default" ng-click="setRole(username, 'admin')" ng-class="{read: '', write: '', admin: 'active'}[permission.role]">Admin</button>
 | |
|             </div>
 | |
|           </td>
 | |
|           <td>
 | |
|             <span class="delete-ui" tabindex="0" title="Delete Permission">
 | |
|               <span class="delete-ui-button" ng-click="deleteRole(username)"><button class="btn btn-danger">Delete</button></span>
 | |
|               <i class="icon-remove"></i>
 | |
|             </span>
 | |
|           </td>
 | |
|         </tr>
 | |
| 
 | |
|         <tr>
 | |
|           <td colspan="2">
 | |
|             <input id="userSearch" class="form-control" placeholder="Add new user...">
 | |
|           </td>
 | |
|         </tr>
 | |
|       </table>
 | |
|     </div>
 | |
|   </div>
 | |
| 
 | |
|   <!-- Token Permissions -->
 | |
|   <div class="panel panel-default">
 | |
|     <div class="panel-heading">Access Token Permissions
 | |
| 
 | |
|       <i class="info-icon icon-info-sign" data-content="Grant permissions to this repository by creating unique tokens that can be used without entering account passwords<br><br>To use in docker:<br><dl class='dl-horizontal'><dt>Username</dt><dd>$token</dd><dt>Password</dt><dd>(token value)</dd></dl>"></i>
 | |
|     </div>
 | |
|     <div class="panel-body">
 | |
|         
 | |
|       <table class="permissions">
 | |
|         <thead>
 | |
|           <tr>
 | |
|             <td>Token Description</td>
 | |
|             <td>Permissions</td>
 | |
|             <td></td>
 | |
|           </tr>
 | |
|         </thead>
 | |
|         
 | |
|         <tr ng-repeat="(code, token) in tokens">
 | |
|           <td class="user token">
 | |
|             <i class="icon-key"></i> 
 | |
|             <a ng-click="showToken(token.code)">{{ token.friendlyName }}</a>
 | |
|           </td>
 | |
|           <td class="user-permissions">
 | |
|             <div class="btn-group btn-group-sm">
 | |
|               <button type="button" class="btn btn-default" ng-click="changeTokenAccess(token.code, 'read')" ng-class="{read: 'active', write: ''}[token.role]">Read only</button>
 | |
|               <button type="button" class="btn btn-default" ng-click="changeTokenAccess(token.code, 'write')" ng-class="{read: '', write: 'active'}[token.role]">Write</button>
 | |
|             </div>
 | |
|           </td>
 | |
|           <td>
 | |
|             <span class="delete-ui" tabindex="0" title="Delete Token">
 | |
|               <span class="delete-ui-button" ng-click="deleteToken(token.code)"><button class="btn btn-danger">Delete</button></span>
 | |
|               <i class="icon-remove"></i>
 | |
|             </span>
 | |
|           </td>
 | |
|         </tr>
 | |
| 
 | |
|         <tr>
 | |
|           <form name="createTokenForm" ng-submit="createToken()">
 | |
|             <td>
 | |
|               <input class="form-control" placeholder="New token description" ng-model="newToken.friendlyName">
 | |
|             </td>
 | |
|             <td>
 | |
|               <button type="submit" class="btn btn-sm btn-default">Create</button>
 | |
|             </td>
 | |
|           </form>
 | |
|         </tr>
 | |
|       </table>
 | |
|     </div>
 | |
|   </div>
 | |
| 
 | |
|   <!-- Public/Private -->
 | |
|   <div class="panel panel-default">
 | |
|     <div class="panel-heading">Repository Settings</div>
 | |
|     <div class="panel-body">
 | |
|     <div class="repo-access-state" ng-show="!repo.is_public">
 | |
|     <div class="state-icon"><i class="icon-lock"></i></div>
 | |
| 
 | |
|         This repository is currently <b>private</b>. Only users on the above access list may view and interact with it.
 | |
| 
 | |
|         <div class="change-access">
 | |
|           <button class="btn btn-danger" ng-click="askChangeAccess('public')">Make Public</button>
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       <div class="repo-access-state" ng-show="repo.is_public">
 | |
|         <div class="state-icon"><i class="icon-unlock-alt"></i></div>
 | |
| 
 | |
|         This repository is currently <b>public</b> and is visible to all users, and may be pulled by all users.
 | |
| 
 | |
|         <div class="change-access">
 | |
|           <button class="btn btn-danger" ng-click="askChangeAccess('private')">Make Private</button>
 | |
|         </div>
 | |
|       </div>
 | |
|     </div>
 | |
|   </div>
 | |
|   <br>
 | |
| 
 | |
|   <!-- Delete Repo -->
 | |
|   <div class="panel panel-default">
 | |
|     <div class="panel-heading">Delete Repository</div>
 | |
|     <div class="panel-body">
 | |
|       <div class="repo-delete">
 | |
|         <div class="alert alert-danger">Deleting a repository <b>cannot be undone</b>. Here be dragons!</div>
 | |
|         <button class="btn btn-danger" ng-click="askDelete()">Delete Repository</button>
 | |
|       </div>
 | |
|     </div>
 | |
|   </div>
 | |
| 
 | |
|  <!-- Modal message dialog -->
 | |
|   <div class="modal fade" id="cannotchangeModal">
 | |
|     <div class="modal-dialog">
 | |
|       <div class="modal-content">
 | |
|         <div class="modal-header">
 | |
|           <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|           <h4 class="modal-title">Cannot change</h4>
 | |
|         </div>
 | |
|         <div class="modal-body">
 | |
|           The selected action could not be performed because you do not have that authority.
 | |
|         </div>
 | |
|         <div class="modal-footer">
 | |
|           <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
 | |
|         </div>
 | |
|       </div><!-- /.modal-content -->
 | |
|     </div><!-- /.modal-dialog -->
 | |
|   </div><!-- /.modal -->
 | |
| 
 | |
|   <!-- Modal message dialog -->
 | |
|   <div class="modal fade" id="tokenmodal">
 | |
|     <div class="modal-dialog">
 | |
|       <div class="modal-content">
 | |
|         <div class="modal-header">
 | |
|           <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|           <h4 class="modal-title"><i class="icon-key"></i> {{ shownToken.friendlyName }}</h4>
 | |
|         </div>
 | |
|         <div class="modal-body token-dialog-body">
 | |
| 	  <div class="alert alert-info">The docker <u>username</u> is <b>$token</b> and the <u>password</u> is the token</div>
 | |
| 	  <div class="well well-sm">
 | |
| 	    <input id="token-view" class="token-view" type="text" value="{{ shownToken.code }}" onClick="this.select();" readonly>
 | |
| 	  </div>	 
 | |
|         </div>
 | |
|         <div class="modal-footer">
 | |
| 	   <div id="clipboardCopied" style="display: none">
 | |
|              Copied to clipboard
 | |
| 	   </div>
 | |
| 	  <button id="copyClipboard" type="button" class="btn btn-primary" data-clipboard-target="token-view">Copy to clipboard</button>
 | |
|           <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
 | |
|         </div>
 | |
|       </div><!-- /.modal-content -->
 | |
|     </div><!-- /.modal-dialog -->
 | |
|   </div><!-- /.modal -->
 | |
|   
 | |
| 
 | |
|  <!-- Modal message dialog -->
 | |
|   <div class="modal fade" id="makepublicModal">
 | |
|     <div class="modal-dialog">
 | |
|       <div class="modal-content">
 | |
|         <div class="modal-header">
 | |
|           <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|           <h4 class="modal-title">Make Repository Public</h4>
 | |
|         </div>
 | |
|         <div class="modal-body">
 | |
|           <div class="alert alert-warning">
 | |
|             Warning: This will allow <b>anyone</b> to pull from this repository
 | |
|           </div>
 | |
|           Are you sure you want to make this repository public?
 | |
|         </div>
 | |
|         <div class="modal-footer">
 | |
|           <button type="button" class="btn btn-danger" ng-click="changeAccess('public')">Make Public</button>
 | |
|           <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
 | |
|         </div>
 | |
|       </div><!-- /.modal-content -->
 | |
|     </div><!-- /.modal-dialog -->
 | |
|   </div><!-- /.modal -->
 | |
|   
 | |
| 
 | |
|   <!-- Modal message dialog -->
 | |
|   <div class="modal fade" id="makeprivateModal">
 | |
|     <div class="modal-dialog">
 | |
|       <div class="modal-content">
 | |
|         <div class="modal-header">
 | |
|           <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|           <h4 class="modal-title">Make Repository Private</h4>
 | |
|         </div>
 | |
|         <div class="modal-body">
 | |
|           <div class="alert alert-warning">
 | |
|             Warning: Only users on the permissions list will be able to access this repository.
 | |
|           </div>
 | |
|       	  Are you sure you want to make this repository private?
 | |
|         </div>
 | |
|         <div class="modal-footer">
 | |
|           <button type="button" class="btn btn-success" ng-click="changeAccess('private')">Make Private</button>
 | |
|           <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
 | |
|         </div>
 | |
|       </div><!-- /.modal-content -->
 | |
|     </div><!-- /.modal-dialog -->
 | |
|   </div><!-- /.modal -->
 | |
|   
 | |
| 
 | |
|   <!-- Modal message dialog -->
 | |
|   <div class="modal fade" id="onlyadminModal">
 | |
|     <div class="modal-dialog">
 | |
|       <div class="modal-content">
 | |
|         <div class="modal-header">
 | |
|           <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|           <h4 class="modal-title">Cannot change permissions</h4>
 | |
|         </div>
 | |
|         <div class="modal-body">
 | |
|           The selected permissions could not be changed because the user is the only <b>admin</b> on the repo.
 | |
|         </div>
 | |
|         <div class="modal-footer">
 | |
|           <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
 | |
|         </div>
 | |
|       </div><!-- /.modal-content -->
 | |
|     </div><!-- /.modal-dialog -->
 | |
|   </div><!-- /.modal -->
 | |
|   
 | |
| 
 | |
|   <!-- Modal message dialog -->
 | |
|   <div class="modal fade" id="confirmdeleteModal">
 | |
|     <div class="modal-dialog">
 | |
|       <div class="modal-content">
 | |
|         <div class="modal-header">
 | |
|           <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 | |
|           <h4 class="modal-title">Delete Repository?</h4>
 | |
|         </div>
 | |
|         <div class="modal-body">
 | |
|           Are you <b>absolutely, positively</b> sure you would like to delete this repository? This <b>cannot be undone</b>.
 | |
|         </div>
 | |
|         <div class="modal-footer">
 | |
|           <button type="button" class="btn btn-danger" ng-click="deleteRepo()">Delete Repository</button>
 | |
|           <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
 | |
|         </div>
 | |
|       </div><!-- /.modal-content -->
 | |
|     </div><!-- /.modal-dialog -->
 | |
|   </div><!-- /.modal -->
 | |
| 
 | |
| </div>
 |