mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
RBAC: remove dead code (#97234)
This code is unused and always have been
This commit is contained in:
parent
66c0322e7e
commit
e4fbae03a1
@ -3,7 +3,6 @@ package database_test
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -147,17 +146,6 @@ func TestAccessControlStore_GetUserPermissions(t *testing.T) {
|
|||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, permissions, tt.expected)
|
assert.Len(t, permissions, tt.expected)
|
||||||
|
|
||||||
policies, err := database.GetAccessPolicies(context.Background(), user.OrgID, sql.GetSqlxSession(),
|
|
||||||
func(ctx context.Context, orgID int64, scope string) ([]string, error) {
|
|
||||||
return strings.Split(scope, ":"), nil
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
|
||||||
assert.Len(t, policies, tt.policyCount)
|
|
||||||
|
|
||||||
for idx, p := range policies {
|
|
||||||
fmt.Printf("POLICIES[%d] %+v\n", idx, p.Spec)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,148 +0,0 @@
|
|||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/kinds/accesspolicy"
|
|
||||||
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
||||||
"github.com/grafana/grafana/pkg/services/sqlstore/session"
|
|
||||||
"github.com/grafana/grafana/pkg/util"
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetAccessPolicies(ctx context.Context, orgID int64, sql *session.SessionDB, resolver accesscontrol.ScopeAttributeResolverFunc) ([]accesspolicy.Resource, error) {
|
|
||||||
ctx, span := tracer.Start(ctx, "accesscontrol.database.GetAccessPolicies")
|
|
||||||
defer span.End()
|
|
||||||
|
|
||||||
type permissionInfo struct {
|
|
||||||
RoleUID string
|
|
||||||
RoleName string
|
|
||||||
Scope string
|
|
||||||
Action string
|
|
||||||
Created time.Time
|
|
||||||
Updated time.Time
|
|
||||||
}
|
|
||||||
info := &permissionInfo{}
|
|
||||||
policies := make([]accesspolicy.Resource, 0)
|
|
||||||
current := &accesspolicy.Resource{}
|
|
||||||
prevKey := ""
|
|
||||||
rows, err := sql.Query(ctx, `SELECT
|
|
||||||
role.uid as role_uid,
|
|
||||||
role.name as role_name,
|
|
||||||
scope,
|
|
||||||
action,
|
|
||||||
permission.created,
|
|
||||||
permission.updated
|
|
||||||
FROM permission
|
|
||||||
JOIN role ON permission.role_id = role.id
|
|
||||||
WHERE org_id=?
|
|
||||||
ORDER BY role.id ASC, scope ASC, action ASC`, orgID)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
_ = rows.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
created := time.Now()
|
|
||||||
updated := time.Now()
|
|
||||||
|
|
||||||
for rows.Next() {
|
|
||||||
err = rows.Scan(
|
|
||||||
&info.RoleUID,
|
|
||||||
&info.RoleName,
|
|
||||||
&info.Scope,
|
|
||||||
&info.Action,
|
|
||||||
&info.Created,
|
|
||||||
&info.Updated,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
return policies, err
|
|
||||||
}
|
|
||||||
|
|
||||||
key := info.RoleUID + "/" + info.Scope
|
|
||||||
if key != prevKey {
|
|
||||||
created = info.Created
|
|
||||||
updated = info.Updated
|
|
||||||
if len(current.Spec.Rules) > 0 {
|
|
||||||
current.Spec.Rules = accesspolicy.ReduceRules(current.Spec.Rules)
|
|
||||||
policies = append(policies, *current)
|
|
||||||
}
|
|
||||||
scope, err := resolver(ctx, orgID, info.Scope)
|
|
||||||
if err != nil {
|
|
||||||
return policies, err
|
|
||||||
}
|
|
||||||
if len(scope) != 3 {
|
|
||||||
return policies, fmt.Errorf("expected three part scope")
|
|
||||||
}
|
|
||||||
|
|
||||||
current = &accesspolicy.Resource{
|
|
||||||
Metadata: accesspolicy.Metadata{
|
|
||||||
CreationTimestamp: created,
|
|
||||||
UpdateTimestamp: updated,
|
|
||||||
},
|
|
||||||
Spec: accesspolicy.Spec{
|
|
||||||
Role: accesspolicy.RoleRef{
|
|
||||||
Kind: accesspolicy.RoleRefKindRole,
|
|
||||||
Name: info.RoleUID,
|
|
||||||
Xname: info.RoleName,
|
|
||||||
},
|
|
||||||
Scope: accesspolicy.ResourceRef{
|
|
||||||
Kind: scope[0],
|
|
||||||
Name: scope[2],
|
|
||||||
},
|
|
||||||
Rules: make([]accesspolicy.AccessRule, 0),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
// When the value is not a UID, set the prefix to $ -- an invalid name
|
|
||||||
if scope[1] != "uid" {
|
|
||||||
current.Spec.Scope.Name = fmt.Sprintf("$%s:%s", scope[1], scope[2])
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip role+role binding for direct users
|
|
||||||
if strings.HasPrefix(info.RoleName, "managed:users:") {
|
|
||||||
current.Spec.Role.Kind = accesspolicy.RoleRefKindUser
|
|
||||||
current.Spec.Role.Name = "$TODO:" + info.RoleName
|
|
||||||
}
|
|
||||||
|
|
||||||
prevKey = key
|
|
||||||
}
|
|
||||||
|
|
||||||
if info.Created.Before(created) {
|
|
||||||
created = info.Created
|
|
||||||
current.Metadata.CreationTimestamp = created
|
|
||||||
}
|
|
||||||
if info.Updated.After(updated) {
|
|
||||||
updated = info.Updated
|
|
||||||
current.Metadata.UpdateTimestamp = updated
|
|
||||||
}
|
|
||||||
|
|
||||||
action := strings.Split(info.Action, ":")
|
|
||||||
if len(action) != 2 {
|
|
||||||
return policies, fmt.Errorf("expected two part action")
|
|
||||||
}
|
|
||||||
parts := strings.SplitN(action[0], ".", 2)
|
|
||||||
rule := accesspolicy.AccessRule{
|
|
||||||
Verb: action[1],
|
|
||||||
Kind: parts[0],
|
|
||||||
}
|
|
||||||
if len(parts) > 1 {
|
|
||||||
rule.Target = util.Pointer(parts[1])
|
|
||||||
}
|
|
||||||
|
|
||||||
// // When the scope is dashboards or teams
|
|
||||||
// // ... hymmm ... this would imply permissions
|
|
||||||
// if rule.Kind == current.Spec.Scope.Kind {
|
|
||||||
// rule.Kind = "*"
|
|
||||||
// }
|
|
||||||
|
|
||||||
current.Spec.Rules = append(current.Spec.Rules, rule)
|
|
||||||
}
|
|
||||||
if current.Spec.Scope.Name != "" {
|
|
||||||
current.Spec.Rules = accesspolicy.ReduceRules(current.Spec.Rules)
|
|
||||||
policies = append(policies, *current)
|
|
||||||
}
|
|
||||||
return policies, err
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user