mirror of
https://github.com/grafana/grafana.git
synced 2025-01-24 23:37:01 -06:00
RBAC: Add origin column to seed_assignment (#80326)
* RBAC: Add origin column to seed_assignment * Add OnCall permission migration
This commit is contained in:
parent
c40b2f90ba
commit
c9ac069076
@ -60,6 +60,22 @@ func ToRegistrations(pluginID, pluginName string, regs []plugins.RoleRegistratio
|
||||
return res
|
||||
}
|
||||
|
||||
// PluginIDFromName extracts the plugin ID from the role name
|
||||
func PluginIDFromName(roleName string) string {
|
||||
if !strings.HasPrefix(roleName, ac.PluginRolePrefix) {
|
||||
return ""
|
||||
}
|
||||
|
||||
pluginID := strings.Builder{}
|
||||
for _, c := range roleName[len(ac.PluginRolePrefix):] {
|
||||
if c == ':' {
|
||||
break
|
||||
}
|
||||
pluginID.WriteRune(c)
|
||||
}
|
||||
return pluginID.String()
|
||||
}
|
||||
|
||||
func roleName(pluginID, roleName string) string {
|
||||
return fmt.Sprintf("%v%v:%v", ac.PluginRolePrefix, pluginID, strings.Replace(strings.ToLower(roleName), " ", "-", -1))
|
||||
}
|
||||
|
@ -41,6 +41,12 @@ func AddSeedAssignmentMigrations(mg *migrator.Migrator) {
|
||||
&migrator.Index{Cols: []string{"builtin_role", "action", "scope"}, Type: migrator.UniqueIndex}))
|
||||
|
||||
mg.AddMigration("add primary key to seed_assigment", &seedAssignmentPrimaryKeyMigrator{})
|
||||
|
||||
mg.AddMigration("add origin column to seed_assignment",
|
||||
migrator.NewAddColumnMigration(seedAssignmentTable,
|
||||
&migrator.Column{Name: "origin", Type: migrator.DB_Varchar, Length: 190, Nullable: true}))
|
||||
|
||||
mg.AddMigration("add origin to plugin seed_assignment", &seedAssignmentOnCallMigrator{})
|
||||
}
|
||||
|
||||
type seedAssignmentPrimaryKeyMigrator struct {
|
||||
@ -119,3 +125,21 @@ func (m *seedAssignmentPrimaryKeyMigrator) Exec(sess *xorm.Session, mig *migrato
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type seedAssignmentOnCallMigrator struct {
|
||||
migrator.MigrationBase
|
||||
}
|
||||
|
||||
func (m *seedAssignmentOnCallMigrator) SQL(dialect migrator.Dialect) string {
|
||||
return CodeMigrationSQL
|
||||
}
|
||||
|
||||
func (m *seedAssignmentOnCallMigrator) Exec(sess *xorm.Session, mig *migrator.Migrator) error {
|
||||
_, err := sess.Exec(
|
||||
`UPDATE seed_assignment SET origin = ? WHERE action LIKE ? OR scope = ?`,
|
||||
"grafana-oncall-app",
|
||||
"grafana-oncall-app%",
|
||||
"plugins:id:grafana-oncall-app",
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user