package acl import "git.oblat.lv/alex/triggerssmith/internal/user" type UserRole struct { UserID uint `gorm:"index;not null;uniqueIndex:ux_user_role"` RoleID uint `gorm:"index;not null;uniqueIndex:ux_user_role"` Role Role `gorm:"constraint:OnDelete:CASCADE;foreignKey:RoleID;references:ID" json:"role"` User user.User `gorm:"constraint:OnDelete:CASCADE;foreignKey:UserID;references:ID"` } type Resource struct { ID uint `gorm:"primaryKey;autoIncrement" json:"id"` Key string `gorm:"unique;not null" json:"key"` } type Role struct { ID uint `gorm:"primaryKey;autoIncrement" json:"id"` Name string `gorm:"unique;not null" json:"name"` Resources []Resource `gorm:"many2many:role_resources" json:"resources"` Users []user.User `gorm:"many2many:user_roles"` } type RoleResource struct { RoleID uint `gorm:"primaryKey" json:"roleId"` ResourceID uint `gorm:"primaryKey" json:"resourceId"` Role Role `gorm:"constraint:OnDelete:CASCADE;foreignKey:RoleID;references:ID" json:"role"` Resource Resource `gorm:"constraint:OnDelete:CASCADE;foreignKey:ResourceID;references:ID" json:"resource"` }