package identity import "git.cin.su/m/Assistant/platform/ids" type ActorID ids.ID type PrincipalID ids.ID type IdentityID ids.ID type DataRealmKind string const ( DataRealmPersonal DataRealmKind = "PERSONAL" DataRealmShared DataRealmKind = "SHARED" DataRealmPublic DataRealmKind = "PUBLIC" ) // PrincipalDataRealm is an identity-owned access boundary. It does not make // a speaker or World person referent an authenticated principal. type PrincipalDataRealm struct { ID string OwnerPrincipalID PrincipalID Kind DataRealmKind MemberPrincipalIDs []PrincipalID Shared bool Revision int64 RecordedAtUnixMillis int64 } func (r PrincipalDataRealm) Valid() bool { return r.ID != "" && r.OwnerPrincipalID != "" && (r.Kind == DataRealmPersonal || r.Kind == DataRealmShared || r.Kind == DataRealmPublic) && r.Revision > 0 && r.RecordedAtUnixMillis > 0 && (r.Kind != DataRealmShared || r.Shared) } // PrincipalBinding keeps the operational actor separate from the interest on // whose behalf it acts. A Creator is not exempt from this distinction. type PrincipalBinding struct { ActorID ActorID PrincipalID PrincipalID Active bool }