<div class="robots-manager-element"> <div class="cor-loader" ng-show="loading"></div> <div ng-show="!loading"> <div class="manager-header"> <div class="side-controls"> <span class="popup-input-button" pattern="ROBOT_PATTERN" placeholder="'Robot Account Name'" submitted="createRobot(value)"> <i class="fa fa-plus"></i> Create Robot Account </span> </div> <h3>Robot Accounts</h3> </div> <div class="manager-header section-description-header"> 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> <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> <table class="co-table" ng-if="robots.length"> <thead> <td class="caret-col" ng-if="(user || organization.is_admin) && Config.isNewLayout()"></td> <td>Robot Account Name</td> <td ng-if="organization && Config.isNewLayout()">Teams</td> <td ng-if="Config.isNewLayout()">Repository Permissions</td> <td class="options-col"></td> </thead> <tbody ng-repeat="robotInfo in robots"> <tr ng-class="robotInfo.showing_permissions ? 'open' : 'closed'"> <td class="caret-col" ng-if="(user || organization.is_admin) && Config.isNewLayout()"> <span ng-if="robotInfo.repositories.length > 0" ng-click="showPermissions(robotInfo)"> <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"> <i class="fa fa-wrench"></i> <a ng-click="showRobot(robotInfo)"> <span class="prefix">{{ getPrefix(robotInfo.name) }}+</span>{{ getShortenedName(robotInfo.name) }} </a> </td> <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"> (No permissions on any repositories) </span> <span class="member-perm-summary" ng-if="robotInfo.repositories.length > 0"> Permissions on <span class="anchor" 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> </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> <a ng-href="/repository/{{ getPrefix(robotInfo.name) }}/{{ permission.repository.name }}?tab=settings">{{ getPrefix(robotInfo.name) }}/{{ permission.repository.name }}</a> </td> <td> <div class="btn-group btn-group-sm"> <span class="role-group" current-role="permission.role" roles="roles" read-only="true"></span> </div> </td> </tr> </table> </div> </td> </tr> </tbody> </table> </div> <div class="docker-auth-dialog" username="shownRobot.name" token="shownRobot.token" shown="!!shownRobot" counter="showRobotCounter" supports-regenerate="true" regenerate="regenerateToken(username)"> <i class="fa fa-wrench"></i> {{ shownRobot.name }} </div> </div>