From 08943ed305c0ef4120641e2eea7417d81b1f1b1e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 10 May 2017 12:17:10 -0400 Subject: [PATCH] group access all and readonly schema changes --- src/Core/Models/Api/Request/GroupRequestModel.cs | 3 +++ src/Core/Models/Api/Response/GroupResponseModel.cs | 2 ++ src/Core/Models/Table/CollectionGroup.cs | 11 +++++++++++ src/Core/Models/Table/Group.cs | 1 + src/Sql/dbo/Stored Procedures/Group_Create.sql | 3 +++ .../Stored Procedures/Group_CreateWithCollections.sql | 9 ++++++--- src/Sql/dbo/Stored Procedures/Group_Update.sql | 2 ++ .../Stored Procedures/Group_UpdateWithCollections.sql | 6 ++++-- src/Sql/dbo/Tables/CollectionGroup.sql | 1 + src/Sql/dbo/Tables/Group.sql | 1 + 10 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 src/Core/Models/Table/CollectionGroup.cs diff --git a/src/Core/Models/Api/Request/GroupRequestModel.cs b/src/Core/Models/Api/Request/GroupRequestModel.cs index 27ddb21f2e..6125e32b20 100644 --- a/src/Core/Models/Api/Request/GroupRequestModel.cs +++ b/src/Core/Models/Api/Request/GroupRequestModel.cs @@ -11,6 +11,8 @@ namespace Bit.Core.Models.Api [Required] [StringLength(300)] public string Name { get; set; } + [Required] + public bool? AccessAll { get; set; } public IEnumerable CollectionIds { get; set; } public Group ToGroup(Guid orgId) @@ -24,6 +26,7 @@ namespace Bit.Core.Models.Api public Group ToGroup(Group existingGroup) { existingGroup.Name = Name; + existingGroup.AccessAll = AccessAll.Value; return existingGroup; } } diff --git a/src/Core/Models/Api/Response/GroupResponseModel.cs b/src/Core/Models/Api/Response/GroupResponseModel.cs index 6c7dbe83b7..1b4cabd057 100644 --- a/src/Core/Models/Api/Response/GroupResponseModel.cs +++ b/src/Core/Models/Api/Response/GroupResponseModel.cs @@ -17,11 +17,13 @@ namespace Bit.Core.Models.Api Id = group.Id.ToString(); OrganizationId = group.OrganizationId.ToString(); Name = group.Name; + AccessAll = group.AccessAll; } public string Id { get; set; } public string OrganizationId { get; set; } public string Name { get; set; } + public bool AccessAll { get; set; } } public class GroupDetailsResponseModel : GroupResponseModel diff --git a/src/Core/Models/Table/CollectionGroup.cs b/src/Core/Models/Table/CollectionGroup.cs new file mode 100644 index 0000000000..5e6d516a56 --- /dev/null +++ b/src/Core/Models/Table/CollectionGroup.cs @@ -0,0 +1,11 @@ +using System; + +namespace Bit.Core.Models.Table +{ + public class CollectionGroup + { + public Guid CollectionId { get; set; } + public Guid OrganizationUserId { get; set; } + public bool ReadOnly { get; set; } + } +} diff --git a/src/Core/Models/Table/Group.cs b/src/Core/Models/Table/Group.cs index 22d755ce05..b8e8b5b2f8 100644 --- a/src/Core/Models/Table/Group.cs +++ b/src/Core/Models/Table/Group.cs @@ -8,6 +8,7 @@ namespace Bit.Core.Models.Table public Guid Id { get; set; } public Guid OrganizationId { get; set; } public string Name { get; set; } + public bool AccessAll { get; set; } public DateTime CreationDate { get; internal set; } = DateTime.UtcNow; public DateTime RevisionDate { get; internal set; } = DateTime.UtcNow; diff --git a/src/Sql/dbo/Stored Procedures/Group_Create.sql b/src/Sql/dbo/Stored Procedures/Group_Create.sql index 4e4926383a..1ae1ba3ddf 100644 --- a/src/Sql/dbo/Stored Procedures/Group_Create.sql +++ b/src/Sql/dbo/Stored Procedures/Group_Create.sql @@ -2,6 +2,7 @@ @Id UNIQUEIDENTIFIER, @OrganizationId UNIQUEIDENTIFIER, @Name VARCHAR(MAX), + @AccessAll BIT, @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7) AS @@ -13,6 +14,7 @@ BEGIN [Id], [OrganizationId], [Name], + [AccessAll], [CreationDate], [RevisionDate] ) @@ -21,6 +23,7 @@ BEGIN @Id, @OrganizationId, @Name, + @AccessAll, @CreationDate, @RevisionDate ) diff --git a/src/Sql/dbo/Stored Procedures/Group_CreateWithCollections.sql b/src/Sql/dbo/Stored Procedures/Group_CreateWithCollections.sql index 1a08d26ea0..523455604b 100644 --- a/src/Sql/dbo/Stored Procedures/Group_CreateWithCollections.sql +++ b/src/Sql/dbo/Stored Procedures/Group_CreateWithCollections.sql @@ -2,6 +2,7 @@ @Id UNIQUEIDENTIFIER, @OrganizationId UNIQUEIDENTIFIER, @Name VARCHAR(MAX), + @AccessAll BIT, @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7), @CollectionIds AS [dbo].[GuidIdArray] READONLY @@ -9,7 +10,7 @@ AS BEGIN SET NOCOUNT ON - EXEC [dbo].[Group_Create] @Id, @OrganizationId, @Name, @CreationDate, @RevisionDate + EXEC [dbo].[Group_Create] @Id, @OrganizationId, @Name, @AccessAll, @CreationDate, @RevisionDate ;WITH [AvailableCollectionsCTE] AS( SELECT @@ -22,11 +23,13 @@ BEGIN INSERT INTO [dbo].[CollectionGroup] ( [CollectionId], - [GroupId] + [GroupId], + [ReadOnly] ) SELECT [Id], - @Id + @Id, + 0 FROM @CollectionIds WHERE diff --git a/src/Sql/dbo/Stored Procedures/Group_Update.sql b/src/Sql/dbo/Stored Procedures/Group_Update.sql index 743955dd45..846d8a237f 100644 --- a/src/Sql/dbo/Stored Procedures/Group_Update.sql +++ b/src/Sql/dbo/Stored Procedures/Group_Update.sql @@ -2,6 +2,7 @@ @Id UNIQUEIDENTIFIER, @OrganizationId UNIQUEIDENTIFIER, @Name VARCHAR(MAX), + @AccessAll BIT, @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7) AS @@ -13,6 +14,7 @@ BEGIN SET [OrganizationId] = @OrganizationId, [Name] = @Name, + [AccessAll] = @AccessAll, [CreationDate] = @CreationDate, [RevisionDate] = @RevisionDate WHERE diff --git a/src/Sql/dbo/Stored Procedures/Group_UpdateWithCollections.sql b/src/Sql/dbo/Stored Procedures/Group_UpdateWithCollections.sql index 0c2324767f..ce16903fa7 100644 --- a/src/Sql/dbo/Stored Procedures/Group_UpdateWithCollections.sql +++ b/src/Sql/dbo/Stored Procedures/Group_UpdateWithCollections.sql @@ -2,6 +2,7 @@ @Id UNIQUEIDENTIFIER, @OrganizationId UNIQUEIDENTIFIER, @Name VARCHAR(MAX), + @AccessAll BIT, @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7), @CollectionIds AS [dbo].[GuidIdArray] READONLY @@ -9,7 +10,7 @@ AS BEGIN SET NOCOUNT ON - EXEC [dbo].[Group_Update] @Id, @OrganizationId, @Name, @CreationDate, @RevisionDate + EXEC [dbo].[Group_Update] @Id, @OrganizationId, @Name, @AccessAll, @CreationDate, @RevisionDate ;WITH [AvailableCollectionsCTE] AS( SELECT @@ -31,7 +32,8 @@ BEGIN INSERT VALUES ( [Source].[Id], - @Id + @Id, + 0 ) WHEN NOT MATCHED BY SOURCE AND [Target].[GroupId] = @Id THEN diff --git a/src/Sql/dbo/Tables/CollectionGroup.sql b/src/Sql/dbo/Tables/CollectionGroup.sql index 9206c83dd5..d3398b7a25 100644 --- a/src/Sql/dbo/Tables/CollectionGroup.sql +++ b/src/Sql/dbo/Tables/CollectionGroup.sql @@ -1,6 +1,7 @@ CREATE TABLE [dbo].[CollectionGroup] ( [CollectionId] UNIQUEIDENTIFIER NOT NULL, [GroupId] UNIQUEIDENTIFIER NOT NULL, + [ReadOnly] BIT NOT NULL, CONSTRAINT [PK_CollectionGroup] PRIMARY KEY CLUSTERED ([CollectionId] ASC, [GroupId] ASC), CONSTRAINT [FK_CollectionGroup_Collection] FOREIGN KEY ([CollectionId]) REFERENCES [dbo].[Collection] ([Id]), CONSTRAINT [FK_CollectionGroup_Group] FOREIGN KEY ([GroupId]) REFERENCES [dbo].[Group] ([Id]) ON DELETE CASCADE diff --git a/src/Sql/dbo/Tables/Group.sql b/src/Sql/dbo/Tables/Group.sql index b26245b913..5219fd2bf8 100644 --- a/src/Sql/dbo/Tables/Group.sql +++ b/src/Sql/dbo/Tables/Group.sql @@ -2,6 +2,7 @@ [Id] UNIQUEIDENTIFIER NOT NULL, [OrganizationId] UNIQUEIDENTIFIER NOT NULL, [Name] NVARCHAR (50) NOT NULL, + [AccessAll] BIT NOT NULL, [CreationDate] DATETIME NOT NULL, [RevisionDate] DATETIME NOT NULL, CONSTRAINT [PK_Group] PRIMARY KEY CLUSTERED ([Id] ASC),