Skip to content

Commit edc9287

Browse files
committed
Add description to dto and test and umbraco plan
1 parent 29edc58 commit edc9287

File tree

15 files changed

+131
-3
lines changed

15 files changed

+131
-3
lines changed

src/Umbraco.Cms.Api.Management/Factories/UserGroupPresentationFactory.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public async Task<UserGroupResponseModel> CreateAsync(IUserGroup userGroup)
5454
{
5555
Id = userGroup.Key,
5656
Name = userGroup.Name ?? string.Empty,
57+
Description = userGroup.Description ?? string.Empty,
5758
Alias = userGroup.Alias,
5859
DocumentStartNode = ReferenceByIdModel.ReferenceOrNull(contentStartNodeKey),
5960
DocumentRootAccess = contentRootAccess,
@@ -87,6 +88,7 @@ public async Task<UserGroupResponseModel> CreateAsync(IReadOnlyUserGroup userGro
8788
{
8889
Id = userGroup.Key,
8990
Name = userGroup.Name ?? string.Empty,
91+
Description = userGroup.Description ?? string.Empty,
9092
Alias = userGroup.Alias,
9193
DocumentStartNode = ReferenceByIdModel.ReferenceOrNull(contentStartNodeKey),
9294
MediaStartNode = ReferenceByIdModel.ReferenceOrNull(mediaStartNodeKey),
@@ -132,6 +134,7 @@ public async Task<Attempt<IUserGroup, UserGroupOperationStatus>> CreateAsync(Cre
132134
{
133135
Name = CleanUserGroupNameOrAliasForXss(requestModel.Name),
134136
Alias = CleanUserGroupNameOrAliasForXss(requestModel.Alias),
137+
Description = requestModel.Description,
135138
Icon = requestModel.Icon,
136139
HasAccessToAllLanguages = requestModel.HasAccessToAllLanguages,
137140
Permissions = requestModel.FallbackPermissions,
@@ -197,9 +200,10 @@ public async Task<Attempt<IUserGroup, UserGroupOperationStatus>> UpdateAsync(IUs
197200

198201
current.Name = CleanUserGroupNameOrAliasForXss(request.Name);
199202
current.Alias = CleanUserGroupNameOrAliasForXss(request.Alias);
203+
current.Description = request.Description;
200204
current.Icon = request.Icon;
201205
current.HasAccessToAllLanguages = request.HasAccessToAllLanguages;
202-
206+
203207
current.Permissions = request.FallbackPermissions;
204208
current.GranularPermissions = await _permissionPresentationFactory.CreatePermissionSetsAsync(request.Permissions);
205209

src/Umbraco.Cms.Api.Management/ViewModels/UserGroup/UserGroupBase.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Umbraco.Cms.Api.Management.ViewModels.UserGroup.Permissions;
1+
using Umbraco.Cms.Api.Management.ViewModels.UserGroup.Permissions;
22

33
namespace Umbraco.Cms.Api.Management.ViewModels.UserGroup;
44

@@ -79,4 +79,9 @@ public class UserGroupBase
7979
/// </summary>
8080
public required ISet<string> FallbackPermissions { get; init; }
8181
public required ISet<IPermissionPresentationModel> Permissions { get; init; }
82+
83+
/// <summary>
84+
/// The description of the user group
85+
/// </summary>
86+
public string? Description { get; set; }
8287
}

src/Umbraco.Core/Models/Membership/IReadOnlyUserGroup.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ public interface IReadOnlyUserGroup
3636
IEnumerable<int> AllowedLanguages => Enumerable.Empty<int>();
3737

3838
public bool HasAccessToLanguage( int languageId) => HasAccessToAllLanguages || AllowedLanguages.Contains(languageId);
39-
}
39+
40+
string? Description { get; }
41+
}

src/Umbraco.Core/Models/Membership/IUserGroup.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public interface IUserGroup : IEntity, IRememberBeingDirty
2222
/// </summary>
2323
string? Name { get; set; }
2424

25+
/// <summary>
26+
/// The description
27+
/// </summary>
28+
string? Description { get; set; }
29+
2530
/// <summary>
2631
/// If this property is true it will give the group access to all languages
2732
/// </summary>

src/Umbraco.Core/Models/Membership/ReadOnlyUserGroup.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public bool Equals(ReadOnlyUserGroup? other)
5555

5656
public string Name { get; }
5757

58+
public string? Description { get; }
59+
5860
public string? Icon { get; }
5961

6062
public int? StartContentId { get; }

src/Umbraco.Core/Models/Membership/UserGroup.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class UserGroup : EntityBase, IUserGroup, IReadOnlyUserGroup
3030
private string _alias;
3131
private string? _icon;
3232
private string _name;
33+
private string? _description;
3334
private bool _hasAccessToAllLanguages;
3435
private ISet<string> _permissions;
3536
private ISet<IGranularPermission> _granularPermissions;
@@ -111,6 +112,13 @@ public string? Name
111112
set => SetPropertyValueAndDetectChanges(value, ref _name!, nameof(Name));
112113
}
113114

115+
[DataMember]
116+
public string? Description
117+
{
118+
get => _description;
119+
set => SetPropertyValueAndDetectChanges(value, ref _description!, nameof(Description));
120+
}
121+
114122
[DataMember]
115123
public bool HasAccessToAllLanguages
116124
{

src/Umbraco.Infrastructure/Migrations/Upgrade/UmbracoPlan.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ protected virtual void DefinePlan()
143143

144144
// To 17.0.1
145145
To<V_17_0_1.EnsureUmbracoPropertyDataColumnCasing>("{BE5CA411-E12D-4455-A59E-F12A669E5363}");
146+
To<V_17_0_1.AddDescriptionToUserGroup>("{D3C5E3C4-1F4C-4D1A-8E2C-1C8D8E2F5B6A}");
146147

147148
// To 18.0.0
148149
// TODO (V18): Enable on 18 branch
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using Microsoft.Extensions.Options;
2+
using Umbraco.Cms.Core;
3+
using Umbraco.Cms.Core.Configuration.Models;
4+
using Umbraco.Cms.Core.Services;
5+
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
6+
7+
namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_17_0_1
8+
{
9+
/// <summary>
10+
/// Migration to add a description column to the user group table.
11+
/// </summary>
12+
public class AddDescriptionToUserGroup : AsyncMigrationBase
13+
{
14+
/// <summary>
15+
/// Initializes a new instance of the <see cref="AddDescriptionToUserGroup"/> class.
16+
/// </summary>
17+
/// <param name="context">The migration context.</param>
18+
/// <param name="dataTypeService">The data type service.</param>
19+
/// <param name="options">The TinyMce to Tiptap migration settings.</param>
20+
public AddDescriptionToUserGroup(
21+
IMigrationContext context,
22+
IDataTypeService dataTypeService,
23+
IOptions<TinyMceToTiptapMigrationSettings> options)
24+
: base(context)
25+
{
26+
}
27+
28+
/// <inheritdoc/>
29+
protected override async Task MigrateAsync()
30+
{
31+
if (TableExists(Constants.DatabaseSchema.Tables.UserGroup))
32+
{
33+
var columns = Context.SqlContext.SqlSyntax.GetColumnsInSchema(Context.Database).ToList();
34+
35+
AddColumn(columns, "description");
36+
}
37+
return;
38+
}
39+
40+
private void AddColumn(List<Persistence.SqlSyntax.ColumnInfo> columns, string column)
41+
{
42+
if (columns
43+
.SingleOrDefault(x => x.TableName == Constants.DatabaseSchema.Tables.UserGroup && x.ColumnName == column) is null)
44+
{
45+
AddColumn<UserGroupDto>(Constants.DatabaseSchema.Tables.UserGroup, column);
46+
}
47+
}
48+
}
49+
}

src/Umbraco.Infrastructure/Persistence/Dtos/UserGroupDto.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public UserGroupDto()
4040
[Index(IndexTypes.UniqueNonClustered, Name = "IX_umbracoUserGroup_userGroupName")]
4141
public string? Name { get; set; }
4242

43+
[Column(Name = "description")]
44+
[SpecialDbType(SpecialDbTypes.NVARCHARMAX)]
45+
[NullSetting(NullSetting = NullSettings.Null)]
46+
public string? Description { get; set; }
47+
4348
[Column("userGroupDefaultPermissions")]
4449
[Length(50)]
4550
[NullSetting(NullSetting = NullSettings.Null)]

src/Umbraco.Infrastructure/Persistence/Factories/UserGroupFactory.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public static IUserGroup BuildEntity(IShortStringHelper shortStringHelper, UserG
3030
userGroup.StartMediaId = dto.StartMediaId;
3131
userGroup.Permissions = dto.UserGroup2PermissionDtos.Select(x => x.Permission).ToHashSet();
3232
userGroup.HasAccessToAllLanguages = dto.HasAccessToAllLanguages;
33+
userGroup.Description = dto.Description;
3334
if (dto.UserGroup2AppDtos != null)
3435
{
3536
foreach (UserGroup2AppDto app in dto.UserGroup2AppDtos)
@@ -84,6 +85,7 @@ public static UserGroupDto BuildDto(IUserGroup entity)
8485
Key = entity.Key,
8586
Alias = entity.Alias,
8687
Name = entity.Name,
88+
Description = entity.Description,
8789
UserGroup2AppDtos = new List<UserGroup2AppDto>(),
8890
CreateDate = entity.CreateDate,
8991
UpdateDate = entity.UpdateDate,

0 commit comments

Comments
 (0)