2013-11-22 23:20:51 +00:00
< div class = "robots-manager-element" >
2015-03-31 22:50:43 +00:00
< div class = "cor-loader" ng-show = "loading" > < / div >
2013-11-22 23:20:51 +00:00
2015-02-18 00:37:37 +00:00
< div ng-show = "!loading" >
2015-04-17 20:43:53 +00:00
< div class = "manager-header" header-title = "Robot Accounts" >
< span class = "popup-input-button" pattern = "ROBOT_PATTERN"
placeholder="'Robot Account Name'"
2015-04-21 20:07:24 +00:00
submitted="createRobot(value)"
ng-show="isEnabled">
2015-04-17 20:43:53 +00:00
< i class = "fa fa-plus" > < / i > Create Robot Account
< / span >
2013-11-22 23:20:51 +00:00
< / div >
2015-04-17 20:43:53 +00:00
< div class = "section-description-header" >
2015-03-31 22:50:43 +00:00
Robot Accounts are named tokens that can be granted permissions on multiple repositories
under this < span ng-if = "organization" > organization< / span > < span ng-if = "!organization" > user namespace< / span > . They are typically used in environments where credentials will
be shared, such as deployment systems.
< / div >
2015-04-20 17:23:02 +00:00
< div class = "filter-box" collection = "robots" filter-model = "robotFilter" filter-name = "Robot Accounts" > < / div >
2015-04-09 19:03:07 +00:00
2015-03-31 22:50:43 +00:00
< div class = "empty" ng-if = "!robots.length" >
< div class = "empty-primary-msg" > No robot accounts defined.< / div >
< div class = "empty-secondary-msg" >
Click the "Create Robot Account" button above to create a robot account.
< / div >
< / div >
2015-04-09 19:03:07 +00:00
< div class = "empty" ng-if = "robots.length && !(robots | filter:robotFilter).length" >
< div class = "empty-primary-msg" > No robot accounts found matching filter.< / div >
< div class = "empty-secondary-msg" >
Please change your filter to display robot accounts.
< / div >
< / div >
2015-04-17 20:43:53 +00:00
< table class = "cor-table" ng-if = "(robots | filter:robotFilter).length" >
2013-11-22 23:20:51 +00:00
< thead >
2015-04-17 20:43:53 +00:00
< td class = "caret-col hidden-xs" ng-if = "(user || organization.is_admin) && Config.isNewLayout()" > < / td >
2015-03-31 22:50:43 +00:00
< td > Robot Account Name< / td >
2015-04-01 17:56:30 +00:00
< td ng-if = "organization && Config.isNewLayout()" > Teams< / td >
2015-04-20 17:01:51 +00:00
< td ng-if = "Config.isNewLayout()" > Direct Repository Permissions< / td >
2015-03-31 22:50:43 +00:00
< td class = "options-col" > < / td >
2013-11-22 23:20:51 +00:00
< / thead >
2014-11-24 21:07:38 +00:00
2015-04-09 19:03:07 +00:00
< tbody ng-repeat = "robotInfo in robots | filter:robotFilter | orderBy:getShortenedRobotName" >
2015-03-31 22:50:43 +00:00
< tr ng-class = "robotInfo.showing_permissions ? 'open' : 'closed'" >
2015-04-17 20:43:53 +00:00
< td class = "caret-col hidden-xs" ng-if = "(user || organization.is_admin) && Config.isNewLayout()" >
2015-04-01 17:56:30 +00:00
< span ng-if = "robotInfo.repositories.length > 0" ng-click = "showPermissions(robotInfo)" >
2015-03-31 22:50:43 +00:00
< i class = "fa"
ng-class="robotInfo.showing_permissions ? 'fa-caret-down' : 'fa-caret-right'"
data-title="View Permissions List" bs-tooltip>< / i >
< / span >
< / td >
< td class = "robot" >
2015-04-17 20:43:53 +00:00
< i class = "fa fa-wrench hidden-xs" > < / i >
2015-03-31 22:50:43 +00:00
< a ng-click = "showRobot(robotInfo)" >
< span class = "prefix" > {{ getPrefix(robotInfo.name) }}+< / span > {{ getShortenedName(robotInfo.name) }}
< / a >
< / td >
2015-04-01 17:56:30 +00:00
< td ng-if = "organization && Config.isNewLayout()" >
< span class = "empty" ng-if = "robotInfo.teams.length == 0" >
(Not a member of any team)
< / span >
< span class = "empty" ng-if = "robotInfo.teams.length > 0" >
< span ng-repeat = "team in robotInfo.teams"
data-title="Team {{ team.name }}" bs-tooltip>
< span class = "anchor" is-text-only = "!organization.admin" href = "/organization/{{ organization.name }}/teams/{{ team.name }}" >
< span class = "avatar" size = "24" data = "team.avatar" > < / span >
< / span >
< / span >
< / span >
< / td >
< td ng-if = "Config.isNewLayout()" >
< span class = "empty" ng-if = "robotInfo.repositories.length == 0" >
2015-04-20 17:01:51 +00:00
(No direct permissions on any repositories)
2015-04-01 17:56:30 +00:00
< / span >
< span class = "member-perm-summary" ng-if = "robotInfo.repositories.length > 0" >
2015-04-20 17:23:02 +00:00
Direct Permissions on
2015-04-17 20:43:53 +00:00
< span class = "anchor hidden-xs" href = "javascript:void(0)" is-text-only = "!organization.is_admin"
ng-click="showPermissions(robotInfo)">{{ robotInfo.repositories.length }}
< span ng-if = "robotInfo.repositories.length == 1" > repository< / span >
< span ng-if = "robotInfo.repositories.length > 1" > repositories< / span >
< / span >
< span class = "visible-xs" href = "javascript:void(0)" > {{ robotInfo.repositories.length }}
2015-04-01 17:56:30 +00:00
< span ng-if = "robotInfo.repositories.length == 1" > repository< / span >
< span ng-if = "robotInfo.repositories.length > 1" > repositories< / span >
2015-03-31 22:50:43 +00:00
< / span >
< / span >
< / td >
< td class = "options-col" >
< span class = "cor-options-menu" >
< span class = "cor-option" option-click = "showRobot(robotInfo)" >
< i class = "fa fa-key" > < / i > View Credentials
< / span >
< span class = "cor-option" option-click = "deleteRobot(robotInfo)" >
< i class = "fa fa-times" > < / i > Delete Robot {{ robotInfo.name }}
< / span >
< / span >
< / td >
< / tr >
< tr ng-if = "robotInfo.showing_permissions" >
< td class = "permissions-display-row" colspan = "4" >
< span class = "cor-loader" ng-if = "robotInfo.loading_permissions" > < / span >
< div class = "permissions-table-wrapper" >
< table class = "permissions-table" ng-if = "!robotInfo.loading_permissions" >
< thead >
< td > Repository< / td >
< td > Permission< / td >
< / thead >
< tr ng-repeat = "permission in robotInfo.permissions" >
< td >
< span class = "repo-icon repo-circle no-background" repo = "permission.repository" > < / span >
2015-04-01 15:31:26 +00:00
< a ng-href = "/repository/{{ getPrefix(robotInfo.name) }}/{{ permission.repository.name }}?tab=settings" > {{ getPrefix(robotInfo.name) }}/{{ permission.repository.name }}< / a >
2015-03-31 22:50:43 +00:00
< / td >
< td >
< div class = "btn-group btn-group-sm" >
2015-04-20 21:42:33 +00:00
< span class = "role-group"
current-role="permission.role"
roles="repoRoles"
2015-03-31 22:50:43 +00:00
read-only="true">< / span >
< / div >
< / td >
< / tr >
< / table >
< / div >
< / td >
< / tr >
< / tbody >
2013-11-22 23:20:51 +00:00
< / table >
2013-11-23 01:14:44 +00:00
< / div >
2013-11-22 23:20:51 +00:00
2013-11-23 01:14:44 +00:00
< div class = "docker-auth-dialog" username = "shownRobot.name" token = "shownRobot.token"
2014-08-25 21:19:23 +00:00
shown="!!shownRobot" counter="showRobotCounter" supports-regenerate="true" regenerate="regenerateToken(username)">
2013-11-23 01:14:44 +00:00
< i class = "fa fa-wrench" > < / i > {{ shownRobot.name }}
2013-11-22 23:20:51 +00:00
< / div >
< / div >