Files
Assistant/modules/identity/domain/realm.go
T
2026-08-29 11:57:19 +03:00

37 lines
872 B
Go

package domain
import (
"errors"
"git.cin.su/m/Assistant/contracts/identity"
)
var ErrInvalidRealm = errors.New("invalid principal data realm")
func ValidatePrincipalDataRealm(value identity.PrincipalDataRealm) error {
if !value.Valid() {
return ErrInvalidRealm
}
if value.Kind == identity.DataRealmPersonal && len(value.MemberPrincipalIDs) != 0 {
return ErrInvalidRealm
}
return nil
}
func CanReadRealm(value identity.PrincipalDataRealm, principalID identity.PrincipalID) bool {
if ValidatePrincipalDataRealm(value) != nil || principalID == "" {
return false
}
if value.Kind == identity.DataRealmPublic {
return true
}
if principalID == value.OwnerPrincipalID {
return true
}
for _, member := range value.MemberPrincipalIDs {
if member == principalID {
return value.Kind == identity.DataRealmShared && value.Shared
}
}
return false
}