private void SetDefaultRights(SocialSubscription socialSubscription) { SetOwnerDefaultRights(socialSubscription); SetSubscriberDefaultRights(socialSubscription); DeleteSubscriberEditRight(socialSubscription); DeleteAuthorRights(socialSubscription); }
/// <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); }
/// <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); }
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(); }
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(); }
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")); } }
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); }
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); }