示例#1
0
 private void SetDefaultRights(SocialSubscription socialSubscription)
 {
     SetOwnerDefaultRights(socialSubscription);
     SetSubscriberDefaultRights(socialSubscription);
     DeleteSubscriberEditRight(socialSubscription);
     DeleteAuthorRights(socialSubscription);
 }
示例#2
0
        /// <summary>
        /// Sets up full rights for the owner of the feed.
        /// </summary>
        /// <param name="socialSubscription">The feed to which access rights are being given.</param>
        private void SetOwnerDefaultRights(SocialSubscription socialSubscription)
        {
            Guid socialSubscriptionId = socialSubscription.Id;
            Guid socialChannelOwnerId = GetSocialChannelOwnerId(socialSubscriptionId, socialSubscription.EntityId);

            if (socialChannelOwnerId.Equals(UserConnection.CurrentUser.ContactId))
            {
                return;
            }
            if (socialChannelOwnerId.IsEmpty())
            {
                return;
            }
            CoreEntitySchema schema = UserConnection.EntitySchemaManager.GetInstanceByName("SocialSubscription");

            if (!schema.AdministratedByRecords)
            {
                return;
            }
            Guid ownerUserId = FindOwnerUserId(socialChannelOwnerId);

            if (ownerUserId.IsEmpty())
            {
                return;
            }
            SetEntitySchemaRecordRightLevel(ownerUserId, schema.Name, socialSubscriptionId, EntitySchemaRecordRightLevel.AllowAndGrant, schema.UseDenyRecordRights);
        }
示例#3
0
        /// <summary>
        /// Subscribes a user for an entity feed.
        /// </summary>
        /// <param name="sysAdminUnitId">User unique identifier.</param>
        /// <param name="entityId">Entity unique identifier.</param>
        /// <param name="entitySchemaUId">Entity schema unique identifier.</param>
        private void InnerSubscribeUser(Guid sysAdminUnitId, Guid entityId, Guid entitySchemaUId)
        {
            if (InnerGetIsUserSubscribed(sysAdminUnitId, entityId))
            {
                return;
            }
            CheckChannelReadRights(entitySchemaUId, entityId);
            DeleteSocialUnsubscription(sysAdminUnitId, entityId);
            SocialSubscription socialSubscription = InsertSocialSubscription(sysAdminUnitId, entityId, entitySchemaUId);

            SetDefaultRights(socialSubscription);
        }
示例#4
0
        private void DeleteSubscription(Guid socialSubscriptionId)
        {
            var socialSubscription = new SocialSubscription(UserConnection);
            var conditions         = new Dictionary <string, object> {
                { "Id", socialSubscriptionId }
            };

            if (!socialSubscription.FetchFromDB(conditions))
            {
                return;
            }
            socialSubscription.Delete();
        }
示例#5
0
        private void DeleteSocialSubscription(Guid sysAdminUnitId, Guid entityId)
        {
            var socialSubscription = new SocialSubscription(UserConnection);
            var conditions         = new Dictionary <string, object> {
                { "SysAdminUnit", sysAdminUnitId },
                { "EntityId", entityId }
            };

            if (!socialSubscription.FetchFromDB(conditions))
            {
                return;
            }
            InnerCheckCanUnsubscribe(socialSubscription);
            socialSubscription.Delete();
        }
示例#6
0
        private void InnerCheckCanUnsubscribe(SocialSubscription socialSubscription)
        {
            if (!socialSubscription.CanUnsubscribe)
            {
                throw new InvalidOperationException(new LocalizableString(UserConnection.Workspace.ResourceStorage,
                                                                          "SocialSubscriptionService", "LocalizableStrings.SubscriptionCanNotBeCancelled.Value"));
            }
            var canDeleteRight   = Terrasoft.Core.DB.SchemaRecordRightLevels.CanDelete;
            var schemaRightLevel = DBSecurityEngine.GetEntitySchemaRecordRightLevel("SocialSubscription", socialSubscription.Id);

            if ((schemaRightLevel & canDeleteRight) != canDeleteRight)
            {
                throw new SecurityException(new LocalizableString(UserConnection.Workspace.ResourceStorage,
                                                                  "SocialSubscriptionService", "LocalizableStrings.SubscriptionCanNotBeDeleted.Value"));
            }
        }
示例#7
0
        private void SetSubscriberDefaultRights(SocialSubscription socialSubscription)
        {
            var sysAdminUnitId = socialSubscription.SysAdminUnitId;

            if (sysAdminUnitId.Equals(UserConnection.CurrentUser.Id))
            {
                return;
            }
            var socialSubscriptionId = socialSubscription.Id;
            var schema = UserConnection.EntitySchemaManager.GetInstanceByName("SocialSubscription");

            if (!schema.AdministratedByRecords)
            {
                return;
            }
            DBSecurityEngine.SetEntitySchemaRecordRightLevel(sysAdminUnitId, schema.Name, socialSubscriptionId,
                                                             EntitySchemaRecordRightOperation.Read, EntitySchemaRecordRightLevel.AllowAndGrant, schema.UseDenyRecordRights);
            DBSecurityEngine.SetEntitySchemaRecordRightLevel(sysAdminUnitId, schema.Name, socialSubscriptionId,
                                                             EntitySchemaRecordRightOperation.Delete, EntitySchemaRecordRightLevel.AllowAndGrant, schema.UseDenyRecordRights);
        }
示例#8
0
        private void DeleteSubscriberEditRight(SocialSubscription socialSubscription)
        {
            SysUserInfo currentUser             = UserConnection.CurrentUser;
            Guid        sysAdminUnitId          = socialSubscription.SysAdminUnitId;
            Guid        socialChannelOwnerId    = GetSocialChannelOwnerId(socialSubscription.Id, socialSubscription.EntityId);
            bool        currentUserIsOwner      = socialChannelOwnerId.Equals(currentUser.ContactId);
            bool        currentUserIsSubscriber = sysAdminUnitId.Equals(currentUser.Id);

            if ((currentUserIsSubscriber && currentUserIsOwner) || !currentUserIsSubscriber)
            {
                return;
            }
            var schemaName = "SocialSubscription";
            var schema     = UserConnection.EntitySchemaManager.GetInstanceByName(schemaName);

            if (!schema.AdministratedByRecords)
            {
                return;
            }
            DBSecurityEngine.ForceDeleteEntitySchemaRecordRightLevel(sysAdminUnitId, EntitySchemaRecordRightOperation.Edit, schemaName, socialSubscription.Id);
        }