mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -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
|
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 {
|
func roleName(pluginID, roleName string) string {
|
||||||
return fmt.Sprintf("%v%v:%v", ac.PluginRolePrefix, pluginID, strings.Replace(strings.ToLower(roleName), " ", "-", -1))
|
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}))
|
&migrator.Index{Cols: []string{"builtin_role", "action", "scope"}, Type: migrator.UniqueIndex}))
|
||||||
|
|
||||||
mg.AddMigration("add primary key to seed_assigment", &seedAssignmentPrimaryKeyMigrator{})
|
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 {
|
type seedAssignmentPrimaryKeyMigrator struct {
|
||||||
@ -119,3 +125,21 @@ func (m *seedAssignmentPrimaryKeyMigrator) Exec(sess *xorm.Session, mig *migrato
|
|||||||
|
|
||||||
return nil
|
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