Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var SeedRBAC *gormigrate.Migration = &gormigrate.Migration{ ID: "SEED_RBAC", Migrate: func(db *gorm.DB) error { tx := db.Begin() defer rollback(tx) v := reflect.ValueOf(consts.EntityNames) tableNames := make([]any, v.NumField()) for i := 0; i < v.NumField(); i++ { tableNames[i] = consts.GetTableName(v.Field(i).Interface().(string)) } v = reflect.ValueOf(consts.Permissions) permissions := make([]any, v.NumField()) for i := 0; i < v.NumField(); i++ { permissions[i] = v.Field(i).Interface() } padmin := []models.Permission{} puser := []models.Permission{} for _, t := range tableNames { for _, p := range permissions { permission := models.Permission{ Tag: consts.FormatPermissionTag(p.(string), t.(string)), Description: consts.FormatPermissionDesc(p.(string), t.(string)), } if err := tx.Create(&permission).First(&permission).Error; err != nil { logger.Error(&err, "[Migration.Jobs.SeedRBAC.permissions] error: %s", err.Error()) return err } padmin = append(padmin, permission) puser = append(puser, permission) } } for _, r := range consts.Roles { role := &models.Role{ Name: r.Name, Description: r.Description, } if err := tx.Create(role).First(&role).Error; err != nil { logger.Error(&err, "[Migration.Jobs.SeedRBAC.roles] error: %s", err.Error()) return err } switch r.Name { case "admin": for _, p := range padmin { tx.Model(role).Association(consts.EntityNames.Permissions).Append(p) } case "user": for _, p := range puser { tx.Model(role).Association(consts.EntityNames.Permissions).Append(p) } } } tx.Commit() return nil }, Rollback: func(db *gorm.DB) error { tx := db.Begin() defer rollback(tx) for _, u := range users { if err := tx.Delete(u).Error; err != nil { return err } } tx.Commit() return nil }, }
SeedRBAC inserts the first role-based access control
View Source
var SeedUsers *gormigrate.Migration = &gormigrate.Migration{ ID: "SEED_USERS", Migrate: func(db *gorm.DB) error { tx := db.Begin() defer rollback(tx) for _, u := range users { if err := tx.Create(u).Error; err != nil { return err } apiKey := uuid.Must(uuid.NewV4()).String() if err := tx.Create(&models.UserAPIKey{UserID: u.ID, APIKey: apiKey}).Error; err != nil { return err } } tx.Commit() return nil }, Rollback: func(db *gorm.DB) error { tx := db.Begin() defer rollback(tx) for _, u := range users { if err := tx.Delete(u).Error; err != nil { return err } } tx.Commit() return nil }, }
SeedUsers inserts the first users
Functions ¶
func ServiceAutoMigration ¶
ServiceAutoMigration migrates all the tables and modifications to the connected source
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.