yt-gen-app/lib/prepare/prepare-roles.go

55 lines
1.3 KiB
Go

package prepare
import (
"log"
"strings"
"git.ymnuktech.ru/ymnuk/yt-gen-app/structs"
uuid "github.com/satori/go.uuid"
)
// Подготовка ролей
func prepareRoles(project *structs.Project) *structs.Project {
hasAppAdmin := false
hasSecAdmin := false
if len(project.Roles) > 0 {
for i := range project.Roles {
project.Roles[i].Name = strings.Trim(project.Roles[i].Name, " ")
if project.Roles[i].Name == "" {
log.Fatal("Should be set role name")
}
project.Roles[i].Name = strings.ReplaceAll(project.Roles[i].Name, " ", "_")
if project.Roles[i].ID == uuid.Nil {
project.Roles[i].ID = uuid.NewV4()
}
if project.Roles[i].Display == "" {
project.Roles[i].Display = project.Roles[i].Name
}
if project.Roles[i].Name == "APP_ADMIN" {
hasAppAdmin = true
}
if project.Roles[i].Name == "SEC_ADMIN" {
hasSecAdmin = true
}
}
}
if !hasAppAdmin {
project.Roles = append(project.Roles, structs.Role{
ID: uuid.NewV4(),
Name: "APP_ADMIN",
Display: "Администратор приложения",
})
}
if !hasSecAdmin {
project.Roles = append(project.Roles, structs.Role{
ID: uuid.NewV4(),
Name: "SEC_ADMIN",
Display: "Администратор безопасности",
})
}
return project
}