Пример #1
0
        /// <summary>
        /// The this.
        /// </summary>
        /// <param name="accessControl">
        /// The access control.
        /// </param>
        /// <returns>
        /// The <see cref="Entry"/>.
        /// </returns>
        public Entry this[AccessControl accessControl]
        {
            get
            {
                Entry entry;
                if(!this.entryByObjectId.TryGetValue(accessControl.Id, out entry) || entry.CacheId != accessControl.CacheId)
                {
                    entry = new Entry(accessControl);
                    this.entryByObjectId[accessControl.Id] = entry;
                }

                return entry;
            }
        }
Пример #2
0
            /// <summary>
            /// Initializes a new instance of the <see cref="Entry"/> class.
            /// </summary>
            /// <param name="accessControl">
            /// The access control.
            /// </param>
            internal Entry(AccessControl accessControl)
            {
                this.CacheId = accessControl.CacheId;

                // TODO: Nested groups
                var users = accessControl.SubjectGroups.SelectMany(x => x.Members).ToList();
                users.AddRange(accessControl.Subjects);

                this.UserObjectIds = new HashSet<ObjectId>(users.Select(x => x.Id));
                this.RoleUniqueId = accessControl.Role.UniqueId;
            }