2014-04-10 04:26:55 +00:00
< div class = "container" quay-show = "Features.SUPER_USERS" >
< div class = "alert alert-info" >
2014-08-08 17:50:04 +00:00
This panel provides administrator access to < strong > super users of this installation of the registry< / strong > . Super users can be managed in the configuration for this installation.
2014-04-10 04:26:55 +00:00
< / div >
< div class = "row" >
<!-- Side tabs -->
< div class = "col-md-2" >
< ul class = "nav nav-pills nav-stacked" >
< li class = "active" >
< a href = "javascript:void(0)" data-toggle = "tab" data-target = "#license" > License and Usage< / a >
< / li >
< li >
< a href = "javascript:void(0)" data-toggle = "tab" data-target = "#users" ng-click = "loadUsers()" > Users< / a >
< / li >
< / ul >
< / div >
<!-- Content -->
< div class = "col-md-10" >
< div class = "tab-content" >
<!-- License tab -->
< div id = "license" class = "tab-pane active" >
< div class = "quay-spinner 3x" ng-show = "usageLoading" > < / div >
<!-- Chart -->
< div >
< div id = "seat-usage-chart" class = "usage-chart limit-{{limit}}" > < / div >
< span class = "usage-caption" ng-show = "chart" > Seat Usage< / span >
< / div >
< / div >
<!-- Users tab -->
< div id = "users" class = "tab-pane" >
< div class = "quay-spinner" ng-show = "!users" > < / div >
< div class = "alert alert-error" ng-show = "usersError" >
{{ usersError }}
< / div >
< div ng-show = "users" >
< div class = "side-controls" >
< div class = "result-count" >
Showing {{(users | filter:search | limitTo:100).length}} of
{{(users | filter:search).length}} matching users
< / div >
< div class = "filter-input" >
< input id = "log-filter" class = "form-control" placeholder = "Filter Users" type = "text" ng-model = "search.$" >
< / div >
< / div >
< table class = "table" >
< thead >
< th > Username< / th >
< th > E-mail address< / th >
< th > < / th >
< th > < / th >
< / thead >
< tr ng-repeat = "current_user in (users | filter:search | orderBy:'username' | limitTo:100)"
class="user-row"
ng-class="current_user.super_user ? 'super-user' : ''">
< td >
< i class = "fa fa-user" style = "margin-right: 6px" > < / i >
{{ current_user.username }}
< / td >
< td >
< a href = "mailto:{{ current_user.email }}" > {{ current_user.email }}< / a >
< / td >
< td class = "user-class" >
< span ng-if = "current_user.super_user" > Super user< / span >
< / td >
< td >
< div class = "dropdown" ng-if = "user.username != current_user.username && !user.super_user" >
< button class = "btn btn-default dropdown-toggle" data-toggle = "dropdown" >
< i class = "fa fa-ellipsis-h" > < / i >
< / button >
< ul class = "dropdown-menu" >
< li >
< a href = "javascript:void(0)" ng-click = "showChangePassword(current_user)" >
< i class = "fa fa-key" > < / i > Change Password
< / a >
< a href = "javascript:void(0)" ng-click = "showDeleteUser(current_user)" >
< i class = "fa fa-times" > < / i > Delete User
< / a >
< / li >
< / ul >
< / div >
< / td >
< / tr >
< / table >
< / div >
< / div >
< / div >
< / div >
< / div >
<!-- Modal message dialog -->
< div class = "modal fade" id = "confirmDeleteUserModal" >
< 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 User?< / h4 >
< / div >
< div class = "modal-body" >
< div class = "alert alert-danger" >
This operation < strong > cannot be undone< / strong > and will < strong > delete any repositories owned by the user< / strong > .
< / div >
Are you < strong > sure< / strong > you want to delete user < strong > {{ userToDelete.username }}< / strong > ?
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-danger" ng-click = "deleteUser(userToDelete)" > Delete User< / 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 = "changePasswordModal" >
< 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" > Change User Password< / h4 >
< / div >
< div class = "modal-body" >
< div class = "alert alert-warning" >
2014-08-08 17:50:04 +00:00
The user will no longer be able to access the registry with their current password
2014-04-10 04:26:55 +00:00
< / div >
< form class = "form-change" id = "changePasswordForm" name = "changePasswordForm" data-trigger = "manual" >
< input type = "password" class = "form-control" placeholder = "User's new password" ng-model = "userToChange.password" required ng-pattern = "/^.{8,}$/" >
< input type = "password" class = "form-control" placeholder = "Verify the new password" ng-model = "userToChange.repeatPassword"
match="userToChange.password" required ng-pattern="/^.{8,}$/">
< / form >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-primary" ng-click = "changeUserPassword(userToChange)"
ng-disabled="changePasswordForm.$invalid">Change User Password< / button >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / button >
< / div >
< / div > <!-- /.modal - content -->
< / div > <!-- /.modal - dialog -->
< / div > <!-- /.modal -->
< / div >