mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
* ServiceAccounts: refactor ServiceAccountRoleRow * Refactor ServiceAccountRoleRow * Refactor ServiceAccountProfile * Refactor components * Change service accounts icon * Refine service accounts page header * Improve service accounts filtering * Change delete button style * Tweak account id * Auto focus name field when create service account * Add disable/enable button * Enable/disable service accounts * Optimize updating service account (do not fetch all) * Remove status column (replace by enable/disable button) * Add banner with service accounts description * Add tokens from main page * Update tokens count when add token from main page * Fix action buttons column * Fix tokens count when change role * Refine table row classes * Fix buttons * Simplify working with state * Show message when service account updated * Able to filter disabled accounts * Mark disabled accounts in a table * Refine disabled account view * Move non-critical components to separate folder * Remove confusing focusing * Fix date picker position when creating new token * DatePicker: able to set minimum date that can be selected * Don't allow to select expiration dates prior today * Set tomorrow as a default token expiration date * Fix displaying expiration period * Rename Add token button * Refine page styles * Show modal when disabling SA from main page * Arrange role picker * Refine SA page styles * Generate default token name * More smooth navigation between SA pages * Stop loading indicator in case of error * Remove legacy styles usage * Tweaks after code review Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Get rid of useDisapatch in favor of mapDispatchToProps * Tests for ServiceAccountsListPage * Tests for service account page * Show new role picker only with license * Get rid of deprecated css classes * Apply suggestion from code review Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Fix service accounts icon * Tests for service account create page * Return service account info when update * Add behaviour tests for ServiceAccountsListPage * Fix disabled cursor on confirm button * More behavior tests for service account page * Temporary disable service account migration banner * Use safe where condition Co-authored-by: Jguer <joao.guerreiro@grafana.com> * Apply review suggestions Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> * Remove autofocus from search Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> Co-authored-by: Jguer <joao.guerreiro@grafana.com>
81 lines
2.7 KiB
Go
81 lines
2.7 KiB
Go
package serviceaccounts
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
)
|
|
|
|
var (
|
|
ScopeAll = "serviceaccounts:*"
|
|
ScopeID = accesscontrol.Scope("serviceaccounts", "id", accesscontrol.Parameter(":serviceAccountId"))
|
|
)
|
|
|
|
const (
|
|
ActionRead = "serviceaccounts:read"
|
|
ActionWrite = "serviceaccounts:write"
|
|
ActionCreate = "serviceaccounts:create"
|
|
ActionDelete = "serviceaccounts:delete"
|
|
)
|
|
|
|
type ServiceAccount struct {
|
|
Id int64
|
|
}
|
|
|
|
type UpdateServiceAccountForm struct {
|
|
Name *string `json:"name"`
|
|
Role *models.RoleType `json:"role"`
|
|
IsDisabled *bool `json:"isDisabled"`
|
|
}
|
|
|
|
type ServiceAccountDTO struct {
|
|
Id int64 `json:"id" xorm:"user_id"`
|
|
Name string `json:"name" xorm:"name"`
|
|
Login string `json:"login" xorm:"login"`
|
|
OrgId int64 `json:"orgId" xorm:"org_id"`
|
|
IsDisabled bool `json:"isDisabled" xorm:"is_disabled"`
|
|
Role string `json:"role" xorm:"role"`
|
|
Tokens int64 `json:"tokens"`
|
|
AvatarUrl string `json:"avatarUrl"`
|
|
AccessControl map[string]bool `json:"accessControl,omitempty"`
|
|
}
|
|
|
|
type AddServiceAccountTokenCommand struct {
|
|
Name string `json:"name" binding:"Required"`
|
|
OrgId int64 `json:"-"`
|
|
Key string `json:"-"`
|
|
SecondsToLive int64 `json:"secondsToLive"`
|
|
Result *models.ApiKey `json:"-"`
|
|
}
|
|
|
|
type SearchServiceAccountsResult struct {
|
|
TotalCount int64 `json:"totalCount"`
|
|
ServiceAccounts []*ServiceAccountDTO `json:"serviceAccounts"`
|
|
Page int `json:"page"`
|
|
PerPage int `json:"perPage"`
|
|
}
|
|
|
|
type ServiceAccountProfileDTO struct {
|
|
Id int64 `json:"id" xorm:"user_id"`
|
|
Name string `json:"name" xorm:"name"`
|
|
Login string `json:"login" xorm:"login"`
|
|
OrgId int64 `json:"orgId" xorm:"org_id"`
|
|
IsDisabled bool `json:"isDisabled" xorm:"is_disabled"`
|
|
Created time.Time `json:"createdAt" xorm:"created"`
|
|
Updated time.Time `json:"updatedAt" xorm:"updated"`
|
|
AvatarUrl string `json:"avatarUrl" xorm:"-"`
|
|
Role string `json:"role" xorm:"role"`
|
|
Teams []string `json:"teams" xorm:"-"`
|
|
Tokens int64 `json:"tokens,omitempty"`
|
|
AccessControl map[string]bool `json:"accessControl,omitempty" xorm:"-"`
|
|
}
|
|
|
|
type ServiceAccountFilter string // used for filtering
|
|
|
|
const (
|
|
FilterOnlyExpiredTokens ServiceAccountFilter = "expiredTokens"
|
|
FilterOnlyDisabled ServiceAccountFilter = "disabled"
|
|
FilterIncludeAll ServiceAccountFilter = "all"
|
|
)
|