55 lines
1.3 KiB
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
|
|
}
|