diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs index eaceddba70..c9b7cb21b3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/AbpValidationAttributeAdapterProvider.cs @@ -22,6 +22,11 @@ namespace Volo.Abp.AspNetCore.Mvc.DataAnnotations { return new DynamicStringLengthAttributeAdapter((DynamicStringLengthAttribute) attribute, stringLocalizer); } + + if (type == typeof(DynamicMaxLengthAttribute)) + { + return new DynamicMaxLengthAttributeAdapter((DynamicMaxLengthAttribute) attribute, stringLocalizer); + } return _defaultAdapter.GetAttributeAdapter(attribute, stringLocalizer); } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicMaxLengthAttributeAdapter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicMaxLengthAttributeAdapter.cs new file mode 100644 index 0000000000..f8193a2e79 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DataAnnotations/DynamicMaxLengthAttributeAdapter.cs @@ -0,0 +1,46 @@ +using System.Globalization; +using Microsoft.AspNetCore.Mvc.DataAnnotations; +using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; +using Microsoft.Extensions.Localization; +using Volo.Abp.Validation; + +namespace Volo.Abp.AspNetCore.Mvc.DataAnnotations +{ + public class DynamicMaxLengthAttributeAdapter : AttributeAdapterBase + { + private readonly string _max; + + public DynamicMaxLengthAttributeAdapter( + DynamicMaxLengthAttribute attribute, + IStringLocalizer stringLocalizer) + : base(attribute, stringLocalizer) + { + _max = Attribute.Length.ToString(CultureInfo.InvariantCulture); + } + + public override string GetErrorMessage(ModelValidationContextBase validationContext) + { + Check.NotNull(validationContext, nameof(validationContext)); + + return GetErrorMessage( + validationContext.ModelMetadata, + validationContext.ModelMetadata.GetDisplayName(), + Attribute.Length + ); + } + + public override void AddValidation(ClientModelValidationContext context) + { + Check.NotNull(context, nameof(context)); + + MergeAttribute(context.Attributes, "data-val", "true"); + MergeAttribute(context.Attributes, "data-val-maxlength", GetErrorMessage(context)); + MergeAttribute(context.Attributes, "data-val-maxlength-max", _max); + + if (Attribute.Length != int.MaxValue) + { + MergeAttribute(context.Attributes, "data-val-maxlength-max", _max); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index d148346836..b11e3a54f4 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -55,7 +55,7 @@ namespace Volo.Abp.Cli.Commands var environment = JObject.Parse(environmentJson); apiUrl = environment["apis"]["default"]["url"].ToString(); } - apiUrl += "/api/abp/api-definition?IncludeTypes=true"; + apiUrl = apiUrl.EnsureEndsWith('/') + "api/abp/api-definition?IncludeTypes=true"; var uiFramework = GetUiFramework(commandLineArgs); @@ -469,17 +469,21 @@ namespace Volo.Abp.Cli.Commands if (returnValueType.Contains("<")) { returnValueType = returnValueType.Split('<')[1].Split('>')[0]; + var clrType = Type.GetType(returnValueType, throwOnError: false); + if (clrType != null && TypeHelper.IsPrimitiveExtended(clrType, includeEnums: true)) + { + return null; + } + if (returnValueType.StartsWith("Volo.Abp.Application.Dtos") - || returnValueType.StartsWith("System.Collections") - || returnValueType == "System.String" - || returnValueType == "System.Void" - || returnValueType.Contains("System.Net.HttpStatusCode?") - || returnValueType.Contains("IActionResult") - || returnValueType.Contains("ActionResult") - || returnValueType.Contains("IStringValueType") - || returnValueType.Contains("IValueValidator") - || returnValueType.Contains("Guid") - ) + || returnValueType.StartsWith("System.Collections") + || returnValueType == "System.Void" + || returnValueType.Contains("System.Net.HttpStatusCode?") + || returnValueType.Contains("IActionResult") + || returnValueType.Contains("ActionResult") + || returnValueType.Contains("IStringValueType") + || returnValueType.Contains("IValueValidator") + ) { return null; } diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicMaxLengthAttribute.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicMaxLengthAttribute.cs new file mode 100644 index 0000000000..59d5bcfa47 --- /dev/null +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Validation/DynamicMaxLengthAttribute.cs @@ -0,0 +1,39 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics; +using System.Reflection; +using JetBrains.Annotations; + +namespace Volo.Abp.Validation +{ + public class DynamicMaxLengthAttribute : MaxLengthAttribute + { + private static readonly FieldInfo MaximumLengthField; + + static DynamicMaxLengthAttribute() + { + MaximumLengthField = typeof(MaxLengthAttribute).GetField( + "k__BackingField", + BindingFlags.Instance | BindingFlags.NonPublic + ); + Debug.Assert(MaximumLengthField != null, nameof(MaximumLengthField) + " != null"); + } + + public DynamicMaxLengthAttribute( + [NotNull] Type sourceType, + [CanBeNull] string maximumLengthPropertyName) + { + Check.NotNull(sourceType, nameof(sourceType)); + + if (maximumLengthPropertyName != null) + { + var maximumLengthProperty = sourceType.GetProperty( + maximumLengthPropertyName, + BindingFlags.Static | BindingFlags.Public + ); + Debug.Assert(maximumLengthProperty != null, nameof(maximumLengthProperty) + " != null"); + MaximumLengthField.SetValue(this, (int) maximumLengthProperty.GetValue(null)); + } + } + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs index ae622acee2..6ce47c4679 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController.cs @@ -50,13 +50,23 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation public class ValidationDynamicTestModel { - [DynamicStringLength(typeof(Consts), nameof(Consts.MaxValue2Length), nameof(Consts.MinValue2Length))] + [DynamicStringLength(typeof(Consts), nameof(Consts.MaxValue1Length), nameof(Consts.MinValue1Length))] public string Value1 { get; set; } + [DynamicMaxLength(typeof(Consts), nameof(Consts.MaxValue2Length))] + public string Value2 { get; set; } + + [DynamicMaxLength(typeof(Consts), nameof(Consts.MaxValue3Length))] + public int[] Value3 { get; set; } + public static class Consts { - public static int MinValue2Length { get; set; } = 2; - public static int MaxValue2Length { get; set; } = 7; + public static int MinValue1Length { get; set; } = 2; + public static int MaxValue1Length { get; set; } = 7; + + public static int MaxValue2Length { get; set; } = 4; + + public static int MaxValue3Length { get; set; } = 2; } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs index 767ff7aa3e..9e22784ba7 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Validation/ValidationTestController_Tests.cs @@ -61,17 +61,24 @@ namespace Volo.Abp.AspNetCore.Mvc.Validation [Fact] public async Task Should_Validate_Dynamic_Length_Object_Result_Success() { - var result = await GetResponseAsStringAsync("/api/validation-test/object-result-action-dynamic-length?value1=hello"); + var result = await GetResponseAsStringAsync("/api/validation-test/object-result-action-dynamic-length?value1=hello&value3[0]=53&value3[1]=54"); result.ShouldBe("hello"); + } [Fact] public async Task Should_Validate_Dynamic_Length_Object_Result_Failing() { - var result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=a", HttpStatusCode.BadRequest); //value1 has min length of 2 chars. + var result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=a", HttpStatusCode.BadRequest); //value1 has min string length of 2 chars. + result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); + + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=12345678", HttpStatusCode.BadRequest); //value1 has max string length of 7 chars. + result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); + + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value2=12345", HttpStatusCode.BadRequest); //value2 has max length of 5 chars. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); - result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=12345678", HttpStatusCode.BadRequest); //value1 has max length of 7 chars. + result = await GetResponseAsObjectAsync("/api/validation-test/object-result-action-dynamic-length?value1=123458&value3[0]=53&value3[1]=54&value3[2]=55&value3[3]=56", HttpStatusCode.BadRequest); //value3 has max length of 2. result.Error.ValidationErrors.Length.ShouldBeGreaterThan(0); } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogActionConsts.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogActionConsts.cs index 86652aacec..5f1967804e 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogActionConsts.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogActionConsts.cs @@ -2,10 +2,19 @@ { public class AuditLogActionConsts { - public const int MaxServiceNameLength = 256; + /// + /// Default value: 256 + /// + public static int MaxServiceNameLength { get; set; } = 256; - public const int MaxMethodNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxMethodNameLength { get; set; } = 128; - public const int MaxParametersLength = 2000; + /// + /// Default value: 2000 + /// + public static int MaxParametersLength { get; set; } = 2000; } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogConsts.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogConsts.cs index 504e7451e0..4a8c723b76 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogConsts.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/AuditLogConsts.cs @@ -2,31 +2,67 @@ { public static class AuditLogConsts { - public const int MaxApplicationNameLength = 96; + /// + /// Default value: 96 + /// + public static int MaxApplicationNameLength { get; set; } = 96; - public const int MaxClientIpAddressLength = 64; + /// + /// Default value: 64 + /// + public static int MaxClientIpAddressLength { get; set; } = 64; - public const int MaxClientNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxClientNameLength { get; set; } = 128; - public const int MaxClientIdLength = 64; + /// + /// Default value: 64 + /// + public static int MaxClientIdLength { get; set; } = 64; - public const int MaxCorrelationIdLength = 64; + /// + /// Default value: 64 + /// + public static int MaxCorrelationIdLength { get; set; } = 64; - public const int MaxBrowserInfoLength = 512; + /// + /// Default value: 512 + /// + public static int MaxBrowserInfoLength { get; set; } = 512; - public const int MaxExceptionsLength = 4000; + /// + /// Default value: 4000 + /// + public static int MaxExceptionsLength { get; set; } = 4000; //TODO: Replace with MaxExceptionsLength in v3.0 public static int MaxExceptionsLengthValue { get; set; } = MaxExceptionsLength; - public const int MaxCommentsLength = 256; + /// + /// Default value: 256 + /// + public static int MaxCommentsLength { get; set; } = 256; - public const int MaxUrlLength = 256; + /// + /// Default value: 256 + /// + public static int MaxUrlLength { get; set; } = 256; - public const int MaxHttpMethodLength = 16; + /// + /// Default value: 16 + /// + public static int MaxHttpMethodLength { get; set; } = 16; - public const int MaxUserNameLength = 256; + /// + /// Default value: 256 + /// + public static int MaxUserNameLength { get; set; } = 256; - public const int MaxTenantNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxTenantNameLength { get; set; } = 64; } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityChangeConsts.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityChangeConsts.cs index d19407cfa4..b7f88db3e2 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityChangeConsts.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityChangeConsts.cs @@ -2,8 +2,14 @@ { public class EntityChangeConsts { - public const int MaxEntityTypeFullNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxEntityTypeFullNameLength { get; set; } = 128; - public const int MaxEntityIdLength = 128; + /// + /// Default value: 128 + /// + public static int MaxEntityIdLength { get; set; } = 128; } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityPropertyChangeConsts.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityPropertyChangeConsts.cs index 2ac9204395..8d592e06aa 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityPropertyChangeConsts.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared/Volo/Abp/AuditLogging/EntityPropertyChangeConsts.cs @@ -2,12 +2,24 @@ { public class EntityPropertyChangeConsts { - public const int MaxNewValueLength = 512; + /// + /// Default value: 512 + /// + public static int MaxNewValueLength { get; set; } = 512; - public const int MaxOriginalValueLength = 512; + /// + /// Default value: 512 + /// + public static int MaxOriginalValueLength { get; set; } = 512; - public const int MaxPropertyNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxPropertyNameLength { get; set; } = 128; - public const int MaxPropertyTypeFullNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxPropertyTypeFullNameLength { get; set; } = 64; } } diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared/Volo/Abp/BackgroundJobs/BackgroundJobRecordConsts.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared/Volo/Abp/BackgroundJobs/BackgroundJobRecordConsts.cs index f4418bc423..01f935b30e 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared/Volo/Abp/BackgroundJobs/BackgroundJobRecordConsts.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared/Volo/Abp/BackgroundJobs/BackgroundJobRecordConsts.cs @@ -2,8 +2,14 @@ { public static class BackgroundJobRecordConsts { - public const int MaxJobNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxJobNameLength { get; set; } = 128; - public const int MaxJobArgsLength = 1024 * 1024; + /// + /// Default value: 1024 * 1024 + /// + public static int MaxJobArgsLength { get; set; } = 1024 * 1024; } } diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs index 0a71451f9f..22d127a1f1 100644 --- a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs +++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared/Volo/Abp/BlobStoring/Database/DatabaseContainerConsts.cs @@ -2,6 +2,9 @@ { public static class DatabaseContainerConsts { - public const int MaxNameLength = 128; + /// + /// Default value: 128. + /// + public static int MaxNameLength { get; set; } = 128; } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Create.cshtml.cs b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Create.cshtml.cs index b2d89fbd55..6f4bae5e63 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Create.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Create.cshtml.cs @@ -2,6 +2,7 @@ using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Validation; using Volo.Blogging.Admin.Blogs; using Volo.Blogging.Blogs; @@ -44,14 +45,14 @@ namespace Volo.Blogging.Admin.Pages.Blogging.Admin.Blogs public class BlogCreateModalView { [Required] - [StringLength(BlogConsts.MaxNameLength)] + [DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))] public string Name { get; set; } [Required] - [StringLength(BlogConsts.MaxShortNameLength)] + [DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxShortNameLength))] public string ShortName { get; set; } - [StringLength(BlogConsts.MaxDescriptionLength)] + [DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxDescriptionLength))] public string Description { get; set; } } diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Edit.cshtml.cs b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Edit.cshtml.cs index 536810e015..8d0b2ba978 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Edit.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Edit.cshtml.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Validation; using Volo.Blogging.Admin.Blogs; using Volo.Blogging.Blogs; @@ -58,14 +59,14 @@ namespace Volo.Blogging.Admin.Pages.Blogging.Admin.Blogs public Guid Id { get; set; } [Required] - [StringLength(BlogConsts.MaxNameLength)] + [DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))] public string Name { get; set; } [Required] - [StringLength(BlogConsts.MaxShortNameLength)] + [DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxShortNameLength))] public string ShortName { get; set; } - [StringLength(BlogConsts.MaxDescriptionLength)] + [DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxDescriptionLength))] public string Description { get; set; } } } diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Files/BloggingWebConsts.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Files/BloggingWebConsts.cs index ae4eb32dff..d9eb284ac6 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Files/BloggingWebConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Files/BloggingWebConsts.cs @@ -6,7 +6,10 @@ namespace Volo.Blogging { public class FileUploading { - public const int MaxFileSize = 5242880; //5MB + /// + /// Default value: 5242880 + /// + public static int MaxFileSize { get; set; } = 5242880; //5MB public static int MaxFileSizeAsMegabytes => Convert.ToInt32((MaxFileSize / 1024f) / 1024f); } diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/CreatePostDto.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/CreatePostDto.cs index 164e4f691f..96cfbd6859 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/CreatePostDto.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/CreatePostDto.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; namespace Volo.Blogging.Posts { @@ -8,22 +9,22 @@ namespace Volo.Blogging.Posts public Guid BlogId { get; set; } [Required] - [StringLength(PostConsts.MaxTitleLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxTitleLength))] public string Title { get; set; } [Required] public string CoverImage { get; set; } [Required] - [StringLength(PostConsts.MaxUrlLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxUrlLength))] public string Url { get; set; } - [StringLength(PostConsts.MaxContentLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxContentLength))] public string Content { get; set; } public string Tags { get; set; } - [StringLength(PostConsts.MaxDescriptionLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxDescriptionLength))] public string Description { get; set; } } diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Blogs/BlogConsts.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Blogs/BlogConsts.cs index 502a4364e7..b4b428207c 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Blogs/BlogConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Blogs/BlogConsts.cs @@ -2,10 +2,19 @@ { public static class BlogConsts { - public const int MaxNameLength = 256; + /// + /// Default value: 256 + /// + public static int MaxNameLength { get; set; } = 256; - public const int MaxShortNameLength = 32; + /// + /// Default value: 32 + /// + public static int MaxShortNameLength { get; set; } = 32; - public const int MaxDescriptionLength = 1024; + /// + /// Default value: 1024 + /// + public static int MaxDescriptionLength { get; set; } = 1024; } } diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Comments/CommentConsts.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Comments/CommentConsts.cs index 34cc655fb3..359b322cbf 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Comments/CommentConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Comments/CommentConsts.cs @@ -2,6 +2,9 @@ { public class CommentConsts { - public const int MaxTextLength = 1024; + /// + /// Default value: 1024 + /// + public static int MaxTextLength { get; set; } = 1024; } } diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Posts/PostConsts.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Posts/PostConsts.cs index 665984dfbb..de91caa2d3 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Posts/PostConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Posts/PostConsts.cs @@ -2,16 +2,34 @@ { public static class PostConsts { - public const int MaxTitleLength = 512; + /// + /// Default value: 512 + /// + public static int MaxTitleLength { get; set; } = 512; - public const int MaxUrlLength = 64; + /// + /// Default value: 64 + /// + public static int MaxUrlLength { get; set; } = 64; - public const int MaxContentLength = 1024 * 1024; //1MB + /// + /// Default value: 1024 * 1024 + /// + public static int MaxContentLength { get; set; } = 1024 * 1024; //1MB - public const int MaxDescriptionLength = 1000; + /// + /// Default value: 1000 + /// + public static int MaxDescriptionLength { get; set; } = 1000; - public const int MaxTitleLengthToBeSeoFriendly = 60; + /// + /// Default value: 60 + /// + public static int MaxTitleLengthToBeSeoFriendly { get; set; } = 60; - public const int MaxSeoFriendlyDescriptionLength = 200; + /// + /// Default value: 200 + /// + public static int MaxSeoFriendlyDescriptionLength { get; set; } = 200; } } diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Tagging/TagConsts.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Tagging/TagConsts.cs index c75ccd4184..ad2be87ca8 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Tagging/TagConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Tagging/TagConsts.cs @@ -2,8 +2,14 @@ { public class TagConsts { - public const int MaxNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxNameLength { get; set; } = 64; - public const int MaxDescriptionLength = 512; + /// + /// Default value: 512 + /// + public static int MaxDescriptionLength { get; set; } = 512; } } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml.cs index c2ebcc441b..6d998a7172 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.Validation; using Volo.Blogging.Blogs; using Volo.Blogging.Pages.Blogs.Shared.Helpers; using Volo.Blogging.Posts; @@ -85,7 +86,7 @@ namespace Volo.Blogging.Pages.Blog.Posts public Guid BlogId { get; set; } [Required] - [StringLength(PostConsts.MaxTitleLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxTitleLength))] public string Title { get; set; } [Required] @@ -93,14 +94,14 @@ namespace Volo.Blogging.Pages.Blog.Posts public string CoverImage { get; set; } [Required] - [StringLength(PostConsts.MaxUrlLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxUrlLength))] public string Url { get; set; } [HiddenInput] - [StringLength(PostConsts.MaxContentLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxContentLength))] public string Content { get; set; } - [StringLength(PostConsts.MaxDescriptionLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxDescriptionLength))] public string Description { get; set; } public string Tags { get; set; } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/New.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/New.cshtml.cs index 41c8f43ddd..3930a79900 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/New.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/New.cshtml.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.Validation; using Volo.Blogging.Blogs; using Volo.Blogging.Blogs.Dtos; using Volo.Blogging.Pages.Blogs.Shared.Helpers; @@ -79,7 +80,7 @@ namespace Volo.Blogging.Pages.Blog.Posts public Guid BlogId { get; set; } [Required] - [StringLength(PostConsts.MaxTitleLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxTitleLength))] public string Title { get; set; } [Required] @@ -87,16 +88,16 @@ namespace Volo.Blogging.Pages.Blog.Posts public string CoverImage { get; set; } [Required] - [StringLength(PostConsts.MaxUrlLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxUrlLength))] public string Url { get; set; } [HiddenInput] - [StringLength(PostConsts.MaxContentLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxContentLength))] public string Content { get; set; } public string Tags { get; set; } - [StringLength(PostConsts.MaxDescriptionLength)] + [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxDescriptionLength))] public string Description { get; set; } } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/GetAllInput.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/GetAllInput.cs index e375f6ba0b..1512c13da9 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/GetAllInput.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/GetAllInput.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Application.Dtos; +using Volo.Abp.Validation; using Volo.Docs.Documents; namespace Volo.Docs.Admin.Documents @@ -9,19 +10,19 @@ namespace Volo.Docs.Admin.Documents { public Guid? ProjectId { get; set; } - [StringLength(DocumentConsts.MaxNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxNameLength))] public string Name { get; set; } - [StringLength(DocumentConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxVersionNameLength))] public string Version { get; set; } - [StringLength(DocumentConsts.MaxLanguageCodeNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxLanguageCodeNameLength))] public string LanguageCode { get; set; } - [StringLength(DocumentConsts.MaxFileNameNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxFileNameNameLength))] public string FileName { get; set; } - [StringLength(DocumentConsts.MaxFormatNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxFormatNameLength))] public string Format { get; set; } public DateTime? CreationTimeMin { get; set; } diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullAllDocumentInput.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullAllDocumentInput.cs index d796c00e64..c375de8b67 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullAllDocumentInput.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullAllDocumentInput.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.Docs.Documents; namespace Volo.Docs.Admin.Documents @@ -8,10 +9,10 @@ namespace Volo.Docs.Admin.Documents { public Guid ProjectId { get; set; } - [StringLength(DocumentConsts.MaxLanguageCodeNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxLanguageCodeNameLength))] public string LanguageCode { get; set; } - [StringLength(DocumentConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxVersionNameLength))] public string Version { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullDocumentInput.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullDocumentInput.cs index fcc9816b02..dce5de0420 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullDocumentInput.cs +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/PullDocumentInput.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.Docs.Documents; namespace Volo.Docs.Admin.Documents @@ -8,13 +9,13 @@ namespace Volo.Docs.Admin.Documents { public Guid ProjectId { get; set; } - [StringLength(DocumentConsts.MaxNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxNameLength))] public string Name { get; set; } - [StringLength(DocumentConsts.MaxLanguageCodeNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxLanguageCodeNameLength))] public string LanguageCode { get; set; } - [StringLength(DocumentConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxVersionNameLength))] public string Version { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Create.cshtml.cs b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Create.cshtml.cs index e6de68a3b1..506b674ba5 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Create.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Create.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.Validation; using Volo.Docs.Admin.Projects; using Volo.Docs.Projects; @@ -70,11 +71,11 @@ namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects public abstract class CreateProjectViewModelBase { [Required] - [StringLength(ProjectConsts.MaxNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxNameLength))] public string Name { get; set; } [Required] - [StringLength(ProjectConsts.MaxShortNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxShortNameLength))] [InputInfoText("ShortNameInfoText")] public string ShortName { get; set; } @@ -82,21 +83,21 @@ namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects [SelectItems(nameof(FormatTypes))] public string Format { get; set; } - [StringLength(ProjectConsts.MaxDefaultDocumentNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxDefaultDocumentNameLength))] public string DefaultDocumentName { get; set; } = "Index"; - [StringLength(ProjectConsts.MaxNavigationDocumentNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxNavigationDocumentNameLength))] public string NavigationDocumentName { get; set; } = "docs-nav.json"; - [StringLength(ProjectConsts.MaxParametersDocumentNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxParametersDocumentNameLength))] public string ParametersDocumentName { get; set; } = "docs-params.json"; - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string MinimumVersion { get; set; } public string MainWebsiteUrl { get; set; } - [StringLength(ProjectConsts.MaxLatestVersionBranchNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxLatestVersionBranchNameLength))] public string LatestVersionBranchName { get; set; } [HiddenInput] diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Edit.cshtml.cs b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Edit.cshtml.cs index 3b9aba5303..ef1762c460 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Edit.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Edit.cshtml.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.Validation; using Volo.Docs.Admin.Projects; using Volo.Docs.Projects; @@ -83,28 +84,28 @@ namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects public Guid Id { get; set; } [Required] - [StringLength(ProjectConsts.MaxNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxNameLength))] public string Name { get; set; } [Required] [SelectItems(nameof(FormatTypes))] public string Format { get; set; } - [StringLength(ProjectConsts.MaxDefaultDocumentNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxDefaultDocumentNameLength))] public string DefaultDocumentName { get; set; } - [StringLength(ProjectConsts.MaxNavigationDocumentNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxNavigationDocumentNameLength))] public string NavigationDocumentName { get; set; } - [StringLength(ProjectConsts.MaxParametersDocumentNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxParametersDocumentNameLength))] public string ParametersDocumentName { get; set; } - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string MinimumVersion { get; set; } public string MainWebsiteUrl { get; set; } - [StringLength(ProjectConsts.MaxLatestVersionBranchNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxLatestVersionBranchNameLength))] public string LatestVersionBranchName { get; set; } } diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Pull.cshtml.cs b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Pull.cshtml.cs index 195337a22e..5cbd094834 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Pull.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Pull.cshtml.cs @@ -2,6 +2,7 @@ using System; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Validation; using Volo.Docs.Admin.Documents; using Volo.Docs.Admin.Projects; using Volo.Docs.Documents; @@ -60,15 +61,15 @@ namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects public bool All { get; set; } [Required] - [StringLength(DocumentConsts.MaxNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxNameLength))] public string Name { get; set; } [Required] - [StringLength(DocumentConsts.MaxLanguageCodeNameLength)] + [DynamicStringLength(typeof(DocumentConsts),nameof(DocumentConsts.MaxLanguageCodeNameLength))] public string LanguageCode { get; set; } [Required] - [StringLength(DocumentConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxVersionNameLength))] public string Version { get; set; } } } diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDefaultDocumentInput.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDefaultDocumentInput.cs index 3deeb83967..1cef038512 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDefaultDocumentInput.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDefaultDocumentInput.cs @@ -1,5 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using Volo.Abp.Validation; using Volo.Docs.Language; using Volo.Docs.Projects; @@ -9,11 +11,11 @@ namespace Volo.Docs.Documents { public Guid ProjectId { get; set; } - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string Version { get; set; } [Required] - [StringLength(LanguageConsts.MaxLanguageCodeLength)] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxLanguageCodeLength))] public string LanguageCode { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentInput.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentInput.cs index 412f41b82e..3646f2ade0 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentInput.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentInput.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.Docs.Language; using Volo.Docs.Projects; @@ -10,14 +11,14 @@ namespace Volo.Docs.Documents public Guid ProjectId { get; set; } [Required] - [StringLength(DocumentConsts.MaxNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxNameLength))] public string Name { get; set; } - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string Version { get; set; } [Required] - [StringLength(LanguageConsts.MaxLanguageCodeLength)] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxLanguageCodeLength))] public string LanguageCode { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentResourceInput.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentResourceInput.cs index 6f759c47d8..52c1cf78af 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentResourceInput.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetDocumentResourceInput.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.Docs.Language; using Volo.Docs.Projects; @@ -10,14 +11,14 @@ namespace Volo.Docs.Documents public Guid ProjectId { get; set; } [Required] - [StringLength(DocumentConsts.MaxNameLength)] + [DynamicStringLength(typeof(DocumentConsts), nameof(DocumentConsts.MaxNameLength))] public string Name { get; set; } - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string Version { get; set; } [Required] - [StringLength(LanguageConsts.MaxLanguageCodeLength)] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxLanguageCodeLength))] public string LanguageCode { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetNavigationDocumentInput.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetNavigationDocumentInput.cs index 6866c8c633..ee4e3380ee 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetNavigationDocumentInput.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetNavigationDocumentInput.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.Docs.Language; using Volo.Docs.Projects; @@ -9,11 +10,11 @@ namespace Volo.Docs.Documents { public Guid ProjectId { get; set; } - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string Version { get; set; } [Required] - [StringLength(LanguageConsts.MaxLanguageCodeLength)] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxLanguageCodeLength))] public string LanguageCode { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetParametersDocumentInput.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetParametersDocumentInput.cs index 33bd25b394..1e277f36a3 100644 --- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetParametersDocumentInput.cs +++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/GetParametersDocumentInput.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; using Volo.Docs.Language; using Volo.Docs.Projects; @@ -9,11 +10,11 @@ namespace Volo.Docs.Documents { public Guid ProjectId { get; set; } - [StringLength(ProjectConsts.MaxVersionNameLength)] + [DynamicStringLength(typeof(ProjectConsts), nameof(ProjectConsts.MaxVersionNameLength))] public string Version { get; set; } [Required] - [StringLength(LanguageConsts.MaxLanguageCodeLength)] + [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxLanguageCodeLength))] public string LanguageCode { get; set; } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentConsts.cs b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentConsts.cs index f629abd0a4..04e3de3fd5 100644 --- a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentConsts.cs +++ b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/DocumentConsts.cs @@ -2,14 +2,49 @@ { public static class DocumentConsts { - public const int MaxNameLength = 255; - public const int MaxVersionNameLength = 128; - public const int MaxLanguageCodeNameLength = 128; - public const int MaxFileNameNameLength = 128; - public const int MaxFormatNameLength = 128; - public const int MaxEditLinkLength = 2048; - public const int MaxRootUrlLength = 2048; - public const int MaxRawRootUrlLength = 2048; - public const int MaxLocalDirectoryLength = 512; + /// + /// Default value: 255 + /// + public static int MaxNameLength { get; set; } = 255; + + /// + /// Default value: 128 + /// + public static int MaxVersionNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxLanguageCodeNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxFileNameNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxFormatNameLength { get; set; } = 128; + + /// + /// Default value: 2048 + /// + public static int MaxEditLinkLength { get; set; } = 2048; + + /// + /// Default value: 2048 + /// + public static int MaxRootUrlLength { get; set; } = 2048; + + /// + /// Default value: 2048 + /// + public static int MaxRawRootUrlLength { get; set; } = 2048; + + /// + /// Default value: 512 + /// + public static int MaxLocalDirectoryLength { get; set; } = 512; } } diff --git a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Language/LanguageConsts.cs b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Language/LanguageConsts.cs index 867cc2dd4e..cd449a37fd 100644 --- a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Language/LanguageConsts.cs +++ b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Language/LanguageConsts.cs @@ -3,6 +3,9 @@ namespace Volo.Docs.Language { public static class LanguageConsts { - public const int MaxLanguageCodeLength = 10; + /// + /// Default value: 10 + /// + public static int MaxLanguageCodeLength { get; set; } = 10; } } diff --git a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectConsts.cs b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectConsts.cs index 927a1a4c59..3322fb7732 100644 --- a/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectConsts.cs +++ b/modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Projects/ProjectConsts.cs @@ -2,12 +2,39 @@ { public static class ProjectConsts { - public const int MaxNameLength = 128; - public const int MaxShortNameLength = 32; - public const int MaxDefaultDocumentNameLength = 128; - public const int MaxNavigationDocumentNameLength = 128; - public const int MaxParametersDocumentNameLength = 128; - public const int MaxLatestVersionBranchNameLength = 128; - public const int MaxVersionNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxNameLength { get; set; } = 128; + + /// + /// Default value: 32 + /// + public static int MaxShortNameLength { get; set; } = 32; + + /// + /// Default value: 128 + /// + public static int MaxDefaultDocumentNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxNavigationDocumentNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxParametersDocumentNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxLatestVersionBranchNameLength { get; set; } = 128; + + /// + /// Default value: 128 + /// + public static int MaxVersionNameLength { get; set; } = 128; } } diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureValueConsts.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureValueConsts.cs index 0fd1a644fa..f44deca44a 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureValueConsts.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureValueConsts.cs @@ -2,12 +2,24 @@ { public static class FeatureValueConsts { - public const int MaxNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxNameLength { get; set;} = 128; - public const int MaxProviderNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxProviderNameLength { get; set;} = 64; - public const int MaxProviderKeyLength = 64; + /// + /// Default value: 64 + /// + public static int MaxProviderKeyLength { get; set;} = 64; - public const int MaxValueLength = 128; + /// + /// Default value: 128 + /// + public static int MaxValueLength { get; set;} = 128; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityClaimTypeConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityClaimTypeConsts.cs index f8335caeb6..eafd0ed135 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityClaimTypeConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityClaimTypeConsts.cs @@ -2,9 +2,24 @@ { public class IdentityClaimTypeConsts { + /// + /// Default value: 256 + /// public static int MaxNameLength { get; set; } = 256; + + /// + /// Default value: 512 + /// public static int MaxRegexLength { get; set; } = 512; + + /// + /// Default value: 128 + /// public static int MaxRegexDescriptionLength { get; set; } = 128; + + /// + /// Default value: 256 + /// public static int MaxDescriptionLength { get; set; } = 256; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleConsts.cs index 9d9cc9d9f6..f51be5da8f 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleConsts.cs @@ -2,7 +2,14 @@ { public static class IdentityRoleConsts { + /// + /// Default value: 256 + /// public static int MaxNameLength { get; set; } = 256; + + /// + /// Default value: 256 + /// public static int MaxNormalizedNameLength { get; set; } = 256; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserClaimConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserClaimConsts.cs index a850d6cff2..84ba493853 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserClaimConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserClaimConsts.cs @@ -2,8 +2,14 @@ { public static class IdentityUserClaimConsts { + /// + /// Default value: 256 + /// public static int MaxClaimTypeLength { get; set; } = 256; + /// + /// Default value: 1024 + /// public static int MaxClaimValueLength { get; set; } = 1024; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserConsts.cs index ad3fb0f586..c374cbc678 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserConsts.cs @@ -18,10 +18,19 @@ namespace Volo.Abp.Identity public static int MaxPhoneNumberLength { get; set; } = AbpUserConsts.MaxPhoneNumberLength; + /// + /// Default value: 128 + /// public static int MaxPasswordLength { get; set; } = 128; + /// + /// Default value: 256 + /// public static int MaxPasswordHashLength { get; set; } = 256; + /// + /// Default value: 256 + /// public static int MaxSecurityStampLength { get; set; } = 256; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserLoginConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserLoginConsts.cs index 3f95dfd634..8435221fd3 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserLoginConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserLoginConsts.cs @@ -2,8 +2,19 @@ { public static class IdentityUserLoginConsts { + /// + /// Default value: 64 + /// public static int MaxLoginProviderLength { get; set; } = 64; + + /// + /// Default value: 196 + /// public static int MaxProviderKeyLength { get; set; } = 196; + + /// + /// Default value: 128 + /// public static int MaxProviderDisplayNameLength { get; set; } = 128; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserTokenConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserTokenConsts.cs index 1e4eb4794b..a585a8383b 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserTokenConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityUserTokenConsts.cs @@ -2,8 +2,14 @@ { public static class IdentityUserTokenConsts { + /// + /// Default value: 64 + /// public static int MaxLoginProviderLength { get; set; } = 64; + /// + /// Default value: 128 + /// public static int MaxNameLength { get; set; } = 128; } } diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientIdPRestrictionConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientIdPRestrictionConsts.cs index c71301871a..b238a01935 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientIdPRestrictionConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientIdPRestrictionConsts.cs @@ -2,6 +2,9 @@ { public class ClientIdPRestrictionConsts { - public const int ProviderMaxLength = 200; + /// + /// Default value: 200 + /// + public static int ProviderMaxLength { get; set; } = 200; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPostLogoutRedirectUriConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPostLogoutRedirectUriConsts.cs index 3092232d47..7d4764e1a3 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPostLogoutRedirectUriConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPostLogoutRedirectUriConsts.cs @@ -2,7 +2,10 @@ { public class ClientPostLogoutRedirectUriConsts { - public const int PostLogoutRedirectUriMaxLength = 2000; + /// + /// Default value: 200 + /// + public static int PostLogoutRedirectUriMaxLength { get; set; } = 2000; public static int PostLogoutRedirectUriMaxLengthValue { get; set; } = 2000; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPropertyConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPropertyConsts.cs index 6535304596..664e1076b0 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPropertyConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientPropertyConsts.cs @@ -2,7 +2,14 @@ { public class ClientPropertyConsts { - public const int KeyMaxLength = 250; - public const int ValueMaxLength = 2000; + /// + /// Default value: 250 + /// + public static int KeyMaxLength { get; set; } = 250; + + /// + /// Default value: 2000 + /// + public static int ValueMaxLength { get; set; } = 2000; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientRedirectUriConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientRedirectUriConsts.cs index e972388487..7650a3d952 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientRedirectUriConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientRedirectUriConsts.cs @@ -2,7 +2,10 @@ { public class ClientRedirectUriConsts { - public const int RedirectUriMaxLength = 2000; + /// + /// Default value: 2000 + /// + public static int RedirectUriMaxLength { get; set; } = 2000; public static int RedirectUriMaxLengthValue { get; set; } = 2000; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientScopeConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientScopeConsts.cs index 6a5b62e692..0ec1c04595 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientScopeConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientScopeConsts.cs @@ -2,6 +2,9 @@ { public class ClientScopeConsts { - public const int ScopeMaxLength = 200; + /// + /// Default value: 200 + /// + public static int ScopeMaxLength { get; set; } = 200; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs index 6d0836ab17..b1dd21d6f8 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs @@ -2,11 +2,34 @@ { public class PersistedGrantConsts { - public const int KeyMaxLength = 200; - public const int TypeMaxLength = 50; - public const int SubjectIdMaxLength = 200; - public const int ClientIdMaxLength = 200; - public const int DataMaxLength = 50000; - public static int DataMaxLengthValue { get; set; }= 50000; + /// + /// Default value: 200 + /// + public static int KeyMaxLength { get; set; } = 200; + + /// + /// Default value: 50 + /// + public static int TypeMaxLength { get; set; } = 50; + + /// + /// Default value: 200 + /// + public static int SubjectIdMaxLength { get; set; } = 200; + + /// + /// Default value: 200 + /// + public static int ClientIdMaxLength { get; set; } = 200; + + /// + /// Default value: 50000 + /// + public static int DataMaxLength { get; set; } = 50000; + + /// + /// Default value: 50000 + /// + public static int DataMaxLengthValue { get; set; } = 50000; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs index c60cc34ad8..a7c713e161 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs @@ -2,8 +2,19 @@ { public class IdentityResourceConsts { - public const int NameMaxLength = 200; - public const int DisplayNameMaxLength = 200; - public const int DescriptionMaxLength = 1000; + /// + /// Default value: 200 + /// + public static int NameMaxLength { get; set; } = 200; + + /// + /// Default value: 200 + /// + public static int DisplayNameMaxLength { get; set; } = 200; + + /// + /// Default value: 200 + /// + public static int DescriptionMaxLength { get; set; } = 1000; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs index 76635e322e..156088a97b 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs @@ -2,9 +2,21 @@ { public class SecretConsts { - public const int TypeMaxLength = 250; - public const int ValueMaxLength = 4000; + /// + /// Default value: 250 + /// + public static int TypeMaxLength { get; set; } = 250; + + /// + /// Default value: 4000 + /// + public static int ValueMaxLength { get; set; } = 4000; + public static int ValueMaxLengthValue { get; set; } = ValueMaxLength; - public const int DescriptionMaxLength = 2000; + + /// + /// Default value: 2000 + /// + public static int DescriptionMaxLength { get; set; } = 2000; } } \ No newline at end of file diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/UserClaimConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/UserClaimConsts.cs index 9133482f1f..cb0279fd2b 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/UserClaimConsts.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/UserClaimConsts.cs @@ -2,6 +2,9 @@ { public class UserClaimConsts { - public const int TypeMaxLength = 200; + /// + /// Default value: 200 + /// + public static int TypeMaxLength { get; set; } = 200; } } \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/PermissionGrantConsts.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/PermissionGrantConsts.cs index 8d579638ec..5cb2397349 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/PermissionGrantConsts.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/PermissionGrantConsts.cs @@ -2,10 +2,19 @@ { public static class PermissionGrantConsts { - public const int MaxNameLength = 128; + /// + /// Default value: 128 + /// + public static int MaxNameLength { get; set; } = 128; - public const int MaxProviderNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxProviderNameLength { get; set; } = 64; - public const int MaxProviderKeyLength = 64; + /// + /// Default value: 64 + /// + public static int MaxProviderKeyLength { get; set; } = 64; } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingConsts.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingConsts.cs index 44a21f3ccb..e23a0e39a5 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingConsts.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingConsts.cs @@ -2,10 +2,26 @@ { public static class SettingConsts { - public const int MaxNameLength = 128; - public const int MaxValueLength = 2048; + /// + /// Default value: 128 + /// + public static int MaxNameLength { get; set; } = 128; + + /// + /// Default value: 2048 + /// + public static int MaxValueLength { get; set; } = 2048; + public static int MaxValueLengthValue { get; set; } = MaxValueLength; - public const int MaxProviderNameLength = 64; - public const int MaxProviderKeyLength = 64; + + /// + /// Default value: 64 + /// + public static int MaxProviderNameLength { get; set; } = 64; + + /// + /// Default value: 64 + /// + public static int MaxProviderKeyLength { get; set; } = 64; } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs index 19f73b0d51..7dc805ea79 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs @@ -1,12 +1,13 @@ using System.ComponentModel.DataAnnotations; using Volo.Abp.ObjectExtending; +using Volo.Abp.Validation; namespace Volo.Abp.TenantManagement { public abstract class TenantCreateOrUpdateDtoBase : ExtensibleObject { [Required] - [StringLength(TenantConsts.MaxNameLength)] + [DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.MaxNameLength))] public string Name { get; set; } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConnectionStringConsts.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConnectionStringConsts.cs index 4cdf8dee2a..b177e8d046 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConnectionStringConsts.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConnectionStringConsts.cs @@ -2,8 +2,14 @@ { public static class TenantConnectionStringConsts { - public const int MaxNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxNameLength { get; set; } = 64; - public const int MaxValueLength = 1024; + /// + /// Default value: 1024 + /// + public static int MaxValueLength { get; set; } = 1024; } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs index 328c422ab9..10de5e8773 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs @@ -2,6 +2,9 @@ { public static class TenantConsts { - public const int MaxNameLength = 64; + /// + /// Default value: 64 + /// + public static int MaxNameLength { get; set; } = 64; } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs index 9093437f98..45a36060e0 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/ConnectionStringsModal.cshtml.cs @@ -2,6 +2,7 @@ using System; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Validation; namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants { @@ -53,7 +54,7 @@ namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants public bool UseSharedDatabase { get; set; } - [StringLength(TenantConnectionStringConsts.MaxValueLength)] + [DynamicStringLength(typeof(TenantConnectionStringConsts), nameof(TenantConnectionStringConsts.MaxValueLength))] public string DefaultConnectionString { get; set; } } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs index fa517594ee..0c1e6e0bec 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs @@ -1,6 +1,7 @@ using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Validation; namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants { @@ -34,7 +35,7 @@ namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants public class TenantInfoModel { [Required] - [StringLength(TenantConsts.MaxNameLength)] + [DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.MaxNameLength))] public string Name { get; set; } [Required] diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/EditModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/EditModal.cshtml.cs index 74ac176b02..736d0174cf 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/EditModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/EditModal.cshtml.cs @@ -2,6 +2,7 @@ using System; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Validation; namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants { @@ -42,7 +43,7 @@ namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants public Guid Id { get; set; } [Required] - [StringLength(TenantConsts.MaxNameLength)] + [DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.MaxNameLength))] [Display(Name = "DisplayName:TenantName")] public string Name { get; set; } } diff --git a/modules/users/src/Volo.Abp.Users.Domain.Shared/Volo/Abp/Users/AbpUserConsts.cs b/modules/users/src/Volo.Abp.Users.Domain.Shared/Volo/Abp/Users/AbpUserConsts.cs index ee37c6c9f4..efbd2e02b2 100644 --- a/modules/users/src/Volo.Abp.Users.Domain.Shared/Volo/Abp/Users/AbpUserConsts.cs +++ b/modules/users/src/Volo.Abp.Users.Domain.Shared/Volo/Abp/Users/AbpUserConsts.cs @@ -2,14 +2,29 @@ namespace Volo.Abp.Users { public class AbpUserConsts { + /// + /// Default value: 256 + /// public static int MaxUserNameLength { get; set; } = 256; + /// + /// Default value: 64 + /// public static int MaxNameLength { get; set; } = 64; + /// + /// Default value: 64 + /// public static int MaxSurnameLength { get; set; } = 64; + /// + /// Default value: 256 + /// public static int MaxEmailLength { get; set; } = 256; + /// + /// Default value: 16 + /// public static int MaxPhoneNumberLength { get; set; } = 16; } } \ No newline at end of file diff --git a/npm/ng-packs/apps/dev-app/src/app/home/home-routing.module.ts b/npm/ng-packs/apps/dev-app/src/app/home/home-routing.module.ts index 634706a36c..7089990134 100644 --- a/npm/ng-packs/apps/dev-app/src/app/home/home-routing.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/home/home-routing.module.ts @@ -2,12 +2,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { HomeComponent } from './home.component'; -const routes: Routes = [ - { - path: '', - children: [{ path: '', component: HomeComponent }], - }, -]; +const routes: Routes = [{ path: '', component: HomeComponent }]; @NgModule({ imports: [RouterModule.forChild(routes)], diff --git a/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts b/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts index b52afe9faf..1f3bb65f4e 100644 --- a/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts +++ b/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts @@ -62,10 +62,11 @@ export namespace ApplicationConfiguration { } export interface CurrentUser { - isAuthenticated: boolean; + email: string; id: string; + isAuthenticated: boolean; + roles: string[]; tenantId: string; userName: string; - email: string; } } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/table/table.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/table/table.component.ts index dfe290d12f..2199411a1c 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/table/table.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/table/table.component.ts @@ -11,6 +11,10 @@ import { ViewEncapsulation, } from '@angular/core'; +/** + * + * @deprecated use ngx-datatale instead. + */ @Component({ selector: 'abp-table', templateUrl: 'table.component.html', diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts index a16925ebd7..131ae88fc5 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts @@ -1,4 +1,4 @@ -import { ListService } from '@abp/ng.core'; +import { ListService, LocalizationService } from '@abp/ng.core'; import { ChangeDetectorRef, Directive, @@ -21,9 +21,26 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { @Input() list: ListService; - constructor(private table: DatatableComponent, private cdRef: ChangeDetectorRef) { + constructor( + private table: DatatableComponent, + private cdRef: ChangeDetectorRef, + private localizationService: LocalizationService, + ) { + this.setInitialValues(); + } + + private setInitialValues() { this.table.externalPaging = true; this.table.externalSorting = true; + this.table.messages = { + emptyMessage: this.localizationService.localizeSync( + 'AbpUi', + 'NoDataAvailableInDatatable', + 'No data available', + ), + totalMessage: this.localizationService.localizeSync('AbpUi', 'Total', 'total'), + selectedMessage: this.localizationService.localizeSync('AbpUi', 'Selected', 'selected'), + }; } private subscribeToPage() { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index 127fdcc2a3..e45ac8d1e3 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -1,10 +1,9 @@ -import { ConfigState, CoreModule, noop } from '@abp/ng.core'; +import { CoreModule, noop } from '@abp/ng.core'; import { DatePipe } from '@angular/common'; import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; import { NgbDateParserFormatter, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap'; import { NgxValidateCoreModule } from '@ngx-validate/core'; -import { Store } from '@ngxs/store'; -import { INgxDatatableConfig, NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; import { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component'; import { ButtonComponent } from './components/button/button.component'; import { ChartComponent } from './components/chart/chart.component'; @@ -31,22 +30,6 @@ import { THEME_SHARED_APPEND_CONTENT } from './tokens/append-content.token'; import { httpErrorConfigFactory, HTTP_ERROR_CONFIG } from './tokens/http-error.token'; import { DateParserFormatter } from './utils/date-parser-formatter'; -export function ngxDatatableMessageFactory(store: Store) { - const emptyMessage = store.selectSnapshot( - ConfigState.getLocalization('AbpUi::NoDataAvailableInDatatable'), - ); - const totalMessage = store.selectSnapshot(ConfigState.getLocalization('AbpUi::Total')); - const selectedMessage = store.selectSnapshot(ConfigState.getLocalization('AbpUi::Selected')); - - return { - messages: { - emptyMessage, - totalMessage, - selectedMessage, - }, - } as INgxDatatableConfig; -} - @NgModule({ imports: [CoreModule, NgxDatatableModule, NgxValidateCoreModule, NgbPaginationModule], declarations: [ @@ -68,7 +51,6 @@ export function ngxDatatableMessageFactory(store: Store) { NgxDatatableListDirective, LoadingDirective, TableSortDirective, - ToastContainerComponent, ], exports: [ NgxDatatableModule, @@ -88,7 +70,6 @@ export function ngxDatatableMessageFactory(store: Store) { NgxDatatableListDirective, LoadingDirective, TableSortDirective, - ToastContainerComponent, ], providers: [DatePipe], entryComponents: [ @@ -126,11 +107,6 @@ export class ThemeSharedModule { deps: [HTTP_ERROR_CONFIG], }, { provide: NgbDateParserFormatter, useClass: DateParserFormatter }, - { - provide: 'configuration', - useFactory: ngxDatatableMessageFactory, - deps: [Store], - }, ], }; } diff --git a/npm/package.json b/npm/package.json index c0662c6ebb..70496aba97 100644 --- a/npm/package.json +++ b/npm/package.json @@ -5,7 +5,8 @@ "gulp:app": "node run-gulp-script.js ../templates/app/aspnet-core", "gulp:module": "node run-gulp-script.js ../templates/module/aspnet-core", "ncu": "ncu", - "update:templates": "node abp-package-update-script.js ../templates" + "update:templates": "node abp-package-update-script.js ../templates", + "replace-with-tilde": "node replace-with-tilde.js" }, "devDependencies": { "@types/fs-extra": "^8.0.1", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index f15601f8eb..4b21f6ca9c 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "anchor-js": "~4.2.2" + "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index fae31b200f..6a83218d4e 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -5,12 +5,12 @@ "access": "public" }, "dependencies": { - "ansi-colors": "~4.1.1", - "extend-object": "~1.0.0", - "gulp": "~4.0.2", - "merge-stream": "~2.0.0", - "path": "~0.12.7", - "rimraf": "~3.0.2" + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "path": "^0.12.7", + "rimraf": "^3.0.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index c755a18199..95c506c542 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -5,7 +5,7 @@ "access": "public" }, "dependencies": { - "bootstrap-datepicker": "~1.9.0" + "bootstrap-datepicker": "^1.9.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index d540d0bffb..a409f89ded 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "bootstrap": "~4.5.0", + "bootstrap": "^4.5.0", "bootstrap-v4-rtl": "4.4.1-2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index d98bece90e..435d1cef93 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -5,7 +5,7 @@ "access": "public" }, "dependencies": { - "chart.js": "~2.9.3" + "chart.js": "^2.9.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 42ba81b4ac..46677143b9 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "clipboard": "~2.0.6" + "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index 80d6145831..807eea5cd9 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "codemirror": "~5.54.0" + "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 5a6998c40d..18fefed504 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/datatables.net": "~2.9.0", - "datatables.net-bs4": "~1.10.21" + "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index cc6221d5e2..5e522f52f0 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery": "~2.9.0", - "datatables.net": "~1.10.21" + "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 88471bcb8c..e66cc044fd 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -5,7 +5,7 @@ "access": "public" }, "dependencies": { - "flag-icon-css": "~3.5.0" + "flag-icon-css": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 5b9b7ec09f..0e29f6eccf 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "@fortawesome/fontawesome-free": "~5.13.0" + "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 6e14ed8b33..a547261ae5 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery": "~2.9.0", - "jquery-form": "~4.3.0" + "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 2f2238395e..1948468f0e 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery-validation": "~2.9.0", - "jquery-validation-unobtrusive": "~3.2.11" + "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 593289b918..20704f9d90 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery": "~2.9.0", - "jquery-validation": "~1.19.2" + "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index fc72dbe215..086dda9252 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery": "~2.9.0", - "jstree": "~3.3.9" + "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 2fb0d8d79e..35c4f1316d 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "lodash": "~4.17.15" + "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 1bdd991a4b..489fc20e48 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -5,7 +5,7 @@ "access": "public" }, "dependencies": { - "luxon": "~1.24.1" + "luxon": "^1.24.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index c06b5cde77..f68503c079 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "malihu-custom-scrollbar-plugin": "~3.1.5" + "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 801b51b173..47b679b8bc 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "markdown-it": "~11.0.0" + "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 361e3f1706..da6ec4641b 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "owl.carousel": "~2.3.4" + "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index f7219d380f..fbe0bed687 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "popper.js": "~1.16.0" + "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 8e42cfe26b..7d9388e14c 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -7,7 +7,7 @@ "dependencies": { "@abp/clipboard": "~2.9.0", "@abp/core": "~2.9.0", - "prismjs": "~1.20.0" + "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 5e24bb3e2e..9b7a7c7ec7 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "select2": "~4.0.13" + "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index 2cc7eb215a..ffcc0854b3 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "sweetalert": "~2.1.2" + "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index e28a5111cc..bddafc1773 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery": "~2.9.0", - "timeago": "~1.6.7" + "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 81c6f22c05..bf4f03723b 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/jquery": "~2.9.0", - "toastr": "~2.1.4" + "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 2293636854..65244a2ffb 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -9,7 +9,7 @@ "@abp/highlight.js": "~2.9.0", "@abp/jquery": "~2.9.0", "@abp/markdown-it": "~2.9.0", - "tui-editor": "~1.4.10" + "tui-editor": "^1.4.10" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index 7ab59402b1..3a514e33d5 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@abp/core": "~2.9.0", - "uppy": "~1.16.1" + "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 306f36e74f..e9eb7d6678 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -23,7 +23,7 @@ "metadata": "dist/abp-utils.metadata.json", "sideEffects": false, "devDependencies": { - "@angular-builders/jest": "~9.0.0", + "@angular-builders/jest": "^9.0.0", "@angular-devkit/build-ng-packagr": "~0.1000.0", "@angular/cli": "~10.0.0", "@angular/common": "~10.0.0", @@ -32,26 +32,26 @@ "@angular/core": "~10.0.0", "@angular/platform-browser": "~10.0.0", "@angular/platform-browser-dynamic": "~10.0.0", - "@types/execa": "~2.0.0", - "@types/fs-extra": "~8.1.0", - "@types/jest": "~25.1.4", - "@types/node": "~12.11.1", - "codelyzer": "~5.1.2", - "execa": "~4.0.0", - "fs-extra": "~9.0.0", - "jest": "~25.2.4", - "jest-preset-angular": "~8.1.2", - "ng-packagr": "~10.0.0", - "protractor": "~7.0.0", + "@types/execa": "^2.0.0", + "@types/fs-extra": "^8.1.0", + "@types/jest": "^25.1.4", + "@types/node": "^12.11.1", + "codelyzer": "^5.1.2", + "execa": "^4.0.0", + "fs-extra": "^9.0.0", + "jest": "^25.2.4", + "jest-preset-angular": "^8.1.2", + "ng-packagr": "^10.0.0", + "protractor": "^7.0.0", "ts-node": "~8.3.0", "tslib": "~2.0.0", - "tslint": "~6.1.0", + "tslint": "^6.1.0", "typescript": "~3.9.5", "zone.js": "~0.10.2" }, "peerDependencies": {}, "dependencies": { - "just-compare": "~1.3.0" + "just-compare": "^1.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/preview-publish.ps1 b/npm/preview-publish.ps1 index ea4afd44d6..11c4ca0a21 100644 --- a/npm/preview-publish.ps1 +++ b/npm/preview-publish.ps1 @@ -24,7 +24,9 @@ $commands = ( "npm install", "npm run publish-packages -- --nextVersion $Version --preview", "cd ../../", - "yarn lerna publish $Version --no-push --yes --no-git-reset --no-commit-hooks --no-git-tag-version --force-publish --dist-tag preview --registry $Registry" + "yarn lerna version $Version --yes --no-commit-hooks --skip-git --force-publish", + "yarn replace-with-tilde", + "yarn lerna exec 'npm publish --registry $Registry --tag preview'" ) foreach ($command in $commands) { diff --git a/npm/publish.ps1 b/npm/publish.ps1 index a510527401..aaed04e6d4 100644 --- a/npm/publish.ps1 +++ b/npm/publish.ps1 @@ -16,7 +16,9 @@ $commands = ( "npm install", "npm run publish-packages -- --nextVersion $Version", "cd ../../", - "yarn lerna publish $Version --no-push --yes --no-git-reset --no-commit-hooks --no-git-tag-version --force-publish", + "yarn lerna version $Version --yes --no-commit-hooks --skip-git --force-publish", + "yarn replace-with-tilde", + "yarn lerna exec 'npm publish --registry https://registry.npmjs.org'", "yarn update:templates", "yarn gulp:app", "yarn gulp:module" diff --git a/npm/replace-with-tilde.js b/npm/replace-with-tilde.js new file mode 100644 index 0000000000..34438f4f5f --- /dev/null +++ b/npm/replace-with-tilde.js @@ -0,0 +1,28 @@ +const glob = require('glob'); +const fse = require('fs-extra'); + +function replace(filePath) { + const pkg = fse.readJsonSync(filePath); + + const { dependencies } = pkg; + + if (!dependencies) return; + + Object.keys(dependencies).forEach((key) => { + if (key.includes('@abp/') && key !== '@abp/utils') { + dependencies[key] = dependencies[key].replace('^', '~'); + } + }); + + fse.writeJsonSync(filePath, { ...pkg, dependencies }, { spaces: 2 }); +} + +glob('./packs/**/package.json', {}, (er, files) => { + files.forEach((path) => { + if (path.includes('node_modules')) { + return; + } + + replace(path); + }); +});