From a418cb259ac12bdabaa34decda387dcd86dfd1a9 Mon Sep 17 00:00:00 2001 From: Cyril-hcj <31679398+Cyril-hcj@users.noreply.github.com> Date: Fri, 6 May 2022 21:40:42 +0800 Subject: [PATCH 01/89] Repair translation --- docs/zh-Hans/Distributed-Event-Bus.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh-Hans/Distributed-Event-Bus.md b/docs/zh-Hans/Distributed-Event-Bus.md index f16aa0610f..da28d04a34 100644 --- a/docs/zh-Hans/Distributed-Event-Bus.md +++ b/docs/zh-Hans/Distributed-Event-Bus.md @@ -84,7 +84,7 @@ namespace AbpDemo #### 关于序列化的事件对象 -事件传输对象**必须是可序列化**的,因为将其传输到流程外时,它们将被序列化/反序列化为JSON或其他格式. +事件传输对象**必须是可序列化**的,因为将其传输到进程外时,它们将被序列化/反序列化为JSON或其他格式. 避免循环引用,多态,私有setter,并提供默认(空)构造函数,如果你有其他的构造函数.(虽然某些序列化器可能会正常工作),就像DTO一样. From 186ac997e263b6ff309968e0dbe7c3411cc945f5 Mon Sep 17 00:00:00 2001 From: Mohammadreza Heidari Date: Fri, 13 May 2022 01:27:56 +0300 Subject: [PATCH 02/89] Add Farsi Resource Files Translated and added all available resource files for localizations. --- .../Mvc/UI/MultiTenancy/Localization/fa.json | 13 +++++ .../Abp/Authorization/Localization/fa.json | 10 ++++ .../Localization/Resources/AbpDdd/fa.json | 6 +++ .../Volo/Abp/Emailing/Localization/fa.json | 25 +++++++++ .../ExceptionHandling/Localization/fa.json | 26 +++++++++ .../Volo/Abp/Features/Localization/fa.json | 8 +++ .../Abp/GlobalFeatures/Localization/fa.json | 6 +++ .../Volo/Abp/Ldap/Localization/fa.json | 17 ++++++ .../Resources/AbpLocalization/fa.json | 7 +++ .../Volo/Abp/Timing/Localization/fa.json | 7 +++ .../Navigation/Localization/Resource/fa.json | 6 +++ .../Localization/Resources/AbpUi/fa.json | 53 +++++++++++++++++++ .../Volo/Abp/Validation/Localization/fa.json | 34 ++++++++++++ .../Mvc/Localization/Resource/fa.json | 10 ++++ .../Volo/Abp/Emailing/Localization/fa.json | 6 +++ .../Volo/Abp/Http/Localization/fa.json | 6 +++ .../TestResources/Base/CountryNames/fa.json | 7 +++ .../TestResources/Base/Validation/fa.json | 7 +++ .../Localization/TestResources/Source/fa.json | 11 ++++ .../TestResources/SourceExt/fa.json | 6 +++ .../Abp/TextTemplating/Localization/fa.json | 7 +++ 21 files changed, 278 insertions(+) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json create mode 100644 framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json create mode 100644 framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json create mode 100644 framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json create mode 100644 framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json create mode 100644 framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json create mode 100644 framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json create mode 100644 framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json create mode 100644 framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json create mode 100644 framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json create mode 100644 framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json create mode 100644 framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json create mode 100644 framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json create mode 100644 framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json create mode 100644 framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json create mode 100644 framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json create mode 100644 framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json create mode 100644 framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json create mode 100644 framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json new file mode 100644 index 0000000000..83e7d2423d --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json @@ -0,0 +1,13 @@ +{ + "culture": "fa", + "texts": { + "GivenTenantIsNotExist": "تننت مورد نظر وجود ندارد: {0}", + "GivenTenantIsNotAvailable": "تننت مورد نظر در دسترس نمیباشد: {0}", + "Tenant": "تننت", + "Switch": "جابجایی", + "Name": "نام", + "SwitchTenantHint": "برای جابجایی به سمت میزبان، قسمت نام را خالی بگذارید.", + "SwitchTenant": "جابجایی تننت", + "NotSelected": "انتخاب نشده" + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json new file mode 100644 index 0000000000..5e8bf4d484 --- /dev/null +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json @@ -0,0 +1,10 @@ +{ + "culture": "fa", + "texts": { + "Volo.Authorization:010001": "اعتبار سنجی انجام نشد! دسترسی داده نشده است.", + "Volo.Authorization:010002": "اعتبار سنجی انجام نشد! دسترسی داده نشده است: {PolicyName}", + "Volo.Authorization:010003": "اعتبار سنجی انجام نشد! دسترسی به منابع مورد نظر داده نشده است: {ResourceName}", + "Volo.Authorization:010004": "اعتبار سنجی انجام نشد! به مورد اعلامی دسترسی داده نشده است: {ResourceName}", + "Volo.Authorization:010005": "اعتبار سنجی انجام نشد! به موارد اعلامی دسترسی داده نشده است: {ResourceName}" + } +} diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json new file mode 100644 index 0000000000..f7d556fae2 --- /dev/null +++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json @@ -0,0 +1,6 @@ +{ + "culture": "fa", + "texts": { + "MaxResultCountExceededExceptionMessage": "{0} نمیتواند بیشتر از {1}! باشد. مقدار {2} را افزایش دهید.{3} در سمت سرور." + } +} diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json new file mode 100644 index 0000000000..ac81810933 --- /dev/null +++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json @@ -0,0 +1,25 @@ +{ + "culture": "fa", + "texts": { + "DisplayName:Abp.Mailing.DefaultFromAddress": "از آدرس پیش فرض", + "DisplayName:Abp.Mailing.DefaultFromDisplayName": "از نام نمایشی پیش فرض", + "DisplayName:Abp.Mailing.Smtp.Host": "هاست", + "DisplayName:Abp.Mailing.Smtp.Port": "پورت", + "DisplayName:Abp.Mailing.Smtp.UserName": "نام کاربری", + "DisplayName:Abp.Mailing.Smtp.Password": "رمز عبور", + "DisplayName:Abp.Mailing.Smtp.Domain": "دامنه", + "DisplayName:Abp.Mailing.Smtp.EnableSsl": "فعال سازی SSL", + "DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "از اعتبارنامه های پیش فرض استفاده کنید", + "Description:Abp.Mailing.DefaultFromAddress": "از آدرس پیش فرض", + "Description:Abp.Mailing.DefaultFromDisplayName": "از نام نمایشی پیش فرض", + "Description:Abp.Mailing.Smtp.Host": "نام یا آدرس IP میزبان مورد استفاده برای تراکنش های SMTP.", + "Description:Abp.Mailing.Smtp.Port": "پورتی که برای تراکنش های SMTP استفاده می شود.", + "Description:Abp.Mailing.Smtp.UserName": "نام کاربری مرتبط با اعتبارنامه", + "Description:Abp.Mailing.Smtp.Password": "رمز عبور کاربر مرتبط با اعتبارنامه.", + "Description:Abp.Mailing.Smtp.Domain": "نام دامنه یا رایانه ای که اعتبار را تأیید می کند.", + "Description:Abp.Mailing.Smtp.EnableSsl": "اینکه آیا SmtpClient از لایه سوکت های امن (SSL) برای رمزگذاری هنگام ارتباط استفاده می کند.", + "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "اینکه آیا DefaultCredentials همراه با درخواست ها ارسال می شوند.", + "TextTemplate:StandardEmailTemplates.Layout": "الگوی طرح بندی ایمیل پیش فرض", + "TextTemplate:StandardEmailTemplates.Message": "قالب پیام ساده برای ایمیل" + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json new file mode 100644 index 0000000000..93424701ca --- /dev/null +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json @@ -0,0 +1,26 @@ +{ + "culture": "fa", + "texts": { + "InternalServerErrorMessage": "یک خطای داخلی در حین درخواست شما رخ داد!", + "ValidationErrorMessage": "درخواست شما معتبر نیست!", + "ValidationNarrativeErrorMessageTitle": "خطاهای زیر در حین اعتبارسنجی شناسایی شد.", + "DefaultErrorMessage": "خطایی رخ داده است!", + "DefaultErrorMessageDetail": "جزئیات خطا توسط سرور ارسال نشده است.", + "DefaultErrorMessage401": "شما احراز هویت نشده اید!", + "DefaultErrorMessage401Detail": "برای انجام این عملیات باید وارد سیستم شوید.", + "DefaultErrorMessage403": "شما مجاز نیستید!", + "DefaultErrorMessage403Detail": "شما مجاز به انجام این عمل نیستید!", + "DefaultErrorMessage404": "منبع پیدا نشد!", + "DefaultErrorMessage404Detail": "منبع درخواست شده در سرور یافت نشد!", + "EntityNotFoundErrorMessage": "هیچ موجودیتی : {0} با شناسه = {1} وجود ندارد!", + "AbpDbConcurrencyErrorMessage": "داده‌هایی که ارسال کرده‌اید قبلاً توسط کاربر/مشتری دیگر تغییر کرده است. لطفاً تغییراتی را که انجام داده‌اید کنار بگذارید و از ابتدا تلاش کنید.", + "Error": "خطا", + "UnhandledException": "خطای کنترل نشده", + "401Message": "غیرمجاز", + "403Message": "ممنوع", + "404Message": "صفحه یافت نشد", + "500Message": "خطای سرور داخلی", + "403MessageDetail": "شما مجاز به انجام این عملیات نیستید!", + "404MessageDetail": "با عرض پوزش، چیزی در این آدرس وجود ندارد." + } +} diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json new file mode 100644 index 0000000000..771fea72b6 --- /dev/null +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json @@ -0,0 +1,8 @@ +{ + "culture": "fa", + "texts": { + "Volo.Feature:010001": "ویژگی فعال نیست: {FeatureName}", + "Volo.Feature:010002": "ویژگی های مورد نیاز فعال نیستند. همه این ویژگی ها باید فعال باشند: {FeatureNames}", + "Volo.Feature:010003": "ویژگی های مورد نیاز فعال نیستند. حداقل یکی از این ویژگی ها باید فعال باشد: {FeatureNames}" + } +} diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json new file mode 100644 index 0000000000..c2927e9b59 --- /dev/null +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json @@ -0,0 +1,6 @@ +{ + "culture": "fa", + "texts": { + "Volo.GlobalFeature:010001": "سرویس '{ServiceName}' باید ابتدا امکانات '{GlobalFeatureName}' را فعال نماید." + } +} diff --git a/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json b/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json new file mode 100644 index 0000000000..3e536b1e1f --- /dev/null +++ b/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json @@ -0,0 +1,17 @@ +{ + "culture": "fa", + "texts": { + "DisplayName:Abp.Ldap.ServerHost": "میزبان سرور", + "Description:Abp.Ldap.ServerHost": "میزبان سرور", + "DisplayName:Abp.Ldap.ServerPort": "پورت سرور", + "Description:Abp.Ldap.ServerPort": "پورت سرور", + "DisplayName:Abp.Ldap.BaseDc": "کامپوننت پایه دامنه", + "Description:Abp.Ldap.BaseDc": "کامپوننت پایه دامنه", + "DisplayName:Abp.Ldap.Domain": "دامنه", + "Description:Abp.Ldap.Domain": "دامنه", + "DisplayName:Abp.Ldap.UserName": "نام کاربری", + "Description:Abp.Ldap.UserName": "نام کاربری", + "DisplayName:Abp.Ldap.Password": "رمز عبور", + "Description:Abp.Ldap.Password": "رمز عبور" + } +} diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json new file mode 100644 index 0000000000..f861d1af47 --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json @@ -0,0 +1,7 @@ +{ + "culture": "fa", + "texts": { + "DisplayName:Abp.Localization.DefaultLanguage": "زبان پیش فرض", + "Description:Abp.Localization.DefaultLanguage": "زبان پیش فرض برنامه" + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json new file mode 100644 index 0000000000..b1818ff6fe --- /dev/null +++ b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json @@ -0,0 +1,7 @@ +{ + "culture": "en", + "texts": { + "DisplayName:Abp.Timing.Timezone": "منطقه زمانی", + "Description:Abp.Timing.Timezone": "منطقه زمانی برنامه" + } +} diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json new file mode 100644 index 0000000000..ab89c14e11 --- /dev/null +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json @@ -0,0 +1,6 @@ +{ + "culture": "fa", + "texts": { + "Menu:Administration": "مدیریت" + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json new file mode 100644 index 0000000000..0ee671206f --- /dev/null +++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json @@ -0,0 +1,53 @@ +{ + "culture": "fa", + "texts": { + "Languages": "زبان ها", + "AreYouSure": "آیا اطمینان دارید؟", + "Cancel": "لغو", + "Clear": "پاکسازی", + "Yes": "بله", + "No": "خیر", + "Ok": "اوکی", + "Close": "بستن", + "Save": "ذخیره", + "SavingWithThreeDot": "ذخیره...", + "Actions": "عملیات", + "Delete": "حذف", + "SuccessfullyDeleted": "با موفقیت حذف شد", + "Edit": "ویرایش", + "Refresh": "رفرش", + "Language": "زبان", + "LoadMore": "بارگذاری بیشتر", + "ProcessingWithThreeDot": "در حال پردازش...", + "LoadingWithThreeDot": "درحال بارگذاری...", + "Welcome": "خوش آمدید", + "Login": "ورود", + "Register": "ثبت نام", + "Logout": "خروج", + "Submit": "ارسال", + "Back": "عقب", + "PagerSearch": "جستجو", + "PagerNext": "بعدی", + "PagerPrevious": "قبلی", + "PagerFirst": "نخستین", + "PagerLast": "آخرین", + "PagerInfo": "نمایش از _START_ تا _END_ از مجموع _TOTAL_ مورد", + "PagerInfo{0}{1}{2}": "نمایش از {0} تا {1} از مجموع {2} مورد", + "PagerInfoEmpty": "نمایش از 0 تا 0 از مجموع 0 مورد", + "PagerInfoFiltered": "(فیلتر شده از مجموع _MAX_ مورد)", + "NoDataAvailableInDatatable": "داده ای وجود ندارد", + "Total": "مجموع", + "Selected": "انتخاب شده", + "PagerShowMenuEntries": "نمایش _MENU_ مورد", + "DatatableActionDropdownDefaultText": "عملیات", + "ChangePassword": "تغییر رمز", + "PersonalInfo": "پروفایل من", + "AreYouSureYouWantToCancelEditingWarningMessage": "You have unsaved changes.", + "GoHomePage": "برو به صفحه اصلی", + "GoBack": "برگرد", + "Search": "جستجو", + "ItemWillBeDeletedMessageWithFormat": "{0} حذف خواهد شد!", + "ItemWillBeDeletedMessage": "این مورد حذف خواهد شد!", + "ManageYourAccount": "حساب خود را مدیریت کنید" + } +} diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json new file mode 100644 index 0000000000..69659ee008 --- /dev/null +++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json @@ -0,0 +1,34 @@ +{ + "culture": "fa", + "texts": { + "'{0}' and '{1}' do not match.": "'{0}' و '{1}' مطابقت ندارند", + "The {0} field is not a valid credit card number.": "مقدار {0} یک شماره کارت اعتباری استاندارد نیست", + "{0} is not valid.": "{0} معتبر نیست.", + "The {0} field is not a valid e-mail address.": "فیلد {0} دارای آدرس ایمیل معتبر نیست.", + "The {0} field only accepts files with the following extensions: {1}": "فیلد {0} تنها فایل هایی پسوندهای زیر را می پذیرد: {1}", + "The field {0} must be a string or array type with a maximum length of '{1}'.": "فیلد {0} یک باید از نوع رشته یا آرایه با حداکثر طول '{1}' باشد.", + "The field {0} must be a string or array type with a minimum length of '{1}'.": "فیلد {0} یک باید از نوع رشته یا آرایه با حداقل طول '{1}' باشد.", + "The {0} field is not a valid phone number.": "فیلد {0} یک شماره تلفن معتبر نیست.", + "The field {0} must be between {1} and {2}.": "فیلد {0} باید بین {1} و {2} باشد.", + "The field {0} must match the regular expression '{1}'.": "فیلد {0} با قالب درخواستی مطابقت ندارد.", + "The {0} field is required.": "فیلد {0} الزامی است.", + "The field {0} must be a string with a maximum length of {1}.": "فیلد {0} باید یک رشته با حداکثر طول {1} باشد.", + "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "فیلد {0} باید یک رشته با حداقل طول {2} و حداکثر طول {1} باشد.", + "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "فیلد {0} یک نشانی اینترنتی http، https، یا ftp کاملا و معتبر نیست.", + "The field {0} is invalid.": "فیلد {0} نامعتبر است.", + "ThisFieldIsNotAValidCreditCardNumber.": "این فیلد یک شماره کارت اعتباری معتبر نیست.", + "ThisFieldIsNotValid.": "این فیلد معتبر نیست", + "ThisFieldIsNotAValidEmailAddress.": "این فیلد یک آدرس ایمیل معتبر نیست.", + "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "این فیلد فقط فایل هایی با پسوندهای زیر را می پذیرد: {0}", + "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "این فیلد باید از نوع رشته یا آرایه با حداکثر طول '{0}' باشد.", + "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "این فیلد باید از نوع رشته یا آرایه با حداقل طول '{0}' باشد.", + "ThisFieldIsNotAValidPhoneNumber.": "این فیلد یک شماره تلفن معتبر نیست.", + "ThisFieldMustBeBetween{0}And{1}": "این فیلد باید بین {0} و {1} باشد.", + "ThisFieldMustMatchTheRegularExpression{0}": "این فیلد باید با عبارت منظم '{0}' مطابقت داشته باشد.", + "ThisFieldIsRequired.": "این فیلد الزامی است.", + "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "این فیلد باید یک رشته با طول حداکثر {0} باشد.", + "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "این فیلد باید یک رشته با حداقل طول {1} و حداکثر طول {0} باشد.", + "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "فیلد {0} یک نشانی اینترنتی http، https، یا ftp کاملا و معتبر نیست.", + "ThisFieldIsInvalid.": "این فیلد نامعتبر است." + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json new file mode 100644 index 0000000000..54576c81fb --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json @@ -0,0 +1,10 @@ +{ + "culture": "fa", + "texts": { + "DisplayName:PersonModel:BirthDate1": "تاریخ تولد1", + "DisplayName:BirthDate2": "تاریخ تولد2", + "PersonModel:BirthDate3": "تاریخ تولد3", + "BirthDate": "تاریخ تولد", + "Value1": "مقدار یک" + } +} diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json new file mode 100644 index 0000000000..33c0298f1a --- /dev/null +++ b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json @@ -0,0 +1,6 @@ +{ + "culture": "fa", + "texts": { + "hello": "سلام" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json new file mode 100644 index 0000000000..c01f3c1b73 --- /dev/null +++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json @@ -0,0 +1,6 @@ +{ + "culture": "fa", + "texts": { + "Volo.Abp.Http.DynamicProxying:10001": "خطای بیزنسی به همراه داده: {0}" + } +} diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json new file mode 100644 index 0000000000..c1c7e50b87 --- /dev/null +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json @@ -0,0 +1,7 @@ +{ + "culture": "fa", + "texts": { + "USA": "ایالات متحده آمریکا", + "Brazil": "برزیل" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json new file mode 100644 index 0000000000..e469dd85d5 --- /dev/null +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json @@ -0,0 +1,7 @@ +{ + "culture": "fa", + "texts": { + "ThisFieldIsRequired": "این فیلد الزامی است", + "MaxLenghtErrorMessage": "این فیلد میتواند نهایتا '{0}' کاراکتر باشد" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json new file mode 100644 index 0000000000..4761d95a34 --- /dev/null +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json @@ -0,0 +1,11 @@ +{ + "culture": "fa", + "texts": { + "Hello {0}.": "سلام {0}.", + "Car": "اتومبیل", + "CarPlural": "اتومبیل ها", + "MaxLenghtErrorMessage": "طول این فیلد میتواند نهایتا '{0}' کاراکتر باشد", + "Universe": "کائنات", + "FortyTwo": "چهل و دو" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json new file mode 100644 index 0000000000..1ffcb34105 --- /dev/null +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json @@ -0,0 +1,6 @@ +{ + "culture": "fa", + "texts": { + "SeeYou": "به امید دیدار" + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json new file mode 100644 index 0000000000..618f242806 --- /dev/null +++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json @@ -0,0 +1,7 @@ +{ + "culture": "en", + "texts": { + "HelloText": "سلام {0}", + "HowAreYou": "حال شما چطور است؟" + } +} From 2fbdbf95132543149d95e646e0439b3259e43e3a Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 13 May 2022 11:25:29 +0800 Subject: [PATCH 03/89] Document how to check global features in MVC UI. --- .../JavaScript-API/GlobalFeatures.md | 21 +++++++++++++++++++ docs/en/UI/AspNetCore/JavaScript-API/Index.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md diff --git a/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md b/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md new file mode 100644 index 0000000000..2f226724b8 --- /dev/null +++ b/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md @@ -0,0 +1,21 @@ +# ASP.NET Core MVC / Razor Pages UI: JavaScript Global Features API + +`abp.globalFeatures` API allows you to get the enabled features of the [Global Features](../../../Global-Features.md) in the client side. + +> This document only explains the JavaScript API. See the [Global Features](../../../Global-Features.md) document to understand the ABP Global Features system. + +## Usage + +````js +> abp.globalFeatures.enabledFeatures + +[ 'Shopping.Payment', 'Ecommerce.Subscription' ] + +> abp.globalFeatures.moduleEnabledFeatures + +{ Ecommerce } + +> abp.globalFeatures.moduleEnabledFeatures.Ecommerce + +[ 'Ecommerce.Subscription', 'Ecommerce.Invoice' ] +```` diff --git a/docs/en/UI/AspNetCore/JavaScript-API/Index.md b/docs/en/UI/AspNetCore/JavaScript-API/Index.md index 3473140392..21a3eeed93 100644 --- a/docs/en/UI/AspNetCore/JavaScript-API/Index.md +++ b/docs/en/UI/AspNetCore/JavaScript-API/Index.md @@ -10,6 +10,7 @@ ABP provides a set of JavaScript APIs for ASP.NET Core MVC / Razor Pages applica * [DOM](DOM.md) * [Events](Events.md) * [Features](Features.md) +* [Global Features](GlobalFeatures.md) * [Localization](Localization.md) * [Logging](Logging.md) * [ResourceLoader](ResourceLoader.md) From 8a2f65f8072f37fc09d283fdf4e58dcbb77383e9 Mon Sep 17 00:00:00 2001 From: Mohammadreza Heidari Date: Fri, 13 May 2022 10:17:32 +0300 Subject: [PATCH 04/89] Update fa.json updated mistake on "en" to "fa" --- .../src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json index b1818ff6fe..da141d4876 100644 --- a/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json +++ b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json @@ -1,5 +1,5 @@ { - "culture": "en", + "culture": "fa", "texts": { "DisplayName:Abp.Timing.Timezone": "منطقه زمانی", "Description:Abp.Timing.Timezone": "منطقه زمانی برنامه" From b24c33b333ddf3c3f5d8b8d8f58cb9236706f790 Mon Sep 17 00:00:00 2001 From: Mohammadreza Heidari Date: Fri, 13 May 2022 10:18:10 +0300 Subject: [PATCH 05/89] Update fa.json corrected "en" to "fa" --- .../Volo/Abp/TextTemplating/Localization/fa.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json index 618f242806..2b0cfde0d6 100644 --- a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json +++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json @@ -1,5 +1,5 @@ { - "culture": "en", + "culture": "fa", "texts": { "HelloText": "سلام {0}", "HowAreYou": "حال شما چطور است؟" From 8601aa8950a7339f5d477073771a904cbe96c72e Mon Sep 17 00:00:00 2001 From: j0nimost Date: Fri, 13 May 2022 17:05:24 +0300 Subject: [PATCH 06/89] Added checkers for integers, floats and decimal --- framework/src/Volo.Abp.Core/Volo/Abp/Check.cs | 178 ++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs index b20ef0f247..1dc5901704 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs @@ -162,4 +162,182 @@ public static class Check return value; } + + public static Int16 NotNegativeOrZero( + Int16 type, + [InvokerParameterName][NotNull] string parameterName) + { + if(type == 0) + { + throw new ArgumentException($"{parameterName} is equal to zero"); + } + else if(type < 0) + { + throw new ArgumentException($"{parameterName} is less than zero"); + } + return type; + } + + public static Int32 NotNegativeOrZero( + Int32 type, + [InvokerParameterName][NotNull] string parameterName) + { + if (type == 0) + { + throw new ArgumentException($"{parameterName} is equal to zero"); + } + else if (type < 0) + { + throw new ArgumentException($"{parameterName} is less than zero"); + } + return type; + } + + public static Int64 NotNegativeOrZero( + Int64 type, + [InvokerParameterName][NotNull] string parameterName) + { + if (type == 0) + { + throw new ArgumentException($"{parameterName} is equal to zero"); + } + else if (type < 0) + { + throw new ArgumentException($"{parameterName} is less than zero"); + } + return type; + } + + public static float NotNegativeOrZero( + float type, + [InvokerParameterName][NotNull] string parameterName) + { + if (type == 0) + { + throw new ArgumentException($"{parameterName} is equal to zero"); + } + else if (type < 0) + { + throw new ArgumentException($"{parameterName} is less than zero"); + } + return type; + } + + public static double NotNegativeOrZero( + double type, + [InvokerParameterName][NotNull] string parameterName) + { + if (type == 0) + { + throw new ArgumentException($"{parameterName} is equal to zero"); + } + else if (type < 0) + { + throw new ArgumentException($"{parameterName} is less than zero"); + } + return type; + } + + public static decimal NotNegativeOrZero( + decimal type, + [InvokerParameterName][NotNull] string parameterName) + { + if (type == 0) + { + throw new ArgumentException($"{parameterName} is equal to zero"); + } + else if (type < 0) + { + throw new ArgumentException($"{parameterName} is less than zero"); + } + return type; + } + + + + public static Int16 WithinRange( + Int16 type, + [InvokerParameterName][NotNull] string parameterName, + Int16 minimumValue, + Int16 maximumValue = Int16.MaxValue) + { + if(type < minimumValue || type > maximumValue) + { + throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); + } + + return type; + } + public static Int32 WithinRange( + Int32 type, + [InvokerParameterName][NotNull] string parameterName, + Int32 minimumValue, + Int32 maximumValue = Int32.MaxValue) + { + if (type < minimumValue || type > maximumValue) + { + throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); + } + + return type; + } + + public static Int64 WithinRange( + Int64 type, + [InvokerParameterName][NotNull] string parameterName, + Int64 minimumValue, + Int64 maximumValue = Int64.MaxValue) + { + if (type < minimumValue || type > maximumValue) + { + throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); + } + + return type; + } + + + public static float WithinRange( + float type, + [InvokerParameterName][NotNull] string parameterName, + float minimumValue, + float maximumValue = float.MaxValue) + { + if (type < minimumValue || type > maximumValue) + { + throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); + } + + return type; + } + + public static double WithinRange( + double type, + [InvokerParameterName][NotNull] string parameterName, + double minimumValue, + double maximumValue = double.MaxValue) + { + if (type < minimumValue || type > maximumValue) + { + throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); + } + + return type; + } + + + public static decimal WithinRange( + decimal type, + [InvokerParameterName][NotNull] string parameterName, + decimal minimumValue, + decimal maximumValue = decimal.MaxValue) + { + if (type < minimumValue || type > maximumValue) + { + throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); + } + + return type; + } + } From fa242e4f27793da2732ce37c3be67caaa06d02c7 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 16 May 2022 11:51:51 +0800 Subject: [PATCH 07/89] Make `UserEto ` class inherit `IHasExtraProperties`. https://support.abp.io/QA/Questions/3087/IDistrbitued-EventHandler-for-UserEto-does-not-have-My-cutom-Properties --- .../Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs index f6289f8584..6bcbe5e655 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs @@ -1,10 +1,11 @@ using System; +using Volo.Abp.Data; using Volo.Abp.EventBus; namespace Volo.Abp.Users; [EventName("Volo.Abp.Users.User")] -public class UserEto : IUserData +public class UserEto : IUserData, IHasExtraProperties { public Guid Id { get; set; } @@ -23,4 +24,6 @@ public class UserEto : IUserData public string PhoneNumber { get; set; } public bool PhoneNumberConfirmed { get; set; } + + public ExtraPropertyDictionary ExtraProperties { get; set; } } From aa08d0d5ad86e298e433c15c26a82a36f8a173b9 Mon Sep 17 00:00:00 2001 From: j0nimost Date: Mon, 16 May 2022 09:19:52 +0300 Subject: [PATCH 08/89] Renamed the method names --- framework/src/Volo.Abp.Core/Volo/Abp/Check.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs index 1dc5901704..af8017059d 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs @@ -163,7 +163,7 @@ public static class Check return value; } - public static Int16 NotNegativeOrZero( + public static Int16 Positive( Int16 type, [InvokerParameterName][NotNull] string parameterName) { @@ -178,7 +178,7 @@ public static class Check return type; } - public static Int32 NotNegativeOrZero( + public static Int32 Positive( Int32 type, [InvokerParameterName][NotNull] string parameterName) { @@ -193,7 +193,7 @@ public static class Check return type; } - public static Int64 NotNegativeOrZero( + public static Int64 Positive( Int64 type, [InvokerParameterName][NotNull] string parameterName) { @@ -208,7 +208,7 @@ public static class Check return type; } - public static float NotNegativeOrZero( + public static float Positive( float type, [InvokerParameterName][NotNull] string parameterName) { @@ -223,7 +223,7 @@ public static class Check return type; } - public static double NotNegativeOrZero( + public static double Positive( double type, [InvokerParameterName][NotNull] string parameterName) { @@ -238,7 +238,7 @@ public static class Check return type; } - public static decimal NotNegativeOrZero( + public static decimal Positive( decimal type, [InvokerParameterName][NotNull] string parameterName) { @@ -255,7 +255,7 @@ public static class Check - public static Int16 WithinRange( + public static Int16 Range( Int16 type, [InvokerParameterName][NotNull] string parameterName, Int16 minimumValue, @@ -268,7 +268,7 @@ public static class Check return type; } - public static Int32 WithinRange( + public static Int32 Range( Int32 type, [InvokerParameterName][NotNull] string parameterName, Int32 minimumValue, @@ -282,7 +282,7 @@ public static class Check return type; } - public static Int64 WithinRange( + public static Int64 Range( Int64 type, [InvokerParameterName][NotNull] string parameterName, Int64 minimumValue, @@ -297,7 +297,7 @@ public static class Check } - public static float WithinRange( + public static float Range( float type, [InvokerParameterName][NotNull] string parameterName, float minimumValue, @@ -311,7 +311,7 @@ public static class Check return type; } - public static double WithinRange( + public static double Range( double type, [InvokerParameterName][NotNull] string parameterName, double minimumValue, @@ -326,7 +326,7 @@ public static class Check } - public static decimal WithinRange( + public static decimal Range( decimal type, [InvokerParameterName][NotNull] string parameterName, decimal minimumValue, From daab524943f7e6bad8259fa6a90ee833495236f1 Mon Sep 17 00:00:00 2001 From: j0nimost Date: Mon, 16 May 2022 09:23:04 +0300 Subject: [PATCH 09/89] Renamed the property name from type -> value --- framework/src/Volo.Abp.Core/Volo/Abp/Check.cs | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs index af8017059d..faab005376 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Check.cs @@ -164,180 +164,180 @@ public static class Check } public static Int16 Positive( - Int16 type, + Int16 value, [InvokerParameterName][NotNull] string parameterName) { - if(type == 0) + if(value == 0) { throw new ArgumentException($"{parameterName} is equal to zero"); } - else if(type < 0) + else if(value < 0) { throw new ArgumentException($"{parameterName} is less than zero"); } - return type; + return value; } public static Int32 Positive( - Int32 type, + Int32 value, [InvokerParameterName][NotNull] string parameterName) { - if (type == 0) + if (value == 0) { throw new ArgumentException($"{parameterName} is equal to zero"); } - else if (type < 0) + else if (value < 0) { throw new ArgumentException($"{parameterName} is less than zero"); } - return type; + return value; } public static Int64 Positive( - Int64 type, + Int64 value, [InvokerParameterName][NotNull] string parameterName) { - if (type == 0) + if (value == 0) { throw new ArgumentException($"{parameterName} is equal to zero"); } - else if (type < 0) + else if (value < 0) { throw new ArgumentException($"{parameterName} is less than zero"); } - return type; + return value; } public static float Positive( - float type, + float value, [InvokerParameterName][NotNull] string parameterName) { - if (type == 0) + if (value == 0) { throw new ArgumentException($"{parameterName} is equal to zero"); } - else if (type < 0) + else if (value < 0) { throw new ArgumentException($"{parameterName} is less than zero"); } - return type; + return value; } public static double Positive( - double type, + double value, [InvokerParameterName][NotNull] string parameterName) { - if (type == 0) + if (value == 0) { throw new ArgumentException($"{parameterName} is equal to zero"); } - else if (type < 0) + else if (value < 0) { throw new ArgumentException($"{parameterName} is less than zero"); } - return type; + return value; } public static decimal Positive( - decimal type, + decimal value, [InvokerParameterName][NotNull] string parameterName) { - if (type == 0) + if (value == 0) { throw new ArgumentException($"{parameterName} is equal to zero"); } - else if (type < 0) + else if (value < 0) { throw new ArgumentException($"{parameterName} is less than zero"); } - return type; + return value; } public static Int16 Range( - Int16 type, + Int16 value, [InvokerParameterName][NotNull] string parameterName, Int16 minimumValue, Int16 maximumValue = Int16.MaxValue) { - if(type < minimumValue || type > maximumValue) + if(value < minimumValue || value > maximumValue) { throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); } - return type; + return value; } public static Int32 Range( - Int32 type, + Int32 value, [InvokerParameterName][NotNull] string parameterName, Int32 minimumValue, Int32 maximumValue = Int32.MaxValue) { - if (type < minimumValue || type > maximumValue) + if (value < minimumValue || value > maximumValue) { throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); } - return type; + return value; } public static Int64 Range( - Int64 type, + Int64 value, [InvokerParameterName][NotNull] string parameterName, Int64 minimumValue, Int64 maximumValue = Int64.MaxValue) { - if (type < minimumValue || type > maximumValue) + if (value < minimumValue || value > maximumValue) { throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); } - return type; + return value; } public static float Range( - float type, + float value, [InvokerParameterName][NotNull] string parameterName, float minimumValue, float maximumValue = float.MaxValue) { - if (type < minimumValue || type > maximumValue) + if (value < minimumValue || value > maximumValue) { throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); } - return type; + return value; } public static double Range( - double type, + double value, [InvokerParameterName][NotNull] string parameterName, double minimumValue, double maximumValue = double.MaxValue) { - if (type < minimumValue || type > maximumValue) + if (value < minimumValue || value > maximumValue) { throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); } - return type; + return value; } public static decimal Range( - decimal type, + decimal value, [InvokerParameterName][NotNull] string parameterName, decimal minimumValue, decimal maximumValue = decimal.MaxValue) { - if (type < minimumValue || type > maximumValue) + if (value < minimumValue || value > maximumValue) { throw new ArgumentException($"{parameterName} is out of range min: {minimumValue} - max: {maximumValue}"); } - return type; + return value; } } From 0c4c01d4feb3fe9bc13a97d7d6f7cd64dea71057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 16 May 2022 10:00:06 +0300 Subject: [PATCH 10/89] Update yarn.lock files. --- .../yarn.lock | 373 +++++++++--------- .../yarn.lock | 373 +++++++++--------- .../yarn.lock | 4 + .../yarn.lock | 343 ++++++++-------- .../yarn.lock | 343 ++++++++-------- .../yarn.lock | 343 ++++++++-------- .../MyCompanyName.MyProjectName.Web/yarn.lock | 238 +++++------ 7 files changed, 978 insertions(+), 1039 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/yarn.lock diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock index ba123065d7..64fd8e6b93 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock @@ -2,52 +2,52 @@ # yarn lockfile v1 -"@abp/aspnetcore.components.server.basictheme@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-5.0.1.tgz#f9bb30d5b2563438982094d5a12279649b31016b" - integrity sha512-PJMUUUA/BMYD1rMoRjTI1PSdVk84idVYAcaxb8na3MqWT7gRTfDVRI83awZg1pB56CESHCPEOmhEHZYQfTmzhg== - dependencies: - "@abp/aspnetcore.components.server.theming" "~5.0.1" - -"@abp/aspnetcore.components.server.theming@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-5.0.1.tgz#cc9d7234340e9c0f6459b9fd1f0ef63410990357" - integrity sha512-9eR4gwsilvN7S4Igb5Cm+Zwrp+RaP+5flbD9wUf0JA/LHb0W1SGm97XVS/E0UFvEWRsk4GKjb9hR9+gvTGVarQ== - dependencies: - "@abp/bootstrap" "~5.0.1" - "@abp/font-awesome" "~5.0.1" - -"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.1.tgz#884a4bc9ea043654891be56cd7e7c7bbf9bbad8c" - integrity sha512-JGTQyg3Zyfda84yg/Geq6rGuBN2SX4gIOaFL2h8BX9bA8CVuBC+zcwfO1bBsP89xfTyPvdSAGBvSfhCjPwsukQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.1.tgz#77a4900424603e0be048f3507aa852701f3139a2" - integrity sha512-mn9HEOHBkmBr7d/VUt0bfg9K58IyRDb7j3ZiDoHo263WLXJkf0+C7MEbv/zxfDHW4NeztsNCd3ugA7PdTxPzmA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.0.1" - "@abp/bootstrap" "~5.0.1" - "@abp/bootstrap-datepicker" "~5.0.1" - "@abp/datatables.net-bs5" "~5.0.1" - "@abp/font-awesome" "~5.0.1" - "@abp/jquery-form" "~5.0.1" - "@abp/jquery-validation-unobtrusive" "~5.0.1" - "@abp/lodash" "~5.0.1" - "@abp/luxon" "~5.0.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.0.1" - "@abp/select2" "~5.0.1" - "@abp/sweetalert2" "~5.0.1" - "@abp/timeago" "~5.0.1" - "@abp/toastr" "~5.0.1" - -"@abp/aspnetcore.mvc.ui@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.1.tgz#f5aa4e0dcc10878f590e30836887f3f9861e91e3" - integrity sha512-bN15UcNhTqeo0RXlIYws7Jd8ZfSBsVM6Y5wiAqbq1Q3Lvs1uLmryhZpn6sHmKw2Z3Lnhec7VjnZN0FwNpzEqUw== +"@abp/aspnetcore.components.server.basictheme@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-5.3.0-rc.1.tgz#8fa1db4fbe2a9ac58db3fefd25e1b60cdb9fa0d5" + integrity sha512-92kD2PPtvyaeNEvSQRAVRj/BEetitRwbuYqM9PHdaLXeNdnGo/C6JGej9sc488KKxdRq2uaVrMY2xlDUEYc9vw== + dependencies: + "@abp/aspnetcore.components.server.theming" "~5.3.0-rc.1" + +"@abp/aspnetcore.components.server.theming@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-5.3.0-rc.1.tgz#654dc4f4ba7f37b12e900fbeaf5c8ac57cb192ec" + integrity sha512-csXYJGwcwLv6/75euEi5g6HUxAG/Q47ZtQfema5HL7TV/zz+8T1Z4uuUy+NTyuK7MQpRaO0QBTvn4n4FVnmE0w== + dependencies: + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.basic@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.3.0-rc.1.tgz#dc27eb79ba7353eb6b16e4a2f50d17c3cfc9157d" + integrity sha512-TEbz/ISsGhfTec66XSeivQjCOCpTidufdpZmj8JRyrbQvhXOYohJs3ImrGJOIxUwo6nuzagGpotqXryjIF+jrg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.3.0-rc.1.tgz#ed993befe99682baee55ea8771f983980ba8f93f" + integrity sha512-kL4CXe0YoZ4wJ4XvutqLPkv4fMuFeRJFzdix6lx4dPAArnPu69n3P4qFhokPkcoGpB2KTRqyn9fHQs8g2FCGQw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.3.0-rc.1" + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/bootstrap-datepicker" "~5.3.0-rc.1" + "@abp/datatables.net-bs5" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + "@abp/jquery-form" "~5.3.0-rc.1" + "@abp/jquery-validation-unobtrusive" "~5.3.0-rc.1" + "@abp/lodash" "~5.3.0-rc.1" + "@abp/luxon" "~5.3.0-rc.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.3.0-rc.1" + "@abp/select2" "~5.3.0-rc.1" + "@abp/sweetalert2" "~5.3.0-rc.1" + "@abp/timeago" "~5.3.0-rc.1" + "@abp/toastr" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.3.0-rc.1.tgz#5205d3a5ea500ff3b8d525dcc11a2ce4cfccdfd3" + integrity sha512-mIefq3QSVtP7heNl0ocHiSKLU+DwN5/TDvvPj2L3IZkCzuOrDxoBUIBIciea4k10HIQzqo6gmm1YOw0CEfzNHg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -56,152 +56,151 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.1.tgz#52116a154e343d84c87257ad1ef10b54012f4c33" - integrity sha512-ZJWaZKzGzshBAfyBqaUScfWqeBVfWGbZIwIplF8VKtDGcyI8R54bqDsydhS88CCnolRz4+tfq3QY6yAXrUEKAw== +"@abp/bootstrap-datepicker@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.3.0-rc.1.tgz#1a5a29d7f9904e8d99c7085bc4545ad2665195cb" + integrity sha512-Y5QLLNd2UpbzbWSh+5nKdpAdz2i3V8+feTHTpAxnPgYRabPGqAFiOrty8KZ1MJEgjQFWC1ypGHYII7GWVyIS6Q== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.1.tgz#d542a8fd7151e22eda1643e313a67f9892c50533" - integrity sha512-wyVAp6a4OIwlqK7AZozs7wpsBZgzG55EKeChBBfUXloJPuirQHxccFNE41aAYWfKur+wj25WD5NBnzFuKyNYiQ== +"@abp/bootstrap@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.3.0-rc.1.tgz#977d579f59e18b1eb2c9b43612d525a859a575a4" + integrity sha512-dpY0bPHdhUI5yL23+EsR6w/KjoPyehaEgHLLKQDERdubX1Zk/SDWrhrYXnXxtJ0fvxG2aRVOEBMULmHD3m/PoA== dependencies: - "@abp/core" "~5.0.1" - bootstrap "^5.1.0" - bootstrap-v4-rtl "4.6.0-1" + "@abp/core" "~5.3.0-rc.1" + bootstrap "^5.1.3" -"@abp/core@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.1.tgz#904fa2c22bcbf42deb56abf772c3a53362807a2f" - integrity sha512-QzX35Oa+Vncu2OP1tXvGjAVFznmD1tZRn4tlDQgn36B2MU06UEO0JSx7JVedPvhzQZceUe5+WWMfuYNM2xeBTw== +"@abp/core@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.3.0-rc.1.tgz#4ede309ccfab440deb66fecb091273027483676a" + integrity sha512-cTw9xaWMkRDQjXRtkB5zx4Za0CPx7yvCRnTngIJs7xO86lRMVnuiwVGjP66vYTmiiu2ulGFgCeuw1AaK5t+g4Q== dependencies: - "@abp/utils" "~5.0.1" + "@abp/utils" "~5.3.0-rc.1" -"@abp/datatables.net-bs5@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.0.1.tgz#b8afa2255e374c86c50e57bd57c2b36a86d6a890" - integrity sha512-1fuCk+K4xW3XnDFo2+kPXHMoOTol4HLRcWVRELjoBQ5YbTxEPsbrhfNUeUsECDAmkxoqY7G3MEdtIVwmy5NPpg== +"@abp/datatables.net-bs5@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.3.0-rc.1.tgz#ca624d788acdcc547d0bdf1f76ba3ffc105dfd52" + integrity sha512-uyFBkD9rM3wGve0ZKrr7bEbC0Z/ywi8S/EYL6GwLzGNtogSsVj5HGtSvifKjCBn7KmAvo54skKoVgVEn77dlWQ== dependencies: - "@abp/datatables.net" "~5.0.1" - datatables.net-bs5 "^1.10.25" + "@abp/datatables.net" "~5.3.0-rc.1" + datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.1.tgz#0ce5bdf7aa5bf224b93a22758a016c50562d6569" - integrity sha512-x9D2YNtnOJRrKXi2Pwrqzz9sIOrn3o6x2c8ZxjyC54vh+SLQtLycAzQw7OyaZGdbFkudlJiCuME/FiuZvht8Og== +"@abp/datatables.net@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.3.0-rc.1.tgz#38c0f6323f7e6305a50f7de9885b8a3f440cdf15" + integrity sha512-lecJ9Yelgey/nfSscsUHET0gyB6pZgkhnJXu3u8d9XhV2M5sc/WSnnCO3bgVBqMDImprR4GFPFw2cUlWkb8QBg== dependencies: - "@abp/jquery" "~5.0.1" - datatables.net "^1.10.21" + "@abp/jquery" "~5.3.0-rc.1" + datatables.net "^1.11.4" -"@abp/font-awesome@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.1.tgz#661753403499925661f880c53214841dd34f5210" - integrity sha512-C+alReNvHZzST55ITBTyFqhdTehPo5ondzfqc9QlyB3Kwk1DIq0CaLqfS2xU5glYGDSqKi7xfkyQnJdwu2hKRA== +"@abp/font-awesome@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.3.0-rc.1.tgz#de14dca2b33fdc098d2325c5047e030a3927bfa9" + integrity sha512-tIuDwo+L5CuLpQ+ARsaTYmxuqpSJLqcaXuoFfk6JAC20bw881t7y8w4xWy1PUs0+SEQwTT7diZjQrcA/xxlMUQ== dependencies: - "@abp/core" "~5.0.1" - "@fortawesome/fontawesome-free" "^5.13.0" + "@abp/core" "~5.3.0-rc.1" + "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.1.tgz#20fa51946f68a7acd6ef3dd3d8d1349307f681b4" - integrity sha512-Q7GG0+XFXs7pDoa4p3r7vm8+sUh5ohwovedPNVghtX8Rm2I1sfVfJKamPr24PCAyJcFVntU1WCt/CngneES3pw== +"@abp/jquery-form@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.3.0-rc.1.tgz#0a363d8e4814651e0c46e2109d19dcc84fc884b0" + integrity sha512-IWazO6BW5rHJ+ODk4haEqWzfzHvbxtW2+T1o534Lr7d+LI9yabNiQmRZ24yzNDb6SmRvDUVsumZ+lxPn2WBhIw== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.1.tgz#50798d3c087d0b103944b3a9e7c39a1f51db9fdc" - integrity sha512-w5SAYB0EZRbOhIFcCUXWvoGB/dWj3zyQOarbvzJ9LelgrXvvoissaaSSqq6BySjr1UigIWBCVuruAQssizmXBQ== +"@abp/jquery-validation-unobtrusive@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.3.0-rc.1.tgz#0aa2a5535acd79b5288ef04a0dc1b83a7a57b4b9" + integrity sha512-Qv/+nrd+ZeUs/2mCMahpQFqEguMOcmHrLg7hcw0LgcHr+MmEcG4WDcijTY6suFyekaf0DZD6vsFZjdvZmhsVYQ== dependencies: - "@abp/jquery-validation" "~5.0.1" - jquery-validation-unobtrusive "^3.2.11" + "@abp/jquery-validation" "~5.3.0-rc.1" + jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.1.tgz#5932060d1fdf04a81e998caac959188aefdf1669" - integrity sha512-T5p0U2cWh6Jov55AiUxJYRw92L6ubFXfqL0EkaePV5AnoetVXheluhq9gQAKnwVAqtc/3Rxkr/lO047catUkjw== +"@abp/jquery-validation@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.3.0-rc.1.tgz#d05afbe0209c0815afe3a7cb0cf811256e9905fc" + integrity sha512-3DoRX6c8duRx1/g7MFuPAO/qesJCFqbVbw+x0+QnKmCkVZmz5VFAqdO9yFMxDFRbBAtyp7faaarc0lOtAcBsoA== dependencies: - "@abp/jquery" "~5.0.1" - jquery-validation "^1.19.2" + "@abp/jquery" "~5.3.0-rc.1" + jquery-validation "^1.19.3" -"@abp/jquery@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.1.tgz#1522ba1e0c488bffdc30a230ab35e225ae32d028" - integrity sha512-AacK4cy/RpzBfRYf7Jjn+TmVm72TW0jEjRoQ3TOXmlOrunRph05mQm72Ux2o8+Z1lOwxJKRz5gKSbRTfa6Tgpw== +"@abp/jquery@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.3.0-rc.1.tgz#26e5d5761f2629d02b2534ad964080221d536308" + integrity sha512-//bqInarV6XOs8+I5GW1q/c05sjnCq/Z0vuzFW1i1NDrQ2Q5kqF5leMV9hhGEZmfR+yG1T0MsbVvueieRkV/cA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" jquery "~3.6.0" -"@abp/lodash@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.1.tgz#ad22895772ce65e52941dddb84d0a7d26c521d59" - integrity sha512-r1QqZCXfDd0YQnE4MkcY291H5jWFdZtGeYmwjIkn7aeOZ0PP9qsDPkWTwPwbpfmnz4DhmIdO5a1rveWz/J5ZwQ== +"@abp/lodash@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.3.0-rc.1.tgz#c53304fbd9b1c885a9a812c681c3698dd8ecea47" + integrity sha512-yBvUB05z/SSEEbZ79nFfb0cKwWVFbrt9OtUkQHy9ER7ip0R9escG2n1djFtAA33yZr/NLzSUh+vVBYsEhk8MOA== dependencies: - "@abp/core" "~5.0.1" - lodash "^4.17.15" + "@abp/core" "~5.3.0-rc.1" + lodash "^4.17.21" -"@abp/luxon@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.1.tgz#7930e30db60e63b486a51030c60e09b54bcb3867" - integrity sha512-cXbnyAI9Gn2bZBQuCN46UFOkzb+djA3LMgpeMlTTv0aA87PrjzT60EPQ4a9FLovESqNnblaQ9Je43QwoGH8kZA== +"@abp/luxon@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.3.0-rc.1.tgz#bcb4de01b20a8e4da8db186e88fdebfcde47fb8f" + integrity sha512-SLozcDvCL/2jyvG2ZU+DHjzbfHYdmwiRjWu7gWyNjaY2e6D3NraHHjpMQ7ubObXZRlhhvfcp0i6eeKKoZNJtEQ== dependencies: - "@abp/core" "~5.0.1" - luxon "^1.24.1" + "@abp/core" "~5.3.0-rc.1" + luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.1.tgz#268ec30eef8ba72a0c8cb997e55d48a1508b2719" - integrity sha512-mqF6OizoWp6kg5pztNfF78+mbfyX3JAXDfv+ZUCvjtAqllIzyOUIqRSXULDkAcDeCC1+PluRsd+uSltIppC5hA== +"@abp/malihu-custom-scrollbar-plugin@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.3.0-rc.1.tgz#398181c7c6cc1805544e7a1ccd0423ed96005e0b" + integrity sha512-KZar881wtotKc+1bqDlBWo2vLUEeeqEpMBg8+BiXsGofp5ovudifVPM6mHZ9Gi29U9LAMyI0VEGwLJctgB/UoA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.1.tgz#644c46c7c942a6b9d36bc76c7132f32ad577933b" - integrity sha512-FHVqEebQS3XiYn5TMEhGaQJOAYnPqxivKpeOB0F0F2bEDGqt3OXh05KcQBOm+sDSScq3c7T7HLr9mMzlYtyHXw== +"@abp/select2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.3.0-rc.1.tgz#b2ce00b6545674d6bccc10fdfe4626a4598a0cdc" + integrity sha512-frE5jia7bBdZinW4LqD5JR+wknWu2ARX3L3pPiQ080ulB+P58gRj07ZPd1BWgRcvutnuANYyP9rZtDA18Ls+9Q== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" select2 "^4.0.13" -"@abp/sweetalert2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.1.tgz#acf2acfc04619c7907237238bfaeb63f2d75fb22" - integrity sha512-CPqXIaHK7Ff6i8gNhxoZ9r3te9LIEiDCUpdHNtgRVMCaLbywfkiLyirlfRIB6lxRWSw8BZ+M/azdp5uzidW8Vw== +"@abp/sweetalert2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.3.0-rc.1.tgz#6eb10b257e7f256da64ff6fe248a370671a26920" + integrity sha512-g9nddGcDGaG6EmjX7qpRcLzy3F38BTtFc0RBWApH7Da1o/LMYFYa6xGfS7ouIynZBM9j/BRP12CVTR+Y9qqbGg== dependencies: - "@abp/core" "~5.0.1" - sweetalert2 "^11.0.18" + "@abp/core" "~5.3.0-rc.1" + sweetalert2 "^11.3.6" -"@abp/timeago@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.1.tgz#09ca6302304de09baa5ac8c72b950515ab0d0451" - integrity sha512-6onXho8R6eiWfncONZFBn18OwgQPKIaRM73rVevpRGJTf2pylcHtCp4uHGsoqgCc+TQU7FyoKTTkg4lfvCQa0A== +"@abp/timeago@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.3.0-rc.1.tgz#2702a0f22db52dbf4c0717e4abcd317c56d10563" + integrity sha512-XRc4D98FIZR0YTXIoV0+OxVJTdixtNDiwatZRffopHT4Kpptmpj6O9KMcB4SngCH99/TrUFdEUnA2CgszxiEOA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" timeago "^1.6.7" -"@abp/toastr@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.1.tgz#a3959df1de0c4640fabf508da9ccd3ed37ae2b03" - integrity sha512-ndL1uj2ce4PbGDzxh+QCIWYu+GAmW1Xwma4aJcq5zKo+xhlLJJnTe6QFGKr7wSsTVZMB7z1Pp2olvXH6an82+g== +"@abp/toastr@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.3.0-rc.1.tgz#ec3a3d302ac91d5393c3caeb8b4884ad811b6edb" + integrity sha512-InZweYuBkrNZNBQKp6A+6gxGdO/lB0XsrXaa+CIVe55p8aNJPzE0mnvSfKWhN5G273wR08AD9RjR22kYS+bgFA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" toastr "^2.1.4" -"@abp/utils@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.1.tgz#57934383004a21172bf7e08130813c08946894fb" - integrity sha512-WLCWe7iJ8krxsz8Z7E+8GDaGZuG/6PZDdqPcMIh95opi0kvcLxb+mjPXXpiXdtFzW7O09a+NaNOxorsEFxjoKw== +"@abp/utils@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.3.0-rc.1.tgz#3fa758944e7325e7b3f528141e03bb71f8e04d24" + integrity sha512-/8BTYZomNMdy+RpYXWLp5dg0lRhmfiguciZEVWo4qRw1lCXm/JR+0842XT1XYE1dQ4orNNJ3/H86eRX8Ab6Yfg== dependencies: just-compare "^1.3.0" -"@fortawesome/fontawesome-free@^5.13.0": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz#c53b4066edae16cd1fd669f687baf031b45fb9d6" - integrity sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw== +"@fortawesome/fontawesome-free@^5.15.4": + version "5.15.4" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" + integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== abbrev@1: version "1.1.1" @@ -406,12 +405,7 @@ bootstrap-datepicker@^1.9.0: dependencies: jquery ">=1.7.1 <4.0.0" -bootstrap-v4-rtl@4.6.0-1: - version "4.6.0-1" - resolved "https://registry.yarnpkg.com/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.6.0-1.tgz#8fc502e800308fb725151128dd288df1c027cd8e" - integrity sha512-ChcbO5JeEQx6/Yz40YZLq3A4RIWcCmCCiRpweF5wg32/Q8CfWrwDNpcDTJ2SU+aSAewUJoCSzf/tRxhAgnZuog== - -bootstrap@^5.1.0: +bootstrap@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34" integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q== @@ -618,25 +612,18 @@ d@1: dependencies: es5-ext "^0.10.9" -datatables.net-bs5@^1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.11.3.tgz#939d0e66fbf518718a519534a88fc88cd29405b0" - integrity sha512-u0tosKUR1XNpXzxOOt2NInnNYayt7GQoG+OM1xPRhdkZ7ZBD4oNF8S0aKve8yvSUq/ZwTMh4WJeh80GdmrJAdQ== +datatables.net-bs5@^1.11.4: + version "1.12.0" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.12.0.tgz#8cef5579c096c5216afa423af0261acba62b4476" + integrity sha512-8SR3gI2DtcrcFy03vu9MkGtIA61UfE725HvSujOOt+M4v+n0Wf9bsIbvUe2sGDlB4gVQreB0YHNSNamc3053tQ== dependencies: - datatables.net ">=1.10.25" + datatables.net ">=1.11.3" jquery ">=1.7" -datatables.net@>=1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.3.tgz#80e691036efcd62467558ee64c07dd566cb761b4" - integrity sha512-VMj5qEaTebpNurySkM6jy6sGpl+s6onPK8xJhYr296R/vUBnz1+id16NVqNf9z5aR076OGcpGHCuiTuy4E05oQ== - dependencies: - jquery ">=1.7" - -datatables.net@^1.10.21: - version "1.10.21" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.21.tgz#f1d35c8e5c3eb7f5caef39e80cd5b836a8c77103" - integrity sha512-/bSZtxmf3GTpYcvEmwZ8q26I1yhSx8qklR2B+s1K8+/51UW/zc2zTYwJMqr/Z+iCYixAc00ildj4g2x0Qamolw== +datatables.net@>=1.11.3, datatables.net@^1.11.4: + version "1.11.5" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.5.tgz#858a69953a01e1d5b18786769802117b04b8e3c9" + integrity sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA== dependencies: jquery ">=1.7" @@ -1390,12 +1377,12 @@ jquery-mousewheel@>=3.0.6: version "3.1.13" resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" -jquery-validation-unobtrusive@^3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.11.tgz#175ee46380385a0e33ed320f255fad321f68f9f5" - integrity sha512-3FQPllaWdD+Aq55zJLGSW39+eXPDz1HhwAvrSwYi8zHQ8DVcu5IJ1HVeTiCl0BnCnrIBvfFU3zEB/DrGdcoRIQ== +jquery-validation-unobtrusive@^3.2.12: + version "3.2.12" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz#1d52841f653e516525c251e494b042e664dad8af" + integrity sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ== dependencies: - jquery ">=1.8" + jquery "^3.5.1" jquery-validation ">=1.16" jquery-validation@>=1.16: @@ -1404,12 +1391,12 @@ jquery-validation@>=1.16: dependencies: jquery "^1.7 || ^2.0 || ^3.1" -jquery-validation@^1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.2.tgz#c602831b0d8c5881400af424e872757ce241eff9" - integrity sha512-yHaAqOGaAB7+p2u5lpzhhQVt3CBMUw3fHcuCJ7nXmXz0LWLHPN7yOhwnocp5nrn2SmnXR1jpV+whx2j1kLz1tQ== +jquery-validation@^1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.3.tgz#50b350eba8b02bcfd119ba15f199487b7eb64086" + integrity sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw== -jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1": +jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, "jquery@^1.7 || ^2.0 || ^3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" @@ -1418,7 +1405,7 @@ jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2. resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== -jquery@~3.6.0: +jquery@^3.5.1, jquery@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -1512,15 +1499,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -luxon@^1.24.1: - version "1.24.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.24.1.tgz#a8383266131ed4eaed4b5f430f96f3695403a52a" - integrity sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg== +luxon@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.4.0.tgz#9435806545bb32d4234dab766ab8a3d54847a765" + integrity sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA== make-iterator@^1.0.0: version "1.0.1" @@ -2371,10 +2358,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert2@^11.0.18: - version "11.3.3" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.3.3.tgz#92ca0408380de8f29180788ce7ed5d5faf799cea" - integrity sha512-10Keqbmjng/+XpkpSOQ6dttpztl7XNohjnpC6bX6XFgm0WpRXM81YE0wmonGYOP6uyzd76vpfnZS04PdVvO31Q== +sweetalert2@^11.3.6: + version "11.4.14" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.4.14.tgz#b7c7efbf6672aa56696ba68d7ac141798b961525" + integrity sha512-Dh4XqfUSpCwhRsGM5zZFbtBRHujjcaf98DjVKXEs0ER4E/Zao0OtDHZRRQqvT9xxY7RA8WsiZ6FHJbyW+BBbDw== tar@^4: version "4.4.10" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock index ba123065d7..64fd8e6b93 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock @@ -2,52 +2,52 @@ # yarn lockfile v1 -"@abp/aspnetcore.components.server.basictheme@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-5.0.1.tgz#f9bb30d5b2563438982094d5a12279649b31016b" - integrity sha512-PJMUUUA/BMYD1rMoRjTI1PSdVk84idVYAcaxb8na3MqWT7gRTfDVRI83awZg1pB56CESHCPEOmhEHZYQfTmzhg== - dependencies: - "@abp/aspnetcore.components.server.theming" "~5.0.1" - -"@abp/aspnetcore.components.server.theming@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-5.0.1.tgz#cc9d7234340e9c0f6459b9fd1f0ef63410990357" - integrity sha512-9eR4gwsilvN7S4Igb5Cm+Zwrp+RaP+5flbD9wUf0JA/LHb0W1SGm97XVS/E0UFvEWRsk4GKjb9hR9+gvTGVarQ== - dependencies: - "@abp/bootstrap" "~5.0.1" - "@abp/font-awesome" "~5.0.1" - -"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.1.tgz#884a4bc9ea043654891be56cd7e7c7bbf9bbad8c" - integrity sha512-JGTQyg3Zyfda84yg/Geq6rGuBN2SX4gIOaFL2h8BX9bA8CVuBC+zcwfO1bBsP89xfTyPvdSAGBvSfhCjPwsukQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.1.tgz#77a4900424603e0be048f3507aa852701f3139a2" - integrity sha512-mn9HEOHBkmBr7d/VUt0bfg9K58IyRDb7j3ZiDoHo263WLXJkf0+C7MEbv/zxfDHW4NeztsNCd3ugA7PdTxPzmA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.0.1" - "@abp/bootstrap" "~5.0.1" - "@abp/bootstrap-datepicker" "~5.0.1" - "@abp/datatables.net-bs5" "~5.0.1" - "@abp/font-awesome" "~5.0.1" - "@abp/jquery-form" "~5.0.1" - "@abp/jquery-validation-unobtrusive" "~5.0.1" - "@abp/lodash" "~5.0.1" - "@abp/luxon" "~5.0.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.0.1" - "@abp/select2" "~5.0.1" - "@abp/sweetalert2" "~5.0.1" - "@abp/timeago" "~5.0.1" - "@abp/toastr" "~5.0.1" - -"@abp/aspnetcore.mvc.ui@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.1.tgz#f5aa4e0dcc10878f590e30836887f3f9861e91e3" - integrity sha512-bN15UcNhTqeo0RXlIYws7Jd8ZfSBsVM6Y5wiAqbq1Q3Lvs1uLmryhZpn6sHmKw2Z3Lnhec7VjnZN0FwNpzEqUw== +"@abp/aspnetcore.components.server.basictheme@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-5.3.0-rc.1.tgz#8fa1db4fbe2a9ac58db3fefd25e1b60cdb9fa0d5" + integrity sha512-92kD2PPtvyaeNEvSQRAVRj/BEetitRwbuYqM9PHdaLXeNdnGo/C6JGej9sc488KKxdRq2uaVrMY2xlDUEYc9vw== + dependencies: + "@abp/aspnetcore.components.server.theming" "~5.3.0-rc.1" + +"@abp/aspnetcore.components.server.theming@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-5.3.0-rc.1.tgz#654dc4f4ba7f37b12e900fbeaf5c8ac57cb192ec" + integrity sha512-csXYJGwcwLv6/75euEi5g6HUxAG/Q47ZtQfema5HL7TV/zz+8T1Z4uuUy+NTyuK7MQpRaO0QBTvn4n4FVnmE0w== + dependencies: + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.basic@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.3.0-rc.1.tgz#dc27eb79ba7353eb6b16e4a2f50d17c3cfc9157d" + integrity sha512-TEbz/ISsGhfTec66XSeivQjCOCpTidufdpZmj8JRyrbQvhXOYohJs3ImrGJOIxUwo6nuzagGpotqXryjIF+jrg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.3.0-rc.1.tgz#ed993befe99682baee55ea8771f983980ba8f93f" + integrity sha512-kL4CXe0YoZ4wJ4XvutqLPkv4fMuFeRJFzdix6lx4dPAArnPu69n3P4qFhokPkcoGpB2KTRqyn9fHQs8g2FCGQw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.3.0-rc.1" + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/bootstrap-datepicker" "~5.3.0-rc.1" + "@abp/datatables.net-bs5" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + "@abp/jquery-form" "~5.3.0-rc.1" + "@abp/jquery-validation-unobtrusive" "~5.3.0-rc.1" + "@abp/lodash" "~5.3.0-rc.1" + "@abp/luxon" "~5.3.0-rc.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.3.0-rc.1" + "@abp/select2" "~5.3.0-rc.1" + "@abp/sweetalert2" "~5.3.0-rc.1" + "@abp/timeago" "~5.3.0-rc.1" + "@abp/toastr" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.3.0-rc.1.tgz#5205d3a5ea500ff3b8d525dcc11a2ce4cfccdfd3" + integrity sha512-mIefq3QSVtP7heNl0ocHiSKLU+DwN5/TDvvPj2L3IZkCzuOrDxoBUIBIciea4k10HIQzqo6gmm1YOw0CEfzNHg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -56,152 +56,151 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.1.tgz#52116a154e343d84c87257ad1ef10b54012f4c33" - integrity sha512-ZJWaZKzGzshBAfyBqaUScfWqeBVfWGbZIwIplF8VKtDGcyI8R54bqDsydhS88CCnolRz4+tfq3QY6yAXrUEKAw== +"@abp/bootstrap-datepicker@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.3.0-rc.1.tgz#1a5a29d7f9904e8d99c7085bc4545ad2665195cb" + integrity sha512-Y5QLLNd2UpbzbWSh+5nKdpAdz2i3V8+feTHTpAxnPgYRabPGqAFiOrty8KZ1MJEgjQFWC1ypGHYII7GWVyIS6Q== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.1.tgz#d542a8fd7151e22eda1643e313a67f9892c50533" - integrity sha512-wyVAp6a4OIwlqK7AZozs7wpsBZgzG55EKeChBBfUXloJPuirQHxccFNE41aAYWfKur+wj25WD5NBnzFuKyNYiQ== +"@abp/bootstrap@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.3.0-rc.1.tgz#977d579f59e18b1eb2c9b43612d525a859a575a4" + integrity sha512-dpY0bPHdhUI5yL23+EsR6w/KjoPyehaEgHLLKQDERdubX1Zk/SDWrhrYXnXxtJ0fvxG2aRVOEBMULmHD3m/PoA== dependencies: - "@abp/core" "~5.0.1" - bootstrap "^5.1.0" - bootstrap-v4-rtl "4.6.0-1" + "@abp/core" "~5.3.0-rc.1" + bootstrap "^5.1.3" -"@abp/core@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.1.tgz#904fa2c22bcbf42deb56abf772c3a53362807a2f" - integrity sha512-QzX35Oa+Vncu2OP1tXvGjAVFznmD1tZRn4tlDQgn36B2MU06UEO0JSx7JVedPvhzQZceUe5+WWMfuYNM2xeBTw== +"@abp/core@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.3.0-rc.1.tgz#4ede309ccfab440deb66fecb091273027483676a" + integrity sha512-cTw9xaWMkRDQjXRtkB5zx4Za0CPx7yvCRnTngIJs7xO86lRMVnuiwVGjP66vYTmiiu2ulGFgCeuw1AaK5t+g4Q== dependencies: - "@abp/utils" "~5.0.1" + "@abp/utils" "~5.3.0-rc.1" -"@abp/datatables.net-bs5@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.0.1.tgz#b8afa2255e374c86c50e57bd57c2b36a86d6a890" - integrity sha512-1fuCk+K4xW3XnDFo2+kPXHMoOTol4HLRcWVRELjoBQ5YbTxEPsbrhfNUeUsECDAmkxoqY7G3MEdtIVwmy5NPpg== +"@abp/datatables.net-bs5@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.3.0-rc.1.tgz#ca624d788acdcc547d0bdf1f76ba3ffc105dfd52" + integrity sha512-uyFBkD9rM3wGve0ZKrr7bEbC0Z/ywi8S/EYL6GwLzGNtogSsVj5HGtSvifKjCBn7KmAvo54skKoVgVEn77dlWQ== dependencies: - "@abp/datatables.net" "~5.0.1" - datatables.net-bs5 "^1.10.25" + "@abp/datatables.net" "~5.3.0-rc.1" + datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.1.tgz#0ce5bdf7aa5bf224b93a22758a016c50562d6569" - integrity sha512-x9D2YNtnOJRrKXi2Pwrqzz9sIOrn3o6x2c8ZxjyC54vh+SLQtLycAzQw7OyaZGdbFkudlJiCuME/FiuZvht8Og== +"@abp/datatables.net@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.3.0-rc.1.tgz#38c0f6323f7e6305a50f7de9885b8a3f440cdf15" + integrity sha512-lecJ9Yelgey/nfSscsUHET0gyB6pZgkhnJXu3u8d9XhV2M5sc/WSnnCO3bgVBqMDImprR4GFPFw2cUlWkb8QBg== dependencies: - "@abp/jquery" "~5.0.1" - datatables.net "^1.10.21" + "@abp/jquery" "~5.3.0-rc.1" + datatables.net "^1.11.4" -"@abp/font-awesome@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.1.tgz#661753403499925661f880c53214841dd34f5210" - integrity sha512-C+alReNvHZzST55ITBTyFqhdTehPo5ondzfqc9QlyB3Kwk1DIq0CaLqfS2xU5glYGDSqKi7xfkyQnJdwu2hKRA== +"@abp/font-awesome@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.3.0-rc.1.tgz#de14dca2b33fdc098d2325c5047e030a3927bfa9" + integrity sha512-tIuDwo+L5CuLpQ+ARsaTYmxuqpSJLqcaXuoFfk6JAC20bw881t7y8w4xWy1PUs0+SEQwTT7diZjQrcA/xxlMUQ== dependencies: - "@abp/core" "~5.0.1" - "@fortawesome/fontawesome-free" "^5.13.0" + "@abp/core" "~5.3.0-rc.1" + "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.1.tgz#20fa51946f68a7acd6ef3dd3d8d1349307f681b4" - integrity sha512-Q7GG0+XFXs7pDoa4p3r7vm8+sUh5ohwovedPNVghtX8Rm2I1sfVfJKamPr24PCAyJcFVntU1WCt/CngneES3pw== +"@abp/jquery-form@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.3.0-rc.1.tgz#0a363d8e4814651e0c46e2109d19dcc84fc884b0" + integrity sha512-IWazO6BW5rHJ+ODk4haEqWzfzHvbxtW2+T1o534Lr7d+LI9yabNiQmRZ24yzNDb6SmRvDUVsumZ+lxPn2WBhIw== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.1.tgz#50798d3c087d0b103944b3a9e7c39a1f51db9fdc" - integrity sha512-w5SAYB0EZRbOhIFcCUXWvoGB/dWj3zyQOarbvzJ9LelgrXvvoissaaSSqq6BySjr1UigIWBCVuruAQssizmXBQ== +"@abp/jquery-validation-unobtrusive@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.3.0-rc.1.tgz#0aa2a5535acd79b5288ef04a0dc1b83a7a57b4b9" + integrity sha512-Qv/+nrd+ZeUs/2mCMahpQFqEguMOcmHrLg7hcw0LgcHr+MmEcG4WDcijTY6suFyekaf0DZD6vsFZjdvZmhsVYQ== dependencies: - "@abp/jquery-validation" "~5.0.1" - jquery-validation-unobtrusive "^3.2.11" + "@abp/jquery-validation" "~5.3.0-rc.1" + jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.1.tgz#5932060d1fdf04a81e998caac959188aefdf1669" - integrity sha512-T5p0U2cWh6Jov55AiUxJYRw92L6ubFXfqL0EkaePV5AnoetVXheluhq9gQAKnwVAqtc/3Rxkr/lO047catUkjw== +"@abp/jquery-validation@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.3.0-rc.1.tgz#d05afbe0209c0815afe3a7cb0cf811256e9905fc" + integrity sha512-3DoRX6c8duRx1/g7MFuPAO/qesJCFqbVbw+x0+QnKmCkVZmz5VFAqdO9yFMxDFRbBAtyp7faaarc0lOtAcBsoA== dependencies: - "@abp/jquery" "~5.0.1" - jquery-validation "^1.19.2" + "@abp/jquery" "~5.3.0-rc.1" + jquery-validation "^1.19.3" -"@abp/jquery@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.1.tgz#1522ba1e0c488bffdc30a230ab35e225ae32d028" - integrity sha512-AacK4cy/RpzBfRYf7Jjn+TmVm72TW0jEjRoQ3TOXmlOrunRph05mQm72Ux2o8+Z1lOwxJKRz5gKSbRTfa6Tgpw== +"@abp/jquery@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.3.0-rc.1.tgz#26e5d5761f2629d02b2534ad964080221d536308" + integrity sha512-//bqInarV6XOs8+I5GW1q/c05sjnCq/Z0vuzFW1i1NDrQ2Q5kqF5leMV9hhGEZmfR+yG1T0MsbVvueieRkV/cA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" jquery "~3.6.0" -"@abp/lodash@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.1.tgz#ad22895772ce65e52941dddb84d0a7d26c521d59" - integrity sha512-r1QqZCXfDd0YQnE4MkcY291H5jWFdZtGeYmwjIkn7aeOZ0PP9qsDPkWTwPwbpfmnz4DhmIdO5a1rveWz/J5ZwQ== +"@abp/lodash@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.3.0-rc.1.tgz#c53304fbd9b1c885a9a812c681c3698dd8ecea47" + integrity sha512-yBvUB05z/SSEEbZ79nFfb0cKwWVFbrt9OtUkQHy9ER7ip0R9escG2n1djFtAA33yZr/NLzSUh+vVBYsEhk8MOA== dependencies: - "@abp/core" "~5.0.1" - lodash "^4.17.15" + "@abp/core" "~5.3.0-rc.1" + lodash "^4.17.21" -"@abp/luxon@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.1.tgz#7930e30db60e63b486a51030c60e09b54bcb3867" - integrity sha512-cXbnyAI9Gn2bZBQuCN46UFOkzb+djA3LMgpeMlTTv0aA87PrjzT60EPQ4a9FLovESqNnblaQ9Je43QwoGH8kZA== +"@abp/luxon@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.3.0-rc.1.tgz#bcb4de01b20a8e4da8db186e88fdebfcde47fb8f" + integrity sha512-SLozcDvCL/2jyvG2ZU+DHjzbfHYdmwiRjWu7gWyNjaY2e6D3NraHHjpMQ7ubObXZRlhhvfcp0i6eeKKoZNJtEQ== dependencies: - "@abp/core" "~5.0.1" - luxon "^1.24.1" + "@abp/core" "~5.3.0-rc.1" + luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.1.tgz#268ec30eef8ba72a0c8cb997e55d48a1508b2719" - integrity sha512-mqF6OizoWp6kg5pztNfF78+mbfyX3JAXDfv+ZUCvjtAqllIzyOUIqRSXULDkAcDeCC1+PluRsd+uSltIppC5hA== +"@abp/malihu-custom-scrollbar-plugin@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.3.0-rc.1.tgz#398181c7c6cc1805544e7a1ccd0423ed96005e0b" + integrity sha512-KZar881wtotKc+1bqDlBWo2vLUEeeqEpMBg8+BiXsGofp5ovudifVPM6mHZ9Gi29U9LAMyI0VEGwLJctgB/UoA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.1.tgz#644c46c7c942a6b9d36bc76c7132f32ad577933b" - integrity sha512-FHVqEebQS3XiYn5TMEhGaQJOAYnPqxivKpeOB0F0F2bEDGqt3OXh05KcQBOm+sDSScq3c7T7HLr9mMzlYtyHXw== +"@abp/select2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.3.0-rc.1.tgz#b2ce00b6545674d6bccc10fdfe4626a4598a0cdc" + integrity sha512-frE5jia7bBdZinW4LqD5JR+wknWu2ARX3L3pPiQ080ulB+P58gRj07ZPd1BWgRcvutnuANYyP9rZtDA18Ls+9Q== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" select2 "^4.0.13" -"@abp/sweetalert2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.1.tgz#acf2acfc04619c7907237238bfaeb63f2d75fb22" - integrity sha512-CPqXIaHK7Ff6i8gNhxoZ9r3te9LIEiDCUpdHNtgRVMCaLbywfkiLyirlfRIB6lxRWSw8BZ+M/azdp5uzidW8Vw== +"@abp/sweetalert2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.3.0-rc.1.tgz#6eb10b257e7f256da64ff6fe248a370671a26920" + integrity sha512-g9nddGcDGaG6EmjX7qpRcLzy3F38BTtFc0RBWApH7Da1o/LMYFYa6xGfS7ouIynZBM9j/BRP12CVTR+Y9qqbGg== dependencies: - "@abp/core" "~5.0.1" - sweetalert2 "^11.0.18" + "@abp/core" "~5.3.0-rc.1" + sweetalert2 "^11.3.6" -"@abp/timeago@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.1.tgz#09ca6302304de09baa5ac8c72b950515ab0d0451" - integrity sha512-6onXho8R6eiWfncONZFBn18OwgQPKIaRM73rVevpRGJTf2pylcHtCp4uHGsoqgCc+TQU7FyoKTTkg4lfvCQa0A== +"@abp/timeago@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.3.0-rc.1.tgz#2702a0f22db52dbf4c0717e4abcd317c56d10563" + integrity sha512-XRc4D98FIZR0YTXIoV0+OxVJTdixtNDiwatZRffopHT4Kpptmpj6O9KMcB4SngCH99/TrUFdEUnA2CgszxiEOA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" timeago "^1.6.7" -"@abp/toastr@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.1.tgz#a3959df1de0c4640fabf508da9ccd3ed37ae2b03" - integrity sha512-ndL1uj2ce4PbGDzxh+QCIWYu+GAmW1Xwma4aJcq5zKo+xhlLJJnTe6QFGKr7wSsTVZMB7z1Pp2olvXH6an82+g== +"@abp/toastr@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.3.0-rc.1.tgz#ec3a3d302ac91d5393c3caeb8b4884ad811b6edb" + integrity sha512-InZweYuBkrNZNBQKp6A+6gxGdO/lB0XsrXaa+CIVe55p8aNJPzE0mnvSfKWhN5G273wR08AD9RjR22kYS+bgFA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" toastr "^2.1.4" -"@abp/utils@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.1.tgz#57934383004a21172bf7e08130813c08946894fb" - integrity sha512-WLCWe7iJ8krxsz8Z7E+8GDaGZuG/6PZDdqPcMIh95opi0kvcLxb+mjPXXpiXdtFzW7O09a+NaNOxorsEFxjoKw== +"@abp/utils@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.3.0-rc.1.tgz#3fa758944e7325e7b3f528141e03bb71f8e04d24" + integrity sha512-/8BTYZomNMdy+RpYXWLp5dg0lRhmfiguciZEVWo4qRw1lCXm/JR+0842XT1XYE1dQ4orNNJ3/H86eRX8Ab6Yfg== dependencies: just-compare "^1.3.0" -"@fortawesome/fontawesome-free@^5.13.0": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz#c53b4066edae16cd1fd669f687baf031b45fb9d6" - integrity sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw== +"@fortawesome/fontawesome-free@^5.15.4": + version "5.15.4" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" + integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== abbrev@1: version "1.1.1" @@ -406,12 +405,7 @@ bootstrap-datepicker@^1.9.0: dependencies: jquery ">=1.7.1 <4.0.0" -bootstrap-v4-rtl@4.6.0-1: - version "4.6.0-1" - resolved "https://registry.yarnpkg.com/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.6.0-1.tgz#8fc502e800308fb725151128dd288df1c027cd8e" - integrity sha512-ChcbO5JeEQx6/Yz40YZLq3A4RIWcCmCCiRpweF5wg32/Q8CfWrwDNpcDTJ2SU+aSAewUJoCSzf/tRxhAgnZuog== - -bootstrap@^5.1.0: +bootstrap@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34" integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q== @@ -618,25 +612,18 @@ d@1: dependencies: es5-ext "^0.10.9" -datatables.net-bs5@^1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.11.3.tgz#939d0e66fbf518718a519534a88fc88cd29405b0" - integrity sha512-u0tosKUR1XNpXzxOOt2NInnNYayt7GQoG+OM1xPRhdkZ7ZBD4oNF8S0aKve8yvSUq/ZwTMh4WJeh80GdmrJAdQ== +datatables.net-bs5@^1.11.4: + version "1.12.0" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.12.0.tgz#8cef5579c096c5216afa423af0261acba62b4476" + integrity sha512-8SR3gI2DtcrcFy03vu9MkGtIA61UfE725HvSujOOt+M4v+n0Wf9bsIbvUe2sGDlB4gVQreB0YHNSNamc3053tQ== dependencies: - datatables.net ">=1.10.25" + datatables.net ">=1.11.3" jquery ">=1.7" -datatables.net@>=1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.3.tgz#80e691036efcd62467558ee64c07dd566cb761b4" - integrity sha512-VMj5qEaTebpNurySkM6jy6sGpl+s6onPK8xJhYr296R/vUBnz1+id16NVqNf9z5aR076OGcpGHCuiTuy4E05oQ== - dependencies: - jquery ">=1.7" - -datatables.net@^1.10.21: - version "1.10.21" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.21.tgz#f1d35c8e5c3eb7f5caef39e80cd5b836a8c77103" - integrity sha512-/bSZtxmf3GTpYcvEmwZ8q26I1yhSx8qklR2B+s1K8+/51UW/zc2zTYwJMqr/Z+iCYixAc00ildj4g2x0Qamolw== +datatables.net@>=1.11.3, datatables.net@^1.11.4: + version "1.11.5" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.5.tgz#858a69953a01e1d5b18786769802117b04b8e3c9" + integrity sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA== dependencies: jquery ">=1.7" @@ -1390,12 +1377,12 @@ jquery-mousewheel@>=3.0.6: version "3.1.13" resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" -jquery-validation-unobtrusive@^3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.11.tgz#175ee46380385a0e33ed320f255fad321f68f9f5" - integrity sha512-3FQPllaWdD+Aq55zJLGSW39+eXPDz1HhwAvrSwYi8zHQ8DVcu5IJ1HVeTiCl0BnCnrIBvfFU3zEB/DrGdcoRIQ== +jquery-validation-unobtrusive@^3.2.12: + version "3.2.12" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz#1d52841f653e516525c251e494b042e664dad8af" + integrity sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ== dependencies: - jquery ">=1.8" + jquery "^3.5.1" jquery-validation ">=1.16" jquery-validation@>=1.16: @@ -1404,12 +1391,12 @@ jquery-validation@>=1.16: dependencies: jquery "^1.7 || ^2.0 || ^3.1" -jquery-validation@^1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.2.tgz#c602831b0d8c5881400af424e872757ce241eff9" - integrity sha512-yHaAqOGaAB7+p2u5lpzhhQVt3CBMUw3fHcuCJ7nXmXz0LWLHPN7yOhwnocp5nrn2SmnXR1jpV+whx2j1kLz1tQ== +jquery-validation@^1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.3.tgz#50b350eba8b02bcfd119ba15f199487b7eb64086" + integrity sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw== -jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1": +jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, "jquery@^1.7 || ^2.0 || ^3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" @@ -1418,7 +1405,7 @@ jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2. resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== -jquery@~3.6.0: +jquery@^3.5.1, jquery@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -1512,15 +1499,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -luxon@^1.24.1: - version "1.24.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.24.1.tgz#a8383266131ed4eaed4b5f430f96f3695403a52a" - integrity sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg== +luxon@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.4.0.tgz#9435806545bb32d4234dab766ab8a3d54847a765" + integrity sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA== make-iterator@^1.0.0: version "1.0.1" @@ -2371,10 +2358,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert2@^11.0.18: - version "11.3.3" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.3.3.tgz#92ca0408380de8f29180788ce7ed5d5faf799cea" - integrity sha512-10Keqbmjng/+XpkpSOQ6dttpztl7XNohjnpC6bX6XFgm0WpRXM81YE0wmonGYOP6uyzd76vpfnZS04PdVvO31Q== +sweetalert2@^11.3.6: + version "11.4.14" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.4.14.tgz#b7c7efbf6672aa56696ba68d7ac141798b961525" + integrity sha512-Dh4XqfUSpCwhRsGM5zZFbtBRHujjcaf98DjVKXEs0ER4E/Zao0OtDHZRRQqvT9xxY7RA8WsiZ6FHJbyW+BBbDw== tar@^4: version "4.4.10" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/yarn.lock new file mode 100644 index 0000000000..fb57ccd13a --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index deba8640d6..af051b945e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.1.3.tgz#775f5a9fa7072d33f08b8bf23996226ba4c8aad1" - integrity sha512-c/cV5FUNKPpooi0QRswUzF/EMFQjpjiOiNnoDYjU1Y1NAlkwfLa4Sdm95MP29E4BxGu9tfPRKDdhlG1hwSJLbQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.1.3" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.1.3.tgz#7d8def65280d814f56e5d1066b09ab9d6ed94067" - integrity sha512-8Wbep6GGpxIvVgMGHQ5Nm8vsW8NWCrBq3SP7HeVdXLgnoYQ8DquSxGhYYcdU2+InP1Flpn9/Eveq4rkkUbSEBw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.1.3" - "@abp/bootstrap" "~5.1.3" - "@abp/bootstrap-datepicker" "~5.1.3" - "@abp/datatables.net-bs5" "~5.1.3" - "@abp/font-awesome" "~5.1.3" - "@abp/jquery-form" "~5.1.3" - "@abp/jquery-validation-unobtrusive" "~5.1.3" - "@abp/lodash" "~5.1.3" - "@abp/luxon" "~5.1.3" - "@abp/malihu-custom-scrollbar-plugin" "~5.1.3" - "@abp/select2" "~5.1.3" - "@abp/sweetalert2" "~5.1.3" - "@abp/timeago" "~5.1.3" - "@abp/toastr" "~5.1.3" - -"@abp/aspnetcore.mvc.ui@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.1.3.tgz#25c96ec31321caf6fe3de785df676a3f7052739c" - integrity sha512-T5bhlAI+BSdkr7niddD+J0obuU1B27Kebye90QLtwaiFL56l1w73rXwhesCatFcJ0DMouuPoJLa0ursBOMn59w== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.3.0-rc.1.tgz#dc27eb79ba7353eb6b16e4a2f50d17c3cfc9157d" + integrity sha512-TEbz/ISsGhfTec66XSeivQjCOCpTidufdpZmj8JRyrbQvhXOYohJs3ImrGJOIxUwo6nuzagGpotqXryjIF+jrg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.3.0-rc.1.tgz#ed993befe99682baee55ea8771f983980ba8f93f" + integrity sha512-kL4CXe0YoZ4wJ4XvutqLPkv4fMuFeRJFzdix6lx4dPAArnPu69n3P4qFhokPkcoGpB2KTRqyn9fHQs8g2FCGQw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.3.0-rc.1" + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/bootstrap-datepicker" "~5.3.0-rc.1" + "@abp/datatables.net-bs5" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + "@abp/jquery-form" "~5.3.0-rc.1" + "@abp/jquery-validation-unobtrusive" "~5.3.0-rc.1" + "@abp/lodash" "~5.3.0-rc.1" + "@abp/luxon" "~5.3.0-rc.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.3.0-rc.1" + "@abp/select2" "~5.3.0-rc.1" + "@abp/sweetalert2" "~5.3.0-rc.1" + "@abp/timeago" "~5.3.0-rc.1" + "@abp/toastr" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.3.0-rc.1.tgz#5205d3a5ea500ff3b8d525dcc11a2ce4cfccdfd3" + integrity sha512-mIefq3QSVtP7heNl0ocHiSKLU+DwN5/TDvvPj2L3IZkCzuOrDxoBUIBIciea4k10HIQzqo6gmm1YOw0CEfzNHg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,152 +41,151 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.1.3.tgz#964b7499bd32de952b45e4f460db07b814e5bd1e" - integrity sha512-lukNimqFTf2CJUlALXj4LcY/bp+7KkOZNcQZoF45kpHeXWULVIcSf7TKQPfu7+SrnxwS1T6K446MJvbQGArTQw== +"@abp/bootstrap-datepicker@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.3.0-rc.1.tgz#1a5a29d7f9904e8d99c7085bc4545ad2665195cb" + integrity sha512-Y5QLLNd2UpbzbWSh+5nKdpAdz2i3V8+feTHTpAxnPgYRabPGqAFiOrty8KZ1MJEgjQFWC1ypGHYII7GWVyIS6Q== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.1.3.tgz#0e0490fc1282adf7176128c4d7f74e09e67d9274" - integrity sha512-UvJ/w5zWAlCxDz/OT111Ut7x4I5uq1Uo3p3Cg34X8bdI6IKFxznVOeK/h6NZckVH0mQ2onPKeIBVyFAl1Umqnw== +"@abp/bootstrap@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.3.0-rc.1.tgz#977d579f59e18b1eb2c9b43612d525a859a575a4" + integrity sha512-dpY0bPHdhUI5yL23+EsR6w/KjoPyehaEgHLLKQDERdubX1Zk/SDWrhrYXnXxtJ0fvxG2aRVOEBMULmHD3m/PoA== dependencies: - "@abp/core" "~5.1.3" - bootstrap "^5.1.0" - bootstrap-v4-rtl "4.6.0-1" + "@abp/core" "~5.3.0-rc.1" + bootstrap "^5.1.3" -"@abp/core@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.1.3.tgz#49ebd7c33956e9b9ad819f5d797df4c27e4bb797" - integrity sha512-6f0ASkqMlGeGclXWQVMGp332gVQKwPQa+M04bpmrNNXqGArcrOFV4ohLpS1T33jGysXR5a1HOowU5HUj20ExEA== +"@abp/core@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.3.0-rc.1.tgz#4ede309ccfab440deb66fecb091273027483676a" + integrity sha512-cTw9xaWMkRDQjXRtkB5zx4Za0CPx7yvCRnTngIJs7xO86lRMVnuiwVGjP66vYTmiiu2ulGFgCeuw1AaK5t+g4Q== dependencies: - "@abp/utils" "~5.1.3" + "@abp/utils" "~5.3.0-rc.1" -"@abp/datatables.net-bs5@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.1.3.tgz#1581d6673a44a40b9022a0e3c0af00a74f935435" - integrity sha512-+pj22OveFTQi6mcgSrHYMKT4Z14PXzClg2C/qi6MMG45L71CZRHG9QrEX3cA3RPb28ztKlN6gqrd+4SYe0g+CA== +"@abp/datatables.net-bs5@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.3.0-rc.1.tgz#ca624d788acdcc547d0bdf1f76ba3ffc105dfd52" + integrity sha512-uyFBkD9rM3wGve0ZKrr7bEbC0Z/ywi8S/EYL6GwLzGNtogSsVj5HGtSvifKjCBn7KmAvo54skKoVgVEn77dlWQ== dependencies: - "@abp/datatables.net" "~5.1.3" - datatables.net-bs5 "^1.10.25" + "@abp/datatables.net" "~5.3.0-rc.1" + datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.1.3.tgz#713d4cca35450c4dbc565c29652458a111efd1e6" - integrity sha512-AJgbZDUDySMlOhE6aXJptZmXDdl8M48ec+q+w20BT35IJgUS74+HLLvS8bG1u6ubkeJiwTgAtKW9knLu+TQ+MQ== +"@abp/datatables.net@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.3.0-rc.1.tgz#38c0f6323f7e6305a50f7de9885b8a3f440cdf15" + integrity sha512-lecJ9Yelgey/nfSscsUHET0gyB6pZgkhnJXu3u8d9XhV2M5sc/WSnnCO3bgVBqMDImprR4GFPFw2cUlWkb8QBg== dependencies: - "@abp/jquery" "~5.1.3" - datatables.net "^1.10.21" + "@abp/jquery" "~5.3.0-rc.1" + datatables.net "^1.11.4" -"@abp/font-awesome@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.1.3.tgz#f6eeee3522f0499458eb94dea2c9d559739ea5e8" - integrity sha512-mE9y0ME+mOQ4/1svLfwPNsR4Cb+qZRG5zX8FFktZv+h893w10FU0njQwHsbdUfFjcaCtkPVyRoy7/g7QOqHU+g== +"@abp/font-awesome@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.3.0-rc.1.tgz#de14dca2b33fdc098d2325c5047e030a3927bfa9" + integrity sha512-tIuDwo+L5CuLpQ+ARsaTYmxuqpSJLqcaXuoFfk6JAC20bw881t7y8w4xWy1PUs0+SEQwTT7diZjQrcA/xxlMUQ== dependencies: - "@abp/core" "~5.1.3" - "@fortawesome/fontawesome-free" "^5.13.0" + "@abp/core" "~5.3.0-rc.1" + "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.1.3.tgz#074fb4cd28defe81b2fd66c6323ac971adbcb100" - integrity sha512-/BTtDfwciBZHQosQZpLAbVUQcKO6TSaNAd0/AE6fbu1YRDmDOhC0AzK49XGOWU2Tw+82Qtk2UgE7E5J86JOv8Q== +"@abp/jquery-form@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.3.0-rc.1.tgz#0a363d8e4814651e0c46e2109d19dcc84fc884b0" + integrity sha512-IWazO6BW5rHJ+ODk4haEqWzfzHvbxtW2+T1o534Lr7d+LI9yabNiQmRZ24yzNDb6SmRvDUVsumZ+lxPn2WBhIw== dependencies: - "@abp/jquery" "~5.1.3" + "@abp/jquery" "~5.3.0-rc.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.1.3.tgz#c63549acd360da243cd43c79c0738a4d79d14eea" - integrity sha512-C7eTBZ4Vd1lBdli4HkEYVXC1XAsap7+3NIYfxkSkXxnTNqhiyoUHUumn3Bw5jqaLamMMLfqXMUp2OF7wM9LAHg== +"@abp/jquery-validation-unobtrusive@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.3.0-rc.1.tgz#0aa2a5535acd79b5288ef04a0dc1b83a7a57b4b9" + integrity sha512-Qv/+nrd+ZeUs/2mCMahpQFqEguMOcmHrLg7hcw0LgcHr+MmEcG4WDcijTY6suFyekaf0DZD6vsFZjdvZmhsVYQ== dependencies: - "@abp/jquery-validation" "~5.1.3" - jquery-validation-unobtrusive "^3.2.11" + "@abp/jquery-validation" "~5.3.0-rc.1" + jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.1.3.tgz#3423505350e49984be2eba033d662ef5c5fc0c24" - integrity sha512-tk7koJhsBq/t7UJFObf5HjOp/Y8oQC7Fc+QLhnLd5JD29YT9SnFXnk4KA48mWxGLf6eT/jZBYJhzHE8TJUce/w== +"@abp/jquery-validation@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.3.0-rc.1.tgz#d05afbe0209c0815afe3a7cb0cf811256e9905fc" + integrity sha512-3DoRX6c8duRx1/g7MFuPAO/qesJCFqbVbw+x0+QnKmCkVZmz5VFAqdO9yFMxDFRbBAtyp7faaarc0lOtAcBsoA== dependencies: - "@abp/jquery" "~5.1.3" - jquery-validation "^1.19.2" + "@abp/jquery" "~5.3.0-rc.1" + jquery-validation "^1.19.3" -"@abp/jquery@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.1.3.tgz#a5d10d99cddadb65b6a8cebfffcb1cf48fb2e8b1" - integrity sha512-KpELd1OXMYIbBwCDXJnndAcHI0HB0o+D0xcpUwM9teAIwtKtD0BY3A5nplgGVktG95W9LnyKgarSgy+VBy75ZA== +"@abp/jquery@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.3.0-rc.1.tgz#26e5d5761f2629d02b2534ad964080221d536308" + integrity sha512-//bqInarV6XOs8+I5GW1q/c05sjnCq/Z0vuzFW1i1NDrQ2Q5kqF5leMV9hhGEZmfR+yG1T0MsbVvueieRkV/cA== dependencies: - "@abp/core" "~5.1.3" + "@abp/core" "~5.3.0-rc.1" jquery "~3.6.0" -"@abp/lodash@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.1.3.tgz#7669a3f25aa32d5094eed429253bff6728664c89" - integrity sha512-ESoDaMXiDgpgmUIX5HIGs4t6QAkyth6YwuKUVJnOLImb8rhv3CBfCNESFO/Z47fil7CrRLDCmjBDBCYk2yhx3A== +"@abp/lodash@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.3.0-rc.1.tgz#c53304fbd9b1c885a9a812c681c3698dd8ecea47" + integrity sha512-yBvUB05z/SSEEbZ79nFfb0cKwWVFbrt9OtUkQHy9ER7ip0R9escG2n1djFtAA33yZr/NLzSUh+vVBYsEhk8MOA== dependencies: - "@abp/core" "~5.1.3" - lodash "^4.17.15" + "@abp/core" "~5.3.0-rc.1" + lodash "^4.17.21" -"@abp/luxon@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.1.3.tgz#886d2e276d10d4b803e40baeb90d8447501a1db4" - integrity sha512-hO17EGrgYU6s5ou92SbsORg5gjxjGqw4l+7SPc2d9KNtO1C1PPBRYDxoGDIlIUC+k0IQZnZVzMN6OSUnR6qDTQ== +"@abp/luxon@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.3.0-rc.1.tgz#bcb4de01b20a8e4da8db186e88fdebfcde47fb8f" + integrity sha512-SLozcDvCL/2jyvG2ZU+DHjzbfHYdmwiRjWu7gWyNjaY2e6D3NraHHjpMQ7ubObXZRlhhvfcp0i6eeKKoZNJtEQ== dependencies: - "@abp/core" "~5.1.3" - luxon "^1.24.1" + "@abp/core" "~5.3.0-rc.1" + luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.1.3.tgz#6e9673c5ce79a959cebd5fa32fb5b17fe941c029" - integrity sha512-2L9eOp6tJaKBG7kvcq52SUkbYfqZOqZlCfwQ5mwlQHr5LkLBAjJen0mPiEW6HJwY9QjZixkIY/RWxUrmGC3JxQ== +"@abp/malihu-custom-scrollbar-plugin@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.3.0-rc.1.tgz#398181c7c6cc1805544e7a1ccd0423ed96005e0b" + integrity sha512-KZar881wtotKc+1bqDlBWo2vLUEeeqEpMBg8+BiXsGofp5ovudifVPM6mHZ9Gi29U9LAMyI0VEGwLJctgB/UoA== dependencies: - "@abp/core" "~5.1.3" + "@abp/core" "~5.3.0-rc.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.1.3.tgz#9e2d59d57d07cf5e52e09678731968c599cc1d05" - integrity sha512-rqQCUvWGeLf6kT3/mzJ9o3qIEFggR5W+pzol1f2HcZpDoRVbEskjFhj/rvK0X3O6Jul7310sqvXIsky/TxajXA== +"@abp/select2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.3.0-rc.1.tgz#b2ce00b6545674d6bccc10fdfe4626a4598a0cdc" + integrity sha512-frE5jia7bBdZinW4LqD5JR+wknWu2ARX3L3pPiQ080ulB+P58gRj07ZPd1BWgRcvutnuANYyP9rZtDA18Ls+9Q== dependencies: - "@abp/core" "~5.1.3" + "@abp/core" "~5.3.0-rc.1" select2 "^4.0.13" -"@abp/sweetalert2@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.1.3.tgz#1aafa77c8c3e9fddaee4517dd3e8ecae62add54c" - integrity sha512-C3hwoML8usvGFdzJto9ntmtLrljuuyltQVE4BRTNoHU3XNVku0qLPRx6NO36gW0F8Ny8FgN+IXQbiAaaCY1EfA== +"@abp/sweetalert2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.3.0-rc.1.tgz#6eb10b257e7f256da64ff6fe248a370671a26920" + integrity sha512-g9nddGcDGaG6EmjX7qpRcLzy3F38BTtFc0RBWApH7Da1o/LMYFYa6xGfS7ouIynZBM9j/BRP12CVTR+Y9qqbGg== dependencies: - "@abp/core" "~5.1.3" - sweetalert2 "^11.0.18" + "@abp/core" "~5.3.0-rc.1" + sweetalert2 "^11.3.6" -"@abp/timeago@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.1.3.tgz#c76cef521252cff3206e170f627b9e06883f9eca" - integrity sha512-JxJnxJ382o0WkAs5c/HcC6/ny9oj2RG68e0YDnJz0gry0K+E20Uh2s/Tl6/qsCB8nj3e/H6QlXe8A5gtgfCpjQ== +"@abp/timeago@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.3.0-rc.1.tgz#2702a0f22db52dbf4c0717e4abcd317c56d10563" + integrity sha512-XRc4D98FIZR0YTXIoV0+OxVJTdixtNDiwatZRffopHT4Kpptmpj6O9KMcB4SngCH99/TrUFdEUnA2CgszxiEOA== dependencies: - "@abp/jquery" "~5.1.3" + "@abp/jquery" "~5.3.0-rc.1" timeago "^1.6.7" -"@abp/toastr@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.1.3.tgz#57039df87b4ad0c06af1ddcf2f3ef798ba91d492" - integrity sha512-xHme2UnPZStHD8WtLeI0k62a7IGiu1syJA9KvAo8NYmOAXlGOVq7/9Ksdd/gRU7LmQX+5hF16LROMhgj4mowww== +"@abp/toastr@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.3.0-rc.1.tgz#ec3a3d302ac91d5393c3caeb8b4884ad811b6edb" + integrity sha512-InZweYuBkrNZNBQKp6A+6gxGdO/lB0XsrXaa+CIVe55p8aNJPzE0mnvSfKWhN5G273wR08AD9RjR22kYS+bgFA== dependencies: - "@abp/jquery" "~5.1.3" + "@abp/jquery" "~5.3.0-rc.1" toastr "^2.1.4" -"@abp/utils@~5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.1.3.tgz#90442c18e516d251af58f87454729773532258ed" - integrity sha512-vzf2uH1JQbBWpJSpgs0XkUAJMjpH/dK9n9hQEj8fmUBpw3w9942jhl3uYDbF3V6PduD5k91vMhlt1Z42ObT/gQ== +"@abp/utils@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.3.0-rc.1.tgz#3fa758944e7325e7b3f528141e03bb71f8e04d24" + integrity sha512-/8BTYZomNMdy+RpYXWLp5dg0lRhmfiguciZEVWo4qRw1lCXm/JR+0842XT1XYE1dQ4orNNJ3/H86eRX8Ab6Yfg== dependencies: just-compare "^1.3.0" -"@fortawesome/fontawesome-free@^5.13.0": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz#c53b4066edae16cd1fd669f687baf031b45fb9d6" - integrity sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw== +"@fortawesome/fontawesome-free@^5.15.4": + version "5.15.4" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" + integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== abbrev@1: version "1.1.1" @@ -391,12 +390,7 @@ bootstrap-datepicker@^1.9.0: dependencies: jquery ">=1.7.1 <4.0.0" -bootstrap-v4-rtl@4.6.0-1: - version "4.6.0-1" - resolved "https://registry.yarnpkg.com/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.6.0-1.tgz#8fc502e800308fb725151128dd288df1c027cd8e" - integrity sha512-ChcbO5JeEQx6/Yz40YZLq3A4RIWcCmCCiRpweF5wg32/Q8CfWrwDNpcDTJ2SU+aSAewUJoCSzf/tRxhAgnZuog== - -bootstrap@^5.1.0: +bootstrap@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34" integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q== @@ -603,25 +597,18 @@ d@1: dependencies: es5-ext "^0.10.9" -datatables.net-bs5@^1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.11.3.tgz#939d0e66fbf518718a519534a88fc88cd29405b0" - integrity sha512-u0tosKUR1XNpXzxOOt2NInnNYayt7GQoG+OM1xPRhdkZ7ZBD4oNF8S0aKve8yvSUq/ZwTMh4WJeh80GdmrJAdQ== +datatables.net-bs5@^1.11.4: + version "1.12.0" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.12.0.tgz#8cef5579c096c5216afa423af0261acba62b4476" + integrity sha512-8SR3gI2DtcrcFy03vu9MkGtIA61UfE725HvSujOOt+M4v+n0Wf9bsIbvUe2sGDlB4gVQreB0YHNSNamc3053tQ== dependencies: - datatables.net ">=1.10.25" + datatables.net ">=1.11.3" jquery ">=1.7" -datatables.net@>=1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.3.tgz#80e691036efcd62467558ee64c07dd566cb761b4" - integrity sha512-VMj5qEaTebpNurySkM6jy6sGpl+s6onPK8xJhYr296R/vUBnz1+id16NVqNf9z5aR076OGcpGHCuiTuy4E05oQ== - dependencies: - jquery ">=1.7" - -datatables.net@^1.10.21: - version "1.10.21" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.21.tgz#f1d35c8e5c3eb7f5caef39e80cd5b836a8c77103" - integrity sha512-/bSZtxmf3GTpYcvEmwZ8q26I1yhSx8qklR2B+s1K8+/51UW/zc2zTYwJMqr/Z+iCYixAc00ildj4g2x0Qamolw== +datatables.net@>=1.11.3, datatables.net@^1.11.4: + version "1.11.5" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.5.tgz#858a69953a01e1d5b18786769802117b04b8e3c9" + integrity sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA== dependencies: jquery ">=1.7" @@ -1375,12 +1362,12 @@ jquery-mousewheel@>=3.0.6: version "3.1.13" resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" -jquery-validation-unobtrusive@^3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.11.tgz#175ee46380385a0e33ed320f255fad321f68f9f5" - integrity sha512-3FQPllaWdD+Aq55zJLGSW39+eXPDz1HhwAvrSwYi8zHQ8DVcu5IJ1HVeTiCl0BnCnrIBvfFU3zEB/DrGdcoRIQ== +jquery-validation-unobtrusive@^3.2.12: + version "3.2.12" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz#1d52841f653e516525c251e494b042e664dad8af" + integrity sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ== dependencies: - jquery ">=1.8" + jquery "^3.5.1" jquery-validation ">=1.16" jquery-validation@>=1.16: @@ -1389,12 +1376,12 @@ jquery-validation@>=1.16: dependencies: jquery "^1.7 || ^2.0 || ^3.1" -jquery-validation@^1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.2.tgz#c602831b0d8c5881400af424e872757ce241eff9" - integrity sha512-yHaAqOGaAB7+p2u5lpzhhQVt3CBMUw3fHcuCJ7nXmXz0LWLHPN7yOhwnocp5nrn2SmnXR1jpV+whx2j1kLz1tQ== +jquery-validation@^1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.3.tgz#50b350eba8b02bcfd119ba15f199487b7eb64086" + integrity sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw== -jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1": +jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, "jquery@^1.7 || ^2.0 || ^3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" @@ -1403,7 +1390,7 @@ jquery@>=1.12.0, jquery@>=1.7, jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2. resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== -jquery@~3.6.0: +jquery@^3.5.1, jquery@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -1497,15 +1484,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -luxon@^1.24.1: - version "1.24.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.24.1.tgz#a8383266131ed4eaed4b5f430f96f3695403a52a" - integrity sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg== +luxon@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.4.0.tgz#9435806545bb32d4234dab766ab8a3d54847a765" + integrity sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA== make-iterator@^1.0.0: version "1.0.1" @@ -2356,10 +2343,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert2@^11.0.18: - version "11.3.3" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.3.3.tgz#92ca0408380de8f29180788ce7ed5d5faf799cea" - integrity sha512-10Keqbmjng/+XpkpSOQ6dttpztl7XNohjnpC6bX6XFgm0WpRXM81YE0wmonGYOP6uyzd76vpfnZS04PdVvO31Q== +sweetalert2@^11.3.6: + version "11.4.14" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.4.14.tgz#b7c7efbf6672aa56696ba68d7ac141798b961525" + integrity sha512-Dh4XqfUSpCwhRsGM5zZFbtBRHujjcaf98DjVKXEs0ER4E/Zao0OtDHZRRQqvT9xxY7RA8WsiZ6FHJbyW+BBbDw== tar@^4: version "4.4.10" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index 6e77565af6..f531fff53b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.1.tgz#884a4bc9ea043654891be56cd7e7c7bbf9bbad8c" - integrity sha512-JGTQyg3Zyfda84yg/Geq6rGuBN2SX4gIOaFL2h8BX9bA8CVuBC+zcwfO1bBsP89xfTyPvdSAGBvSfhCjPwsukQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.1.tgz#77a4900424603e0be048f3507aa852701f3139a2" - integrity sha512-mn9HEOHBkmBr7d/VUt0bfg9K58IyRDb7j3ZiDoHo263WLXJkf0+C7MEbv/zxfDHW4NeztsNCd3ugA7PdTxPzmA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.0.1" - "@abp/bootstrap" "~5.0.1" - "@abp/bootstrap-datepicker" "~5.0.1" - "@abp/datatables.net-bs5" "~5.0.1" - "@abp/font-awesome" "~5.0.1" - "@abp/jquery-form" "~5.0.1" - "@abp/jquery-validation-unobtrusive" "~5.0.1" - "@abp/lodash" "~5.0.1" - "@abp/luxon" "~5.0.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.0.1" - "@abp/select2" "~5.0.1" - "@abp/sweetalert2" "~5.0.1" - "@abp/timeago" "~5.0.1" - "@abp/toastr" "~5.0.1" - -"@abp/aspnetcore.mvc.ui@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.1.tgz#f5aa4e0dcc10878f590e30836887f3f9861e91e3" - integrity sha512-bN15UcNhTqeo0RXlIYws7Jd8ZfSBsVM6Y5wiAqbq1Q3Lvs1uLmryhZpn6sHmKw2Z3Lnhec7VjnZN0FwNpzEqUw== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.3.0-rc.1.tgz#dc27eb79ba7353eb6b16e4a2f50d17c3cfc9157d" + integrity sha512-TEbz/ISsGhfTec66XSeivQjCOCpTidufdpZmj8JRyrbQvhXOYohJs3ImrGJOIxUwo6nuzagGpotqXryjIF+jrg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.3.0-rc.1.tgz#ed993befe99682baee55ea8771f983980ba8f93f" + integrity sha512-kL4CXe0YoZ4wJ4XvutqLPkv4fMuFeRJFzdix6lx4dPAArnPu69n3P4qFhokPkcoGpB2KTRqyn9fHQs8g2FCGQw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.3.0-rc.1" + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/bootstrap-datepicker" "~5.3.0-rc.1" + "@abp/datatables.net-bs5" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + "@abp/jquery-form" "~5.3.0-rc.1" + "@abp/jquery-validation-unobtrusive" "~5.3.0-rc.1" + "@abp/lodash" "~5.3.0-rc.1" + "@abp/luxon" "~5.3.0-rc.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.3.0-rc.1" + "@abp/select2" "~5.3.0-rc.1" + "@abp/sweetalert2" "~5.3.0-rc.1" + "@abp/timeago" "~5.3.0-rc.1" + "@abp/toastr" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.3.0-rc.1.tgz#5205d3a5ea500ff3b8d525dcc11a2ce4cfccdfd3" + integrity sha512-mIefq3QSVtP7heNl0ocHiSKLU+DwN5/TDvvPj2L3IZkCzuOrDxoBUIBIciea4k10HIQzqo6gmm1YOw0CEfzNHg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,152 +41,151 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.1.tgz#52116a154e343d84c87257ad1ef10b54012f4c33" - integrity sha512-ZJWaZKzGzshBAfyBqaUScfWqeBVfWGbZIwIplF8VKtDGcyI8R54bqDsydhS88CCnolRz4+tfq3QY6yAXrUEKAw== +"@abp/bootstrap-datepicker@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.3.0-rc.1.tgz#1a5a29d7f9904e8d99c7085bc4545ad2665195cb" + integrity sha512-Y5QLLNd2UpbzbWSh+5nKdpAdz2i3V8+feTHTpAxnPgYRabPGqAFiOrty8KZ1MJEgjQFWC1ypGHYII7GWVyIS6Q== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.1.tgz#d542a8fd7151e22eda1643e313a67f9892c50533" - integrity sha512-wyVAp6a4OIwlqK7AZozs7wpsBZgzG55EKeChBBfUXloJPuirQHxccFNE41aAYWfKur+wj25WD5NBnzFuKyNYiQ== +"@abp/bootstrap@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.3.0-rc.1.tgz#977d579f59e18b1eb2c9b43612d525a859a575a4" + integrity sha512-dpY0bPHdhUI5yL23+EsR6w/KjoPyehaEgHLLKQDERdubX1Zk/SDWrhrYXnXxtJ0fvxG2aRVOEBMULmHD3m/PoA== dependencies: - "@abp/core" "~5.0.1" - bootstrap "^5.1.0" - bootstrap-v4-rtl "4.6.0-1" + "@abp/core" "~5.3.0-rc.1" + bootstrap "^5.1.3" -"@abp/core@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.1.tgz#904fa2c22bcbf42deb56abf772c3a53362807a2f" - integrity sha512-QzX35Oa+Vncu2OP1tXvGjAVFznmD1tZRn4tlDQgn36B2MU06UEO0JSx7JVedPvhzQZceUe5+WWMfuYNM2xeBTw== +"@abp/core@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.3.0-rc.1.tgz#4ede309ccfab440deb66fecb091273027483676a" + integrity sha512-cTw9xaWMkRDQjXRtkB5zx4Za0CPx7yvCRnTngIJs7xO86lRMVnuiwVGjP66vYTmiiu2ulGFgCeuw1AaK5t+g4Q== dependencies: - "@abp/utils" "~5.0.1" + "@abp/utils" "~5.3.0-rc.1" -"@abp/datatables.net-bs5@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.0.1.tgz#b8afa2255e374c86c50e57bd57c2b36a86d6a890" - integrity sha512-1fuCk+K4xW3XnDFo2+kPXHMoOTol4HLRcWVRELjoBQ5YbTxEPsbrhfNUeUsECDAmkxoqY7G3MEdtIVwmy5NPpg== +"@abp/datatables.net-bs5@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.3.0-rc.1.tgz#ca624d788acdcc547d0bdf1f76ba3ffc105dfd52" + integrity sha512-uyFBkD9rM3wGve0ZKrr7bEbC0Z/ywi8S/EYL6GwLzGNtogSsVj5HGtSvifKjCBn7KmAvo54skKoVgVEn77dlWQ== dependencies: - "@abp/datatables.net" "~5.0.1" - datatables.net-bs5 "^1.10.25" + "@abp/datatables.net" "~5.3.0-rc.1" + datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.1.tgz#0ce5bdf7aa5bf224b93a22758a016c50562d6569" - integrity sha512-x9D2YNtnOJRrKXi2Pwrqzz9sIOrn3o6x2c8ZxjyC54vh+SLQtLycAzQw7OyaZGdbFkudlJiCuME/FiuZvht8Og== +"@abp/datatables.net@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.3.0-rc.1.tgz#38c0f6323f7e6305a50f7de9885b8a3f440cdf15" + integrity sha512-lecJ9Yelgey/nfSscsUHET0gyB6pZgkhnJXu3u8d9XhV2M5sc/WSnnCO3bgVBqMDImprR4GFPFw2cUlWkb8QBg== dependencies: - "@abp/jquery" "~5.0.1" - datatables.net "^1.10.21" + "@abp/jquery" "~5.3.0-rc.1" + datatables.net "^1.11.4" -"@abp/font-awesome@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.1.tgz#661753403499925661f880c53214841dd34f5210" - integrity sha512-C+alReNvHZzST55ITBTyFqhdTehPo5ondzfqc9QlyB3Kwk1DIq0CaLqfS2xU5glYGDSqKi7xfkyQnJdwu2hKRA== +"@abp/font-awesome@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.3.0-rc.1.tgz#de14dca2b33fdc098d2325c5047e030a3927bfa9" + integrity sha512-tIuDwo+L5CuLpQ+ARsaTYmxuqpSJLqcaXuoFfk6JAC20bw881t7y8w4xWy1PUs0+SEQwTT7diZjQrcA/xxlMUQ== dependencies: - "@abp/core" "~5.0.1" - "@fortawesome/fontawesome-free" "^5.13.0" + "@abp/core" "~5.3.0-rc.1" + "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.1.tgz#20fa51946f68a7acd6ef3dd3d8d1349307f681b4" - integrity sha512-Q7GG0+XFXs7pDoa4p3r7vm8+sUh5ohwovedPNVghtX8Rm2I1sfVfJKamPr24PCAyJcFVntU1WCt/CngneES3pw== +"@abp/jquery-form@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.3.0-rc.1.tgz#0a363d8e4814651e0c46e2109d19dcc84fc884b0" + integrity sha512-IWazO6BW5rHJ+ODk4haEqWzfzHvbxtW2+T1o534Lr7d+LI9yabNiQmRZ24yzNDb6SmRvDUVsumZ+lxPn2WBhIw== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.1.tgz#50798d3c087d0b103944b3a9e7c39a1f51db9fdc" - integrity sha512-w5SAYB0EZRbOhIFcCUXWvoGB/dWj3zyQOarbvzJ9LelgrXvvoissaaSSqq6BySjr1UigIWBCVuruAQssizmXBQ== +"@abp/jquery-validation-unobtrusive@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.3.0-rc.1.tgz#0aa2a5535acd79b5288ef04a0dc1b83a7a57b4b9" + integrity sha512-Qv/+nrd+ZeUs/2mCMahpQFqEguMOcmHrLg7hcw0LgcHr+MmEcG4WDcijTY6suFyekaf0DZD6vsFZjdvZmhsVYQ== dependencies: - "@abp/jquery-validation" "~5.0.1" - jquery-validation-unobtrusive "^3.2.11" + "@abp/jquery-validation" "~5.3.0-rc.1" + jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.1.tgz#5932060d1fdf04a81e998caac959188aefdf1669" - integrity sha512-T5p0U2cWh6Jov55AiUxJYRw92L6ubFXfqL0EkaePV5AnoetVXheluhq9gQAKnwVAqtc/3Rxkr/lO047catUkjw== +"@abp/jquery-validation@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.3.0-rc.1.tgz#d05afbe0209c0815afe3a7cb0cf811256e9905fc" + integrity sha512-3DoRX6c8duRx1/g7MFuPAO/qesJCFqbVbw+x0+QnKmCkVZmz5VFAqdO9yFMxDFRbBAtyp7faaarc0lOtAcBsoA== dependencies: - "@abp/jquery" "~5.0.1" - jquery-validation "^1.19.2" + "@abp/jquery" "~5.3.0-rc.1" + jquery-validation "^1.19.3" -"@abp/jquery@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.1.tgz#1522ba1e0c488bffdc30a230ab35e225ae32d028" - integrity sha512-AacK4cy/RpzBfRYf7Jjn+TmVm72TW0jEjRoQ3TOXmlOrunRph05mQm72Ux2o8+Z1lOwxJKRz5gKSbRTfa6Tgpw== +"@abp/jquery@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.3.0-rc.1.tgz#26e5d5761f2629d02b2534ad964080221d536308" + integrity sha512-//bqInarV6XOs8+I5GW1q/c05sjnCq/Z0vuzFW1i1NDrQ2Q5kqF5leMV9hhGEZmfR+yG1T0MsbVvueieRkV/cA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" jquery "~3.6.0" -"@abp/lodash@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.1.tgz#ad22895772ce65e52941dddb84d0a7d26c521d59" - integrity sha512-r1QqZCXfDd0YQnE4MkcY291H5jWFdZtGeYmwjIkn7aeOZ0PP9qsDPkWTwPwbpfmnz4DhmIdO5a1rveWz/J5ZwQ== +"@abp/lodash@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.3.0-rc.1.tgz#c53304fbd9b1c885a9a812c681c3698dd8ecea47" + integrity sha512-yBvUB05z/SSEEbZ79nFfb0cKwWVFbrt9OtUkQHy9ER7ip0R9escG2n1djFtAA33yZr/NLzSUh+vVBYsEhk8MOA== dependencies: - "@abp/core" "~5.0.1" - lodash "^4.17.15" + "@abp/core" "~5.3.0-rc.1" + lodash "^4.17.21" -"@abp/luxon@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.1.tgz#7930e30db60e63b486a51030c60e09b54bcb3867" - integrity sha512-cXbnyAI9Gn2bZBQuCN46UFOkzb+djA3LMgpeMlTTv0aA87PrjzT60EPQ4a9FLovESqNnblaQ9Je43QwoGH8kZA== +"@abp/luxon@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.3.0-rc.1.tgz#bcb4de01b20a8e4da8db186e88fdebfcde47fb8f" + integrity sha512-SLozcDvCL/2jyvG2ZU+DHjzbfHYdmwiRjWu7gWyNjaY2e6D3NraHHjpMQ7ubObXZRlhhvfcp0i6eeKKoZNJtEQ== dependencies: - "@abp/core" "~5.0.1" - luxon "^1.24.1" + "@abp/core" "~5.3.0-rc.1" + luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.1.tgz#268ec30eef8ba72a0c8cb997e55d48a1508b2719" - integrity sha512-mqF6OizoWp6kg5pztNfF78+mbfyX3JAXDfv+ZUCvjtAqllIzyOUIqRSXULDkAcDeCC1+PluRsd+uSltIppC5hA== +"@abp/malihu-custom-scrollbar-plugin@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.3.0-rc.1.tgz#398181c7c6cc1805544e7a1ccd0423ed96005e0b" + integrity sha512-KZar881wtotKc+1bqDlBWo2vLUEeeqEpMBg8+BiXsGofp5ovudifVPM6mHZ9Gi29U9LAMyI0VEGwLJctgB/UoA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.1.tgz#644c46c7c942a6b9d36bc76c7132f32ad577933b" - integrity sha512-FHVqEebQS3XiYn5TMEhGaQJOAYnPqxivKpeOB0F0F2bEDGqt3OXh05KcQBOm+sDSScq3c7T7HLr9mMzlYtyHXw== +"@abp/select2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.3.0-rc.1.tgz#b2ce00b6545674d6bccc10fdfe4626a4598a0cdc" + integrity sha512-frE5jia7bBdZinW4LqD5JR+wknWu2ARX3L3pPiQ080ulB+P58gRj07ZPd1BWgRcvutnuANYyP9rZtDA18Ls+9Q== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" select2 "^4.0.13" -"@abp/sweetalert2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.1.tgz#acf2acfc04619c7907237238bfaeb63f2d75fb22" - integrity sha512-CPqXIaHK7Ff6i8gNhxoZ9r3te9LIEiDCUpdHNtgRVMCaLbywfkiLyirlfRIB6lxRWSw8BZ+M/azdp5uzidW8Vw== +"@abp/sweetalert2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.3.0-rc.1.tgz#6eb10b257e7f256da64ff6fe248a370671a26920" + integrity sha512-g9nddGcDGaG6EmjX7qpRcLzy3F38BTtFc0RBWApH7Da1o/LMYFYa6xGfS7ouIynZBM9j/BRP12CVTR+Y9qqbGg== dependencies: - "@abp/core" "~5.0.1" - sweetalert2 "^11.0.18" + "@abp/core" "~5.3.0-rc.1" + sweetalert2 "^11.3.6" -"@abp/timeago@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.1.tgz#09ca6302304de09baa5ac8c72b950515ab0d0451" - integrity sha512-6onXho8R6eiWfncONZFBn18OwgQPKIaRM73rVevpRGJTf2pylcHtCp4uHGsoqgCc+TQU7FyoKTTkg4lfvCQa0A== +"@abp/timeago@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.3.0-rc.1.tgz#2702a0f22db52dbf4c0717e4abcd317c56d10563" + integrity sha512-XRc4D98FIZR0YTXIoV0+OxVJTdixtNDiwatZRffopHT4Kpptmpj6O9KMcB4SngCH99/TrUFdEUnA2CgszxiEOA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" timeago "^1.6.7" -"@abp/toastr@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.1.tgz#a3959df1de0c4640fabf508da9ccd3ed37ae2b03" - integrity sha512-ndL1uj2ce4PbGDzxh+QCIWYu+GAmW1Xwma4aJcq5zKo+xhlLJJnTe6QFGKr7wSsTVZMB7z1Pp2olvXH6an82+g== +"@abp/toastr@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.3.0-rc.1.tgz#ec3a3d302ac91d5393c3caeb8b4884ad811b6edb" + integrity sha512-InZweYuBkrNZNBQKp6A+6gxGdO/lB0XsrXaa+CIVe55p8aNJPzE0mnvSfKWhN5G273wR08AD9RjR22kYS+bgFA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" toastr "^2.1.4" -"@abp/utils@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.1.tgz#57934383004a21172bf7e08130813c08946894fb" - integrity sha512-WLCWe7iJ8krxsz8Z7E+8GDaGZuG/6PZDdqPcMIh95opi0kvcLxb+mjPXXpiXdtFzW7O09a+NaNOxorsEFxjoKw== +"@abp/utils@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.3.0-rc.1.tgz#3fa758944e7325e7b3f528141e03bb71f8e04d24" + integrity sha512-/8BTYZomNMdy+RpYXWLp5dg0lRhmfiguciZEVWo4qRw1lCXm/JR+0842XT1XYE1dQ4orNNJ3/H86eRX8Ab6Yfg== dependencies: just-compare "^1.3.0" -"@fortawesome/fontawesome-free@^5.13.0": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz#c53b4066edae16cd1fd669f687baf031b45fb9d6" - integrity sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw== +"@fortawesome/fontawesome-free@^5.15.4": + version "5.15.4" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" + integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== abbrev@1: version "1.1.1" @@ -405,12 +404,7 @@ bootstrap-datepicker@^1.9.0: dependencies: jquery ">=1.7.1 <4.0.0" -bootstrap-v4-rtl@4.6.0-1: - version "4.6.0-1" - resolved "https://registry.yarnpkg.com/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.6.0-1.tgz#8fc502e800308fb725151128dd288df1c027cd8e" - integrity sha512-ChcbO5JeEQx6/Yz40YZLq3A4RIWcCmCCiRpweF5wg32/Q8CfWrwDNpcDTJ2SU+aSAewUJoCSzf/tRxhAgnZuog== - -bootstrap@^5.1.0: +bootstrap@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34" integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q== @@ -627,25 +621,18 @@ d@1: dependencies: es5-ext "^0.10.9" -datatables.net-bs5@^1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.11.3.tgz#939d0e66fbf518718a519534a88fc88cd29405b0" - integrity sha512-u0tosKUR1XNpXzxOOt2NInnNYayt7GQoG+OM1xPRhdkZ7ZBD4oNF8S0aKve8yvSUq/ZwTMh4WJeh80GdmrJAdQ== +datatables.net-bs5@^1.11.4: + version "1.12.0" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.12.0.tgz#8cef5579c096c5216afa423af0261acba62b4476" + integrity sha512-8SR3gI2DtcrcFy03vu9MkGtIA61UfE725HvSujOOt+M4v+n0Wf9bsIbvUe2sGDlB4gVQreB0YHNSNamc3053tQ== dependencies: - datatables.net ">=1.10.25" + datatables.net ">=1.11.3" jquery ">=1.7" -datatables.net@>=1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.3.tgz#80e691036efcd62467558ee64c07dd566cb761b4" - integrity sha512-VMj5qEaTebpNurySkM6jy6sGpl+s6onPK8xJhYr296R/vUBnz1+id16NVqNf9z5aR076OGcpGHCuiTuy4E05oQ== - dependencies: - jquery ">=1.7" - -datatables.net@^1.10.21: - version "1.10.21" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.21.tgz#f1d35c8e5c3eb7f5caef39e80cd5b836a8c77103" - integrity sha512-/bSZtxmf3GTpYcvEmwZ8q26I1yhSx8qklR2B+s1K8+/51UW/zc2zTYwJMqr/Z+iCYixAc00ildj4g2x0Qamolw== +datatables.net@>=1.11.3, datatables.net@^1.11.4: + version "1.11.5" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.5.tgz#858a69953a01e1d5b18786769802117b04b8e3c9" + integrity sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA== dependencies: jquery ">=1.7" @@ -1450,12 +1437,12 @@ jquery-mousewheel@>=3.0.6: resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" integrity sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU= -jquery-validation-unobtrusive@^3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.11.tgz#175ee46380385a0e33ed320f255fad321f68f9f5" - integrity sha512-3FQPllaWdD+Aq55zJLGSW39+eXPDz1HhwAvrSwYi8zHQ8DVcu5IJ1HVeTiCl0BnCnrIBvfFU3zEB/DrGdcoRIQ== +jquery-validation-unobtrusive@^3.2.12: + version "3.2.12" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz#1d52841f653e516525c251e494b042e664dad8af" + integrity sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ== dependencies: - jquery ">=1.8" + jquery "^3.5.1" jquery-validation ">=1.16" jquery-validation@>=1.16: @@ -1465,17 +1452,17 @@ jquery-validation@>=1.16: dependencies: jquery "^1.7 || ^2.0 || ^3.1" -jquery-validation@^1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.2.tgz#c602831b0d8c5881400af424e872757ce241eff9" - integrity sha512-yHaAqOGaAB7+p2u5lpzhhQVt3CBMUw3fHcuCJ7nXmXz0LWLHPN7yOhwnocp5nrn2SmnXR1jpV+whx2j1kLz1tQ== +jquery-validation@^1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.3.tgz#50b350eba8b02bcfd119ba15f199487b7eb64086" + integrity sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw== -jquery@>=1.12.0, "jquery@>=1.5.0 <4.0", jquery@>=1.7, "jquery@>=1.7.1 <4.0.0", jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1": +jquery@>=1.12.0, "jquery@>=1.5.0 <4.0", jquery@>=1.7, "jquery@>=1.7.1 <4.0.0", jquery@>=1.7.2, "jquery@^1.7 || ^2.0 || ^3.1": version "3.4.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== -jquery@~3.6.0: +jquery@^3.5.1, jquery@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -1573,15 +1560,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -luxon@^1.24.1: - version "1.24.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.24.1.tgz#a8383266131ed4eaed4b5f430f96f3695403a52a" - integrity sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg== +luxon@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.4.0.tgz#9435806545bb32d4234dab766ab8a3d54847a765" + integrity sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA== make-iterator@^1.0.0: version "1.0.1" @@ -2464,10 +2451,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert2@^11.0.18: - version "11.3.3" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.3.3.tgz#92ca0408380de8f29180788ce7ed5d5faf799cea" - integrity sha512-10Keqbmjng/+XpkpSOQ6dttpztl7XNohjnpC6bX6XFgm0WpRXM81YE0wmonGYOP6uyzd76vpfnZS04PdVvO31Q== +sweetalert2@^11.3.6: + version "11.4.14" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.4.14.tgz#b7c7efbf6672aa56696ba68d7ac141798b961525" + integrity sha512-Dh4XqfUSpCwhRsGM5zZFbtBRHujjcaf98DjVKXEs0ER4E/Zao0OtDHZRRQqvT9xxY7RA8WsiZ6FHJbyW+BBbDw== tar@^4: version "4.4.10" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index 6e77565af6..f531fff53b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.1.tgz#884a4bc9ea043654891be56cd7e7c7bbf9bbad8c" - integrity sha512-JGTQyg3Zyfda84yg/Geq6rGuBN2SX4gIOaFL2h8BX9bA8CVuBC+zcwfO1bBsP89xfTyPvdSAGBvSfhCjPwsukQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.1.tgz#77a4900424603e0be048f3507aa852701f3139a2" - integrity sha512-mn9HEOHBkmBr7d/VUt0bfg9K58IyRDb7j3ZiDoHo263WLXJkf0+C7MEbv/zxfDHW4NeztsNCd3ugA7PdTxPzmA== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.0.1" - "@abp/bootstrap" "~5.0.1" - "@abp/bootstrap-datepicker" "~5.0.1" - "@abp/datatables.net-bs5" "~5.0.1" - "@abp/font-awesome" "~5.0.1" - "@abp/jquery-form" "~5.0.1" - "@abp/jquery-validation-unobtrusive" "~5.0.1" - "@abp/lodash" "~5.0.1" - "@abp/luxon" "~5.0.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.0.1" - "@abp/select2" "~5.0.1" - "@abp/sweetalert2" "~5.0.1" - "@abp/timeago" "~5.0.1" - "@abp/toastr" "~5.0.1" - -"@abp/aspnetcore.mvc.ui@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.1.tgz#f5aa4e0dcc10878f590e30836887f3f9861e91e3" - integrity sha512-bN15UcNhTqeo0RXlIYws7Jd8ZfSBsVM6Y5wiAqbq1Q3Lvs1uLmryhZpn6sHmKw2Z3Lnhec7VjnZN0FwNpzEqUw== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.3.0-rc.1.tgz#dc27eb79ba7353eb6b16e4a2f50d17c3cfc9157d" + integrity sha512-TEbz/ISsGhfTec66XSeivQjCOCpTidufdpZmj8JRyrbQvhXOYohJs3ImrGJOIxUwo6nuzagGpotqXryjIF+jrg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.3.0-rc.1.tgz#ed993befe99682baee55ea8771f983980ba8f93f" + integrity sha512-kL4CXe0YoZ4wJ4XvutqLPkv4fMuFeRJFzdix6lx4dPAArnPu69n3P4qFhokPkcoGpB2KTRqyn9fHQs8g2FCGQw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.3.0-rc.1" + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/bootstrap-datepicker" "~5.3.0-rc.1" + "@abp/datatables.net-bs5" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + "@abp/jquery-form" "~5.3.0-rc.1" + "@abp/jquery-validation-unobtrusive" "~5.3.0-rc.1" + "@abp/lodash" "~5.3.0-rc.1" + "@abp/luxon" "~5.3.0-rc.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.3.0-rc.1" + "@abp/select2" "~5.3.0-rc.1" + "@abp/sweetalert2" "~5.3.0-rc.1" + "@abp/timeago" "~5.3.0-rc.1" + "@abp/toastr" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.3.0-rc.1.tgz#5205d3a5ea500ff3b8d525dcc11a2ce4cfccdfd3" + integrity sha512-mIefq3QSVtP7heNl0ocHiSKLU+DwN5/TDvvPj2L3IZkCzuOrDxoBUIBIciea4k10HIQzqo6gmm1YOw0CEfzNHg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,152 +41,151 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.1.tgz#52116a154e343d84c87257ad1ef10b54012f4c33" - integrity sha512-ZJWaZKzGzshBAfyBqaUScfWqeBVfWGbZIwIplF8VKtDGcyI8R54bqDsydhS88CCnolRz4+tfq3QY6yAXrUEKAw== +"@abp/bootstrap-datepicker@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.3.0-rc.1.tgz#1a5a29d7f9904e8d99c7085bc4545ad2665195cb" + integrity sha512-Y5QLLNd2UpbzbWSh+5nKdpAdz2i3V8+feTHTpAxnPgYRabPGqAFiOrty8KZ1MJEgjQFWC1ypGHYII7GWVyIS6Q== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.1.tgz#d542a8fd7151e22eda1643e313a67f9892c50533" - integrity sha512-wyVAp6a4OIwlqK7AZozs7wpsBZgzG55EKeChBBfUXloJPuirQHxccFNE41aAYWfKur+wj25WD5NBnzFuKyNYiQ== +"@abp/bootstrap@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.3.0-rc.1.tgz#977d579f59e18b1eb2c9b43612d525a859a575a4" + integrity sha512-dpY0bPHdhUI5yL23+EsR6w/KjoPyehaEgHLLKQDERdubX1Zk/SDWrhrYXnXxtJ0fvxG2aRVOEBMULmHD3m/PoA== dependencies: - "@abp/core" "~5.0.1" - bootstrap "^5.1.0" - bootstrap-v4-rtl "4.6.0-1" + "@abp/core" "~5.3.0-rc.1" + bootstrap "^5.1.3" -"@abp/core@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.1.tgz#904fa2c22bcbf42deb56abf772c3a53362807a2f" - integrity sha512-QzX35Oa+Vncu2OP1tXvGjAVFznmD1tZRn4tlDQgn36B2MU06UEO0JSx7JVedPvhzQZceUe5+WWMfuYNM2xeBTw== +"@abp/core@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.3.0-rc.1.tgz#4ede309ccfab440deb66fecb091273027483676a" + integrity sha512-cTw9xaWMkRDQjXRtkB5zx4Za0CPx7yvCRnTngIJs7xO86lRMVnuiwVGjP66vYTmiiu2ulGFgCeuw1AaK5t+g4Q== dependencies: - "@abp/utils" "~5.0.1" + "@abp/utils" "~5.3.0-rc.1" -"@abp/datatables.net-bs5@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.0.1.tgz#b8afa2255e374c86c50e57bd57c2b36a86d6a890" - integrity sha512-1fuCk+K4xW3XnDFo2+kPXHMoOTol4HLRcWVRELjoBQ5YbTxEPsbrhfNUeUsECDAmkxoqY7G3MEdtIVwmy5NPpg== +"@abp/datatables.net-bs5@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.3.0-rc.1.tgz#ca624d788acdcc547d0bdf1f76ba3ffc105dfd52" + integrity sha512-uyFBkD9rM3wGve0ZKrr7bEbC0Z/ywi8S/EYL6GwLzGNtogSsVj5HGtSvifKjCBn7KmAvo54skKoVgVEn77dlWQ== dependencies: - "@abp/datatables.net" "~5.0.1" - datatables.net-bs5 "^1.10.25" + "@abp/datatables.net" "~5.3.0-rc.1" + datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.1.tgz#0ce5bdf7aa5bf224b93a22758a016c50562d6569" - integrity sha512-x9D2YNtnOJRrKXi2Pwrqzz9sIOrn3o6x2c8ZxjyC54vh+SLQtLycAzQw7OyaZGdbFkudlJiCuME/FiuZvht8Og== +"@abp/datatables.net@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.3.0-rc.1.tgz#38c0f6323f7e6305a50f7de9885b8a3f440cdf15" + integrity sha512-lecJ9Yelgey/nfSscsUHET0gyB6pZgkhnJXu3u8d9XhV2M5sc/WSnnCO3bgVBqMDImprR4GFPFw2cUlWkb8QBg== dependencies: - "@abp/jquery" "~5.0.1" - datatables.net "^1.10.21" + "@abp/jquery" "~5.3.0-rc.1" + datatables.net "^1.11.4" -"@abp/font-awesome@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.1.tgz#661753403499925661f880c53214841dd34f5210" - integrity sha512-C+alReNvHZzST55ITBTyFqhdTehPo5ondzfqc9QlyB3Kwk1DIq0CaLqfS2xU5glYGDSqKi7xfkyQnJdwu2hKRA== +"@abp/font-awesome@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.3.0-rc.1.tgz#de14dca2b33fdc098d2325c5047e030a3927bfa9" + integrity sha512-tIuDwo+L5CuLpQ+ARsaTYmxuqpSJLqcaXuoFfk6JAC20bw881t7y8w4xWy1PUs0+SEQwTT7diZjQrcA/xxlMUQ== dependencies: - "@abp/core" "~5.0.1" - "@fortawesome/fontawesome-free" "^5.13.0" + "@abp/core" "~5.3.0-rc.1" + "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.1.tgz#20fa51946f68a7acd6ef3dd3d8d1349307f681b4" - integrity sha512-Q7GG0+XFXs7pDoa4p3r7vm8+sUh5ohwovedPNVghtX8Rm2I1sfVfJKamPr24PCAyJcFVntU1WCt/CngneES3pw== +"@abp/jquery-form@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.3.0-rc.1.tgz#0a363d8e4814651e0c46e2109d19dcc84fc884b0" + integrity sha512-IWazO6BW5rHJ+ODk4haEqWzfzHvbxtW2+T1o534Lr7d+LI9yabNiQmRZ24yzNDb6SmRvDUVsumZ+lxPn2WBhIw== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.1.tgz#50798d3c087d0b103944b3a9e7c39a1f51db9fdc" - integrity sha512-w5SAYB0EZRbOhIFcCUXWvoGB/dWj3zyQOarbvzJ9LelgrXvvoissaaSSqq6BySjr1UigIWBCVuruAQssizmXBQ== +"@abp/jquery-validation-unobtrusive@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.3.0-rc.1.tgz#0aa2a5535acd79b5288ef04a0dc1b83a7a57b4b9" + integrity sha512-Qv/+nrd+ZeUs/2mCMahpQFqEguMOcmHrLg7hcw0LgcHr+MmEcG4WDcijTY6suFyekaf0DZD6vsFZjdvZmhsVYQ== dependencies: - "@abp/jquery-validation" "~5.0.1" - jquery-validation-unobtrusive "^3.2.11" + "@abp/jquery-validation" "~5.3.0-rc.1" + jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.1.tgz#5932060d1fdf04a81e998caac959188aefdf1669" - integrity sha512-T5p0U2cWh6Jov55AiUxJYRw92L6ubFXfqL0EkaePV5AnoetVXheluhq9gQAKnwVAqtc/3Rxkr/lO047catUkjw== +"@abp/jquery-validation@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.3.0-rc.1.tgz#d05afbe0209c0815afe3a7cb0cf811256e9905fc" + integrity sha512-3DoRX6c8duRx1/g7MFuPAO/qesJCFqbVbw+x0+QnKmCkVZmz5VFAqdO9yFMxDFRbBAtyp7faaarc0lOtAcBsoA== dependencies: - "@abp/jquery" "~5.0.1" - jquery-validation "^1.19.2" + "@abp/jquery" "~5.3.0-rc.1" + jquery-validation "^1.19.3" -"@abp/jquery@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.1.tgz#1522ba1e0c488bffdc30a230ab35e225ae32d028" - integrity sha512-AacK4cy/RpzBfRYf7Jjn+TmVm72TW0jEjRoQ3TOXmlOrunRph05mQm72Ux2o8+Z1lOwxJKRz5gKSbRTfa6Tgpw== +"@abp/jquery@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.3.0-rc.1.tgz#26e5d5761f2629d02b2534ad964080221d536308" + integrity sha512-//bqInarV6XOs8+I5GW1q/c05sjnCq/Z0vuzFW1i1NDrQ2Q5kqF5leMV9hhGEZmfR+yG1T0MsbVvueieRkV/cA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" jquery "~3.6.0" -"@abp/lodash@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.1.tgz#ad22895772ce65e52941dddb84d0a7d26c521d59" - integrity sha512-r1QqZCXfDd0YQnE4MkcY291H5jWFdZtGeYmwjIkn7aeOZ0PP9qsDPkWTwPwbpfmnz4DhmIdO5a1rveWz/J5ZwQ== +"@abp/lodash@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.3.0-rc.1.tgz#c53304fbd9b1c885a9a812c681c3698dd8ecea47" + integrity sha512-yBvUB05z/SSEEbZ79nFfb0cKwWVFbrt9OtUkQHy9ER7ip0R9escG2n1djFtAA33yZr/NLzSUh+vVBYsEhk8MOA== dependencies: - "@abp/core" "~5.0.1" - lodash "^4.17.15" + "@abp/core" "~5.3.0-rc.1" + lodash "^4.17.21" -"@abp/luxon@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.1.tgz#7930e30db60e63b486a51030c60e09b54bcb3867" - integrity sha512-cXbnyAI9Gn2bZBQuCN46UFOkzb+djA3LMgpeMlTTv0aA87PrjzT60EPQ4a9FLovESqNnblaQ9Je43QwoGH8kZA== +"@abp/luxon@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.3.0-rc.1.tgz#bcb4de01b20a8e4da8db186e88fdebfcde47fb8f" + integrity sha512-SLozcDvCL/2jyvG2ZU+DHjzbfHYdmwiRjWu7gWyNjaY2e6D3NraHHjpMQ7ubObXZRlhhvfcp0i6eeKKoZNJtEQ== dependencies: - "@abp/core" "~5.0.1" - luxon "^1.24.1" + "@abp/core" "~5.3.0-rc.1" + luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.1.tgz#268ec30eef8ba72a0c8cb997e55d48a1508b2719" - integrity sha512-mqF6OizoWp6kg5pztNfF78+mbfyX3JAXDfv+ZUCvjtAqllIzyOUIqRSXULDkAcDeCC1+PluRsd+uSltIppC5hA== +"@abp/malihu-custom-scrollbar-plugin@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.3.0-rc.1.tgz#398181c7c6cc1805544e7a1ccd0423ed96005e0b" + integrity sha512-KZar881wtotKc+1bqDlBWo2vLUEeeqEpMBg8+BiXsGofp5ovudifVPM6mHZ9Gi29U9LAMyI0VEGwLJctgB/UoA== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.1.tgz#644c46c7c942a6b9d36bc76c7132f32ad577933b" - integrity sha512-FHVqEebQS3XiYn5TMEhGaQJOAYnPqxivKpeOB0F0F2bEDGqt3OXh05KcQBOm+sDSScq3c7T7HLr9mMzlYtyHXw== +"@abp/select2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.3.0-rc.1.tgz#b2ce00b6545674d6bccc10fdfe4626a4598a0cdc" + integrity sha512-frE5jia7bBdZinW4LqD5JR+wknWu2ARX3L3pPiQ080ulB+P58gRj07ZPd1BWgRcvutnuANYyP9rZtDA18Ls+9Q== dependencies: - "@abp/core" "~5.0.1" + "@abp/core" "~5.3.0-rc.1" select2 "^4.0.13" -"@abp/sweetalert2@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.1.tgz#acf2acfc04619c7907237238bfaeb63f2d75fb22" - integrity sha512-CPqXIaHK7Ff6i8gNhxoZ9r3te9LIEiDCUpdHNtgRVMCaLbywfkiLyirlfRIB6lxRWSw8BZ+M/azdp5uzidW8Vw== +"@abp/sweetalert2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.3.0-rc.1.tgz#6eb10b257e7f256da64ff6fe248a370671a26920" + integrity sha512-g9nddGcDGaG6EmjX7qpRcLzy3F38BTtFc0RBWApH7Da1o/LMYFYa6xGfS7ouIynZBM9j/BRP12CVTR+Y9qqbGg== dependencies: - "@abp/core" "~5.0.1" - sweetalert2 "^11.0.18" + "@abp/core" "~5.3.0-rc.1" + sweetalert2 "^11.3.6" -"@abp/timeago@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.1.tgz#09ca6302304de09baa5ac8c72b950515ab0d0451" - integrity sha512-6onXho8R6eiWfncONZFBn18OwgQPKIaRM73rVevpRGJTf2pylcHtCp4uHGsoqgCc+TQU7FyoKTTkg4lfvCQa0A== +"@abp/timeago@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.3.0-rc.1.tgz#2702a0f22db52dbf4c0717e4abcd317c56d10563" + integrity sha512-XRc4D98FIZR0YTXIoV0+OxVJTdixtNDiwatZRffopHT4Kpptmpj6O9KMcB4SngCH99/TrUFdEUnA2CgszxiEOA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" timeago "^1.6.7" -"@abp/toastr@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.1.tgz#a3959df1de0c4640fabf508da9ccd3ed37ae2b03" - integrity sha512-ndL1uj2ce4PbGDzxh+QCIWYu+GAmW1Xwma4aJcq5zKo+xhlLJJnTe6QFGKr7wSsTVZMB7z1Pp2olvXH6an82+g== +"@abp/toastr@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.3.0-rc.1.tgz#ec3a3d302ac91d5393c3caeb8b4884ad811b6edb" + integrity sha512-InZweYuBkrNZNBQKp6A+6gxGdO/lB0XsrXaa+CIVe55p8aNJPzE0mnvSfKWhN5G273wR08AD9RjR22kYS+bgFA== dependencies: - "@abp/jquery" "~5.0.1" + "@abp/jquery" "~5.3.0-rc.1" toastr "^2.1.4" -"@abp/utils@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.1.tgz#57934383004a21172bf7e08130813c08946894fb" - integrity sha512-WLCWe7iJ8krxsz8Z7E+8GDaGZuG/6PZDdqPcMIh95opi0kvcLxb+mjPXXpiXdtFzW7O09a+NaNOxorsEFxjoKw== +"@abp/utils@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.3.0-rc.1.tgz#3fa758944e7325e7b3f528141e03bb71f8e04d24" + integrity sha512-/8BTYZomNMdy+RpYXWLp5dg0lRhmfiguciZEVWo4qRw1lCXm/JR+0842XT1XYE1dQ4orNNJ3/H86eRX8Ab6Yfg== dependencies: just-compare "^1.3.0" -"@fortawesome/fontawesome-free@^5.13.0": - version "5.13.1" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz#c53b4066edae16cd1fd669f687baf031b45fb9d6" - integrity sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw== +"@fortawesome/fontawesome-free@^5.15.4": + version "5.15.4" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5" + integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg== abbrev@1: version "1.1.1" @@ -405,12 +404,7 @@ bootstrap-datepicker@^1.9.0: dependencies: jquery ">=1.7.1 <4.0.0" -bootstrap-v4-rtl@4.6.0-1: - version "4.6.0-1" - resolved "https://registry.yarnpkg.com/bootstrap-v4-rtl/-/bootstrap-v4-rtl-4.6.0-1.tgz#8fc502e800308fb725151128dd288df1c027cd8e" - integrity sha512-ChcbO5JeEQx6/Yz40YZLq3A4RIWcCmCCiRpweF5wg32/Q8CfWrwDNpcDTJ2SU+aSAewUJoCSzf/tRxhAgnZuog== - -bootstrap@^5.1.0: +bootstrap@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34" integrity sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q== @@ -627,25 +621,18 @@ d@1: dependencies: es5-ext "^0.10.9" -datatables.net-bs5@^1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.11.3.tgz#939d0e66fbf518718a519534a88fc88cd29405b0" - integrity sha512-u0tosKUR1XNpXzxOOt2NInnNYayt7GQoG+OM1xPRhdkZ7ZBD4oNF8S0aKve8yvSUq/ZwTMh4WJeh80GdmrJAdQ== +datatables.net-bs5@^1.11.4: + version "1.12.0" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.12.0.tgz#8cef5579c096c5216afa423af0261acba62b4476" + integrity sha512-8SR3gI2DtcrcFy03vu9MkGtIA61UfE725HvSujOOt+M4v+n0Wf9bsIbvUe2sGDlB4gVQreB0YHNSNamc3053tQ== dependencies: - datatables.net ">=1.10.25" + datatables.net ">=1.11.3" jquery ">=1.7" -datatables.net@>=1.10.25: - version "1.11.3" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.3.tgz#80e691036efcd62467558ee64c07dd566cb761b4" - integrity sha512-VMj5qEaTebpNurySkM6jy6sGpl+s6onPK8xJhYr296R/vUBnz1+id16NVqNf9z5aR076OGcpGHCuiTuy4E05oQ== - dependencies: - jquery ">=1.7" - -datatables.net@^1.10.21: - version "1.10.21" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.21.tgz#f1d35c8e5c3eb7f5caef39e80cd5b836a8c77103" - integrity sha512-/bSZtxmf3GTpYcvEmwZ8q26I1yhSx8qklR2B+s1K8+/51UW/zc2zTYwJMqr/Z+iCYixAc00ildj4g2x0Qamolw== +datatables.net@>=1.11.3, datatables.net@^1.11.4: + version "1.11.5" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.11.5.tgz#858a69953a01e1d5b18786769802117b04b8e3c9" + integrity sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA== dependencies: jquery ">=1.7" @@ -1450,12 +1437,12 @@ jquery-mousewheel@>=3.0.6: resolved "https://registry.yarnpkg.com/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz#06f0335f16e353a695e7206bf50503cb523a6ee5" integrity sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU= -jquery-validation-unobtrusive@^3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.11.tgz#175ee46380385a0e33ed320f255fad321f68f9f5" - integrity sha512-3FQPllaWdD+Aq55zJLGSW39+eXPDz1HhwAvrSwYi8zHQ8DVcu5IJ1HVeTiCl0BnCnrIBvfFU3zEB/DrGdcoRIQ== +jquery-validation-unobtrusive@^3.2.12: + version "3.2.12" + resolved "https://registry.yarnpkg.com/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz#1d52841f653e516525c251e494b042e664dad8af" + integrity sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ== dependencies: - jquery ">=1.8" + jquery "^3.5.1" jquery-validation ">=1.16" jquery-validation@>=1.16: @@ -1465,17 +1452,17 @@ jquery-validation@>=1.16: dependencies: jquery "^1.7 || ^2.0 || ^3.1" -jquery-validation@^1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.2.tgz#c602831b0d8c5881400af424e872757ce241eff9" - integrity sha512-yHaAqOGaAB7+p2u5lpzhhQVt3CBMUw3fHcuCJ7nXmXz0LWLHPN7yOhwnocp5nrn2SmnXR1jpV+whx2j1kLz1tQ== +jquery-validation@^1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/jquery-validation/-/jquery-validation-1.19.3.tgz#50b350eba8b02bcfd119ba15f199487b7eb64086" + integrity sha512-iXxCS5W7STthSTMFX/NDZfWHBLbJ1behVK3eAgHXAV8/0vRa9M4tiqHvJMr39VGWHMGdlkhrtrkBuaL2UlE8yw== -jquery@>=1.12.0, "jquery@>=1.5.0 <4.0", jquery@>=1.7, "jquery@>=1.7.1 <4.0.0", jquery@>=1.7.2, jquery@>=1.8, "jquery@^1.7 || ^2.0 || ^3.1": +jquery@>=1.12.0, "jquery@>=1.5.0 <4.0", jquery@>=1.7, "jquery@>=1.7.1 <4.0.0", jquery@>=1.7.2, "jquery@^1.7 || ^2.0 || ^3.1": version "3.4.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== -jquery@~3.6.0: +jquery@^3.5.1, jquery@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== @@ -1573,15 +1560,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -luxon@^1.24.1: - version "1.24.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.24.1.tgz#a8383266131ed4eaed4b5f430f96f3695403a52a" - integrity sha512-CgnIMKAWT0ghcuWFfCWBnWGOddM0zu6c4wZAWmD0NN7MZTnro0+833DF6tJep+xlxRPg4KtsYEHYLfTMBQKwYg== +luxon@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.4.0.tgz#9435806545bb32d4234dab766ab8a3d54847a765" + integrity sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA== make-iterator@^1.0.0: version "1.0.1" @@ -2464,10 +2451,10 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -sweetalert2@^11.0.18: - version "11.3.3" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.3.3.tgz#92ca0408380de8f29180788ce7ed5d5faf799cea" - integrity sha512-10Keqbmjng/+XpkpSOQ6dttpztl7XNohjnpC6bX6XFgm0WpRXM81YE0wmonGYOP6uyzd76vpfnZS04PdVvO31Q== +sweetalert2@^11.3.6: + version "11.4.14" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.4.14.tgz#b7c7efbf6672aa56696ba68d7ac141798b961525" + integrity sha512-Dh4XqfUSpCwhRsGM5zZFbtBRHujjcaf98DjVKXEs0ER4E/Zao0OtDHZRRQqvT9xxY7RA8WsiZ6FHJbyW+BBbDw== tar@^4: version "4.4.10" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index ba1ca22dfb..e8da4a9929 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.0-rc.2.tgz#d2cf4a0f2b8a93f1fe53a0bc6c66d9c3233b620a" - integrity sha512-aQk3RSl31UT4gEqiHT3oV06BZ/k6q1DVKBwVOj+YQEIb8ojptJtbGv+aUhHEql5I7zwiWe4EWf2rM2Ve0JQa6Q== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.0-rc.2.tgz#9ff2eb2a1b5f438d8f848659400100e20f74fc77" - integrity sha512-m06zMEt0C9P3f7+Qg7SjvP+k4wHPqvAOzsd5jDNN0JekeWH4gIMsqgDAoRB2SA72HUUpMbGe8Utune7EgE/T1Q== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.0-rc.2" - "@abp/bootstrap" "~5.2.0-rc.2" - "@abp/bootstrap-datepicker" "~5.2.0-rc.2" - "@abp/datatables.net-bs5" "~5.2.0-rc.2" - "@abp/font-awesome" "~5.2.0-rc.2" - "@abp/jquery-form" "~5.2.0-rc.2" - "@abp/jquery-validation-unobtrusive" "~5.2.0-rc.2" - "@abp/lodash" "~5.2.0-rc.2" - "@abp/luxon" "~5.2.0-rc.2" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.0-rc.2" - "@abp/select2" "~5.2.0-rc.2" - "@abp/sweetalert2" "~5.2.0-rc.2" - "@abp/timeago" "~5.2.0-rc.2" - "@abp/toastr" "~5.2.0-rc.2" - -"@abp/aspnetcore.mvc.ui@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.0-rc.2.tgz#427811f66eb738dbb89434e926b36a2309fe43b2" - integrity sha512-+ss9MctYTF9Ewn7VEsMqszEoiX51G070kN2bIepgyXnYetrQRFsTgQGa4yi1bAqyAF9rZ1j0hSB0eM2clFyJMg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.3.0-rc.1.tgz#dc27eb79ba7353eb6b16e4a2f50d17c3cfc9157d" + integrity sha512-TEbz/ISsGhfTec66XSeivQjCOCpTidufdpZmj8JRyrbQvhXOYohJs3ImrGJOIxUwo6nuzagGpotqXryjIF+jrg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.3.0-rc.1.tgz#ed993befe99682baee55ea8771f983980ba8f93f" + integrity sha512-kL4CXe0YoZ4wJ4XvutqLPkv4fMuFeRJFzdix6lx4dPAArnPu69n3P4qFhokPkcoGpB2KTRqyn9fHQs8g2FCGQw== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.3.0-rc.1" + "@abp/bootstrap" "~5.3.0-rc.1" + "@abp/bootstrap-datepicker" "~5.3.0-rc.1" + "@abp/datatables.net-bs5" "~5.3.0-rc.1" + "@abp/font-awesome" "~5.3.0-rc.1" + "@abp/jquery-form" "~5.3.0-rc.1" + "@abp/jquery-validation-unobtrusive" "~5.3.0-rc.1" + "@abp/lodash" "~5.3.0-rc.1" + "@abp/luxon" "~5.3.0-rc.1" + "@abp/malihu-custom-scrollbar-plugin" "~5.3.0-rc.1" + "@abp/select2" "~5.3.0-rc.1" + "@abp/sweetalert2" "~5.3.0-rc.1" + "@abp/timeago" "~5.3.0-rc.1" + "@abp/toastr" "~5.3.0-rc.1" + +"@abp/aspnetcore.mvc.ui@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.3.0-rc.1.tgz#5205d3a5ea500ff3b8d525dcc11a2ce4cfccdfd3" + integrity sha512-mIefq3QSVtP7heNl0ocHiSKLU+DwN5/TDvvPj2L3IZkCzuOrDxoBUIBIciea4k10HIQzqo6gmm1YOw0CEfzNHg== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.0-rc.2.tgz#bfb648e7b8e5d2a9806301417c7864abb4cc26e2" - integrity sha512-wKR+5g/xx7zqFGFaOZVO9XySlrOmOFH/ZidDpq9QYjE+OoHSlS8X5DUnkbXj2MbQy4etZuvz9ILcmnBPonrQ7g== +"@abp/bootstrap-datepicker@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.3.0-rc.1.tgz#1a5a29d7f9904e8d99c7085bc4545ad2665195cb" + integrity sha512-Y5QLLNd2UpbzbWSh+5nKdpAdz2i3V8+feTHTpAxnPgYRabPGqAFiOrty8KZ1MJEgjQFWC1ypGHYII7GWVyIS6Q== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.0-rc.2.tgz#0375b38317c5d1f5f6cb7d46a0ee6bf9b85a6f4f" - integrity sha512-hsgxY8WNRonQZP3cmMKvBNHnyCSBfbBB4savLW5r7CxysjnRt6MDyhmmj7XVwVTC1siBviUcWClOHCJisaNRSw== +"@abp/bootstrap@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.3.0-rc.1.tgz#977d579f59e18b1eb2c9b43612d525a859a575a4" + integrity sha512-dpY0bPHdhUI5yL23+EsR6w/KjoPyehaEgHLLKQDERdubX1Zk/SDWrhrYXnXxtJ0fvxG2aRVOEBMULmHD3m/PoA== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" bootstrap "^5.1.3" -"@abp/core@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.0-rc.2.tgz#f0c3dd7f0b12e8e13a702a3b0a53aa4525da673e" - integrity sha512-zotgZOXmkh+aD0KExBr4QytQfDDHxrG15e2HFzYKywhd0mpnwAVdR2Z2Ye01C360wJ2opv0mtgaSuEZniXNO3Q== +"@abp/core@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.3.0-rc.1.tgz#4ede309ccfab440deb66fecb091273027483676a" + integrity sha512-cTw9xaWMkRDQjXRtkB5zx4Za0CPx7yvCRnTngIJs7xO86lRMVnuiwVGjP66vYTmiiu2ulGFgCeuw1AaK5t+g4Q== dependencies: - "@abp/utils" "~5.2.0-rc.2" + "@abp/utils" "~5.3.0-rc.1" -"@abp/datatables.net-bs5@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.0-rc.2.tgz#df5cbe004ba3a2330cc667b3724440c4881cc6b2" - integrity sha512-Q2Sy6MMWM3EuELHeHxKkDflPTX09ictonjB5vn/Cau2PHuOkWTnL0Ystl91a1DetQIa1ejJL/YB+Pz1TUVoUNA== +"@abp/datatables.net-bs5@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.3.0-rc.1.tgz#ca624d788acdcc547d0bdf1f76ba3ffc105dfd52" + integrity sha512-uyFBkD9rM3wGve0ZKrr7bEbC0Z/ywi8S/EYL6GwLzGNtogSsVj5HGtSvifKjCBn7KmAvo54skKoVgVEn77dlWQ== dependencies: - "@abp/datatables.net" "~5.2.0-rc.2" + "@abp/datatables.net" "~5.3.0-rc.1" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.0-rc.2.tgz#bfdc01302d19eab0d73eff908238bf88c5806e74" - integrity sha512-TG1b8moW4RqCyNtzQKB7RnCmDt1cDEy/5WD++Maz2x4/yvu1uBBa6qLR7Mn6UNgoC51Y/op+LzaabkwXUSJl4w== +"@abp/datatables.net@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.3.0-rc.1.tgz#38c0f6323f7e6305a50f7de9885b8a3f440cdf15" + integrity sha512-lecJ9Yelgey/nfSscsUHET0gyB6pZgkhnJXu3u8d9XhV2M5sc/WSnnCO3bgVBqMDImprR4GFPFw2cUlWkb8QBg== dependencies: - "@abp/jquery" "~5.2.0-rc.2" + "@abp/jquery" "~5.3.0-rc.1" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.0-rc.2.tgz#0292cb22c0280dccfe148ad3d46947ede26f8b14" - integrity sha512-FzjH/lnAglswqU7/YAXZP0H/ocGBrDkegMiQ7OjzZVcgGPS9BnqRPbiHDz7mjBHaQHzBtTCcZrXnU0l3GXCdbw== +"@abp/font-awesome@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.3.0-rc.1.tgz#de14dca2b33fdc098d2325c5047e030a3927bfa9" + integrity sha512-tIuDwo+L5CuLpQ+ARsaTYmxuqpSJLqcaXuoFfk6JAC20bw881t7y8w4xWy1PUs0+SEQwTT7diZjQrcA/xxlMUQ== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.0-rc.2.tgz#797e3b72a91435d74f19ddaa9b2e6e04fcfed616" - integrity sha512-cVbReCeM5q7nqeQDjSIH7VmuMwX8lE36D9sariUw8xSUn5GJlnrGYNV4kE7G9JLIlIRanIlS3SPuA3RFA2z9ZA== +"@abp/jquery-form@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.3.0-rc.1.tgz#0a363d8e4814651e0c46e2109d19dcc84fc884b0" + integrity sha512-IWazO6BW5rHJ+ODk4haEqWzfzHvbxtW2+T1o534Lr7d+LI9yabNiQmRZ24yzNDb6SmRvDUVsumZ+lxPn2WBhIw== dependencies: - "@abp/jquery" "~5.2.0-rc.2" + "@abp/jquery" "~5.3.0-rc.1" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.0-rc.2.tgz#ec0c22cecef3016c1da0b8dca4374a263915a835" - integrity sha512-b+ttLlnRPgDB7V2tnYp8+1Q3niM4ZmiU/ZaQB4z6gSMk/2tPAIhOOwAQt7DYRWSMUsgGFI0NvsgEBM9aLTikFA== +"@abp/jquery-validation-unobtrusive@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.3.0-rc.1.tgz#0aa2a5535acd79b5288ef04a0dc1b83a7a57b4b9" + integrity sha512-Qv/+nrd+ZeUs/2mCMahpQFqEguMOcmHrLg7hcw0LgcHr+MmEcG4WDcijTY6suFyekaf0DZD6vsFZjdvZmhsVYQ== dependencies: - "@abp/jquery-validation" "~5.2.0-rc.2" + "@abp/jquery-validation" "~5.3.0-rc.1" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.0-rc.2.tgz#a98383e6c7fb21b74ecde937c25d7fa46810a333" - integrity sha512-6lVxJyMfL0kHmv8tpxLhVfK0Rf+qjLMPkm1qHd0pSwvH+GM0QMN39s9TaexCvH3QO70BlEnwXJ2PWVY9OQY5uw== +"@abp/jquery-validation@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.3.0-rc.1.tgz#d05afbe0209c0815afe3a7cb0cf811256e9905fc" + integrity sha512-3DoRX6c8duRx1/g7MFuPAO/qesJCFqbVbw+x0+QnKmCkVZmz5VFAqdO9yFMxDFRbBAtyp7faaarc0lOtAcBsoA== dependencies: - "@abp/jquery" "~5.2.0-rc.2" + "@abp/jquery" "~5.3.0-rc.1" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.0-rc.2.tgz#3235b92834cbca4d3e22fb0b19122aa2a24b8262" - integrity sha512-u7xpQcaMpzlXq018qBdzwWmPx+65QHPq5VhI7aAvZAUlQrvQjiiCeG25egxOeCL0aROcCjsAlnTItT1U/q9loQ== +"@abp/jquery@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.3.0-rc.1.tgz#26e5d5761f2629d02b2534ad964080221d536308" + integrity sha512-//bqInarV6XOs8+I5GW1q/c05sjnCq/Z0vuzFW1i1NDrQ2Q5kqF5leMV9hhGEZmfR+yG1T0MsbVvueieRkV/cA== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" jquery "~3.6.0" -"@abp/lodash@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.0-rc.2.tgz#e55f11279d4f374785a56ec68ed99cdf2495a9aa" - integrity sha512-BR6d1NbTcuk772RK8VdeHBokbqZ1OHUgRKdPG3MXlDGKZmUS4/ijFdRiIvo7Rd0WFqgk2QdbHw3lfKQ/CGqyhw== +"@abp/lodash@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.3.0-rc.1.tgz#c53304fbd9b1c885a9a812c681c3698dd8ecea47" + integrity sha512-yBvUB05z/SSEEbZ79nFfb0cKwWVFbrt9OtUkQHy9ER7ip0R9escG2n1djFtAA33yZr/NLzSUh+vVBYsEhk8MOA== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" lodash "^4.17.21" -"@abp/luxon@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.0-rc.2.tgz#0d263482b9a73269164a8a58562ce8bd69b57f36" - integrity sha512-KIhpvl9kf43Bc/E/u6bmb1lp0asf81NoUoERQTRz7JqmH1XYJvJCqGHxommvItcu7zNjCLL6FK/JtO0v7DUiEw== +"@abp/luxon@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.3.0-rc.1.tgz#bcb4de01b20a8e4da8db186e88fdebfcde47fb8f" + integrity sha512-SLozcDvCL/2jyvG2ZU+DHjzbfHYdmwiRjWu7gWyNjaY2e6D3NraHHjpMQ7ubObXZRlhhvfcp0i6eeKKoZNJtEQ== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.0-rc.2.tgz#5136c0d59d5d385350f560c6d8a3d10f6393dea7" - integrity sha512-7Q8yZbU9YRA5/Y+rRLLiPD724rjfrVBuCpfp1+b99LyeFTFTSD2oNG3r/I6FC7tE5HLaFscJLJyOca4GPS1mww== +"@abp/malihu-custom-scrollbar-plugin@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.3.0-rc.1.tgz#398181c7c6cc1805544e7a1ccd0423ed96005e0b" + integrity sha512-KZar881wtotKc+1bqDlBWo2vLUEeeqEpMBg8+BiXsGofp5ovudifVPM6mHZ9Gi29U9LAMyI0VEGwLJctgB/UoA== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.0-rc.2.tgz#2eef30442957ac02133357604a1256e995a9ebe7" - integrity sha512-1cFOavpWP6zRfrpXi0zozFkL6W0tEEBkWj7AiHU3AGctAQEZ0qWGKSTIExqnEsDb3LsjAKMdBycGdkLFbK97Og== +"@abp/select2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.3.0-rc.1.tgz#b2ce00b6545674d6bccc10fdfe4626a4598a0cdc" + integrity sha512-frE5jia7bBdZinW4LqD5JR+wknWu2ARX3L3pPiQ080ulB+P58gRj07ZPd1BWgRcvutnuANYyP9rZtDA18Ls+9Q== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.0-rc.2.tgz#15b6718b1378e8bd7e0ea019b965e7b51f0cb1ea" - integrity sha512-1ROKcfpu0Xyk7ebUFMNBhFgENcHCMj48+1Lj/OxdJH3U7KhyF5WEs54uYgn8EvY2wTCgOkHCnqeK9bRCp5M9+g== +"@abp/sweetalert2@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.3.0-rc.1.tgz#6eb10b257e7f256da64ff6fe248a370671a26920" + integrity sha512-g9nddGcDGaG6EmjX7qpRcLzy3F38BTtFc0RBWApH7Da1o/LMYFYa6xGfS7ouIynZBM9j/BRP12CVTR+Y9qqbGg== dependencies: - "@abp/core" "~5.2.0-rc.2" + "@abp/core" "~5.3.0-rc.1" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.0-rc.2.tgz#e6ad0cb584515b95e47258976d726fd996b7f47d" - integrity sha512-D9Y7xfpP6neURDkP/WMrFh25G++0SUiGIDaCIElgymhNdVp2gm9pC633ShetMOFrPCSuOUvlzC2p4YkUdq0Lnw== +"@abp/timeago@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.3.0-rc.1.tgz#2702a0f22db52dbf4c0717e4abcd317c56d10563" + integrity sha512-XRc4D98FIZR0YTXIoV0+OxVJTdixtNDiwatZRffopHT4Kpptmpj6O9KMcB4SngCH99/TrUFdEUnA2CgszxiEOA== dependencies: - "@abp/jquery" "~5.2.0-rc.2" + "@abp/jquery" "~5.3.0-rc.1" timeago "^1.6.7" -"@abp/toastr@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.0-rc.2.tgz#b5f013f1f00dab648da2fe1cf4ece6691e6eafc7" - integrity sha512-FSkva7zP3kJFSh6SlmvrgjPFJscJbmrgCilxGxPGVxlg5p9LNORgkotNk2yKsGHX0F0rnKJ4kHepTq7g+oGMdw== +"@abp/toastr@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.3.0-rc.1.tgz#ec3a3d302ac91d5393c3caeb8b4884ad811b6edb" + integrity sha512-InZweYuBkrNZNBQKp6A+6gxGdO/lB0XsrXaa+CIVe55p8aNJPzE0mnvSfKWhN5G273wR08AD9RjR22kYS+bgFA== dependencies: - "@abp/jquery" "~5.2.0-rc.2" + "@abp/jquery" "~5.3.0-rc.1" toastr "^2.1.4" -"@abp/utils@~5.2.0-rc.2": - version "5.2.0-rc.2" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.0-rc.2.tgz#1280059ff3e948ae0827eaf06d916e5a90f8907b" - integrity sha512-/mo4dSXPkhCEbqyKunuURcF1cEzuJqRTPOGpjSrjDwOgymVSWp/AqqjJPBXuc4qrMfB4q9y+Iod5nslXp2cXeA== +"@abp/utils@~5.3.0-rc.1": + version "5.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.3.0-rc.1.tgz#3fa758944e7325e7b3f528141e03bb71f8e04d24" + integrity sha512-/8BTYZomNMdy+RpYXWLp5dg0lRhmfiguciZEVWo4qRw1lCXm/JR+0842XT1XYE1dQ4orNNJ3/H86eRX8Ab6Yfg== dependencies: just-compare "^1.3.0" From d94553a40a641aa61970574e2a30fc88e5b0f183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 16 May 2022 10:37:31 +0300 Subject: [PATCH 11/89] Removed IdentityServer from the app startup template --- ...ompanyName.MyProjectName.DbMigrator.csproj | 1 + ...anyName.MyProjectName.Domain.Shared.csproj | 1 - .../MyProjectNameDomainSharedModule.cs | 2 - .../IdentityServerDataSeedContributor.cs | 353 ----- .../MyCompanyName.MyProjectName.Domain.csproj | 2 - .../MyProjectNameDomainModule.cs | 4 - .../MyProjectNameDbContext.cs | 2 - .../MyProjectNameEntityFrameworkCoreModule.cs | 2 - ...6073223_Removed_IdentityServer.Designer.cs | 1295 +++++++++++++++++ .../20220516073223_Removed_IdentityServer.cs | 623 ++++++++ .../MyProjectNameDbContextModelSnapshot.cs | 1027 ------------- ...e.MyProjectName.EntityFrameworkCore.csproj | 1 - ...nyName.MyProjectName.IdentityServer.csproj | 2 +- .../MyProjectNameIdentityServerModule.cs | 12 +- .../MongoDb/MyProjectNameMongoDbModule.cs | 2 - ...MyCompanyName.MyProjectName.MongoDB.csproj | 1 - .../MyCompanyName.MyProjectName.Web.csproj | 2 +- .../MyProjectNameWebModule.cs | 11 +- .../MyProjectNameTestBaseModule.cs | 9 - 19 files changed, 1931 insertions(+), 1421 deletions(-) delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.Designer.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj index 7ee3d93b80..1a1358ac3c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj @@ -21,6 +21,7 @@ + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 8942c83134..06eb1f75ea 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -10,7 +10,6 @@ - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs index 9d3f467583..3b7322b3fc 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs @@ -3,7 +3,6 @@ using Volo.Abp.AuditLogging; using Volo.Abp.BackgroundJobs; using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; -using Volo.Abp.IdentityServer; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; @@ -20,7 +19,6 @@ namespace MyCompanyName.MyProjectName; typeof(AbpBackgroundJobsDomainSharedModule), typeof(AbpFeatureManagementDomainSharedModule), typeof(AbpIdentityDomainSharedModule), - typeof(AbpIdentityServerDomainSharedModule), typeof(AbpPermissionManagementDomainSharedModule), typeof(AbpSettingManagementDomainSharedModule), typeof(AbpTenantManagementDomainSharedModule) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs deleted file mode 100644 index da0b56a6d0..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs +++ /dev/null @@ -1,353 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using IdentityServer4.Models; -using Microsoft.Extensions.Configuration; -using Volo.Abp.Authorization.Permissions; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Guids; -using Volo.Abp.IdentityServer.ApiResources; -using Volo.Abp.IdentityServer.ApiScopes; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.IdentityServer.IdentityResources; -using Volo.Abp.MultiTenancy; -using Volo.Abp.PermissionManagement; -using Volo.Abp.Uow; -using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; -using ApiScope = Volo.Abp.IdentityServer.ApiScopes.ApiScope; -using Client = Volo.Abp.IdentityServer.Clients.Client; - -namespace MyCompanyName.MyProjectName.IdentityServer; - -public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly IApiResourceRepository _apiResourceRepository; - private readonly IApiScopeRepository _apiScopeRepository; - private readonly IClientRepository _clientRepository; - private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; - private readonly IGuidGenerator _guidGenerator; - private readonly IPermissionDataSeeder _permissionDataSeeder; - private readonly IConfiguration _configuration; - private readonly ICurrentTenant _currentTenant; - - public IdentityServerDataSeedContributor( - IClientRepository clientRepository, - IApiResourceRepository apiResourceRepository, - IApiScopeRepository apiScopeRepository, - IIdentityResourceDataSeeder identityResourceDataSeeder, - IGuidGenerator guidGenerator, - IPermissionDataSeeder permissionDataSeeder, - IConfiguration configuration, - ICurrentTenant currentTenant) - { - _clientRepository = clientRepository; - _apiResourceRepository = apiResourceRepository; - _apiScopeRepository = apiScopeRepository; - _identityResourceDataSeeder = identityResourceDataSeeder; - _guidGenerator = guidGenerator; - _permissionDataSeeder = permissionDataSeeder; - _configuration = configuration; - _currentTenant = currentTenant; - } - - [UnitOfWork] - public virtual async Task SeedAsync(DataSeedContext context) - { - using (_currentTenant.Change(context?.TenantId)) - { - await _identityResourceDataSeeder.CreateStandardResourcesAsync(); - await CreateApiResourcesAsync(); - await CreateApiScopesAsync(); - await CreateClientsAsync(); - } - } - - private async Task CreateApiScopesAsync() - { - await CreateApiScopeAsync("MyProjectName"); - } - - private async Task CreateApiResourcesAsync() - { - var commonApiUserClaims = new[] - { - "email", - "email_verified", - "name", - "phone_number", - "phone_number_verified", - "role" - }; - - await CreateApiResourceAsync("MyProjectName", commonApiUserClaims); - } - - private async Task CreateApiResourceAsync(string name, IEnumerable claims) - { - var apiResource = await _apiResourceRepository.FindByNameAsync(name); - if (apiResource == null) - { - apiResource = await _apiResourceRepository.InsertAsync( - new ApiResource( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - foreach (var claim in claims) - { - if (apiResource.FindClaim(claim) == null) - { - apiResource.AddUserClaim(claim); - } - } - - return await _apiResourceRepository.UpdateAsync(apiResource); - } - - private async Task CreateApiScopeAsync(string name) - { - var apiScope = await _apiScopeRepository.FindByNameAsync(name); - if (apiScope == null) - { - apiScope = await _apiScopeRepository.InsertAsync( - new ApiScope( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - return apiScope; - } - - private async Task CreateClientsAsync() - { - var commonScopes = new[] - { - "email", - "openid", - "profile", - "role", - "phone", - "address", - "MyProjectName" - }; - - var configurationSection = _configuration.GetSection("IdentityServer:Clients"); - - // - - //Web Client - var webClientId = configurationSection["MyProjectName_Web:ClientId"]; - if (!webClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); - - await CreateClientAsync( - name: webClientId, - scopes: commonScopes, - grantTypes: new[] { "hybrid" }, - secret: (configurationSection["MyProjectName_Web:ClientSecret"] ?? "1q2w3e*").Sha256(), - redirectUri: $"{webClientRootUrl}signin-oidc", - postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc", - frontChannelLogoutUri: $"{webClientRootUrl}Account/FrontChannelLogout", - corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } - ); - } - - // - - //Console Test / Angular Client - var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; - if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); - - await CreateClientAsync( - name: consoleAndAngularClientId, - scopes: commonScopes, - grantTypes: new[] { "password", "client_credentials", "authorization_code" }, - secret: (configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*").Sha256(), - requireClientSecret: false, - redirectUri: webClientRootUrl, - postLogoutRedirectUri: webClientRootUrl, - corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } - ); - } - - // - - // Blazor Client - var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; - if (!blazorClientId.IsNullOrWhiteSpace()) - { - var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); - - await CreateClientAsync( - name: blazorClientId, - scopes: commonScopes, - grantTypes: new[] { "authorization_code" }, - secret: configurationSection["MyProjectName_Blazor:ClientSecret"]?.Sha256(), - requireClientSecret: false, - redirectUri: $"{blazorRootUrl}/authentication/login-callback", - postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback", - corsOrigins: new[] { blazorRootUrl.RemovePostFix("/") } - ); - } - - // - - // - - //Blazor Server Tiered Client - var blazorServerTieredClientId = configurationSection["MyProjectName_BlazorServerTiered:ClientId"]; - if (!blazorServerTieredClientId.IsNullOrWhiteSpace()) - { - var blazorServerTieredClientRootUrl = configurationSection["MyProjectName_BlazorServerTiered:RootUrl"].EnsureEndsWith('/'); - - /* MyProjectName_BlazorServerTiered client is only needed if you created a tiered blazor server - * solution. Otherwise, you can delete this client. */ - - await CreateClientAsync( - name: blazorServerTieredClientId, - scopes: commonScopes, - grantTypes: new[] { "hybrid" }, - secret: (configurationSection["MyProjectName_BlazorServerTiered:ClientSecret"] ?? "1q2w3e*").Sha256(), - redirectUri: $"{blazorServerTieredClientRootUrl}signin-oidc", - postLogoutRedirectUri: $"{blazorServerTieredClientRootUrl}signout-callback-oidc", - frontChannelLogoutUri: $"{blazorServerTieredClientRootUrl}Account/FrontChannelLogout", - corsOrigins: new[] { blazorServerTieredClientRootUrl.RemovePostFix("/") } - ); - } - - // - - // Swagger Client - var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; - if (!swaggerClientId.IsNullOrWhiteSpace()) - { - var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); - - await CreateClientAsync( - name: swaggerClientId, - scopes: commonScopes, - grantTypes: new[] { "authorization_code" }, - secret: configurationSection["MyProjectName_Swagger:ClientSecret"]?.Sha256(), - requireClientSecret: false, - redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", - corsOrigins: new[] { swaggerRootUrl.RemovePostFix("/") } - ); - } - } - - private async Task CreateClientAsync( - string name, - IEnumerable scopes, - IEnumerable grantTypes, - string secret = null, - string redirectUri = null, - string postLogoutRedirectUri = null, - string frontChannelLogoutUri = null, - bool requireClientSecret = true, - bool requirePkce = false, - IEnumerable permissions = null, - IEnumerable corsOrigins = null) - { - var client = await _clientRepository.FindByClientIdAsync(name); - if (client == null) - { - client = await _clientRepository.InsertAsync( - new Client( - _guidGenerator.Create(), - name - ) - { - ClientName = name, - ProtocolType = "oidc", - Description = name, - AlwaysIncludeUserClaimsInIdToken = true, - AllowOfflineAccess = true, - AbsoluteRefreshTokenLifetime = 31536000, //365 days - AccessTokenLifetime = 31536000, //365 days - AuthorizationCodeLifetime = 300, - IdentityTokenLifetime = 300, - RequireConsent = false, - FrontChannelLogoutUri = frontChannelLogoutUri, - RequireClientSecret = requireClientSecret, - RequirePkce = requirePkce - }, - autoSave: true - ); - } - - foreach (var scope in scopes) - { - if (client.FindScope(scope) == null) - { - client.AddScope(scope); - } - } - - foreach (var grantType in grantTypes) - { - if (client.FindGrantType(grantType) == null) - { - client.AddGrantType(grantType); - } - } - - if (!secret.IsNullOrEmpty()) - { - if (client.FindSecret(secret) == null) - { - client.AddSecret(secret); - } - } - - if (redirectUri != null) - { - if (client.FindRedirectUri(redirectUri) == null) - { - client.AddRedirectUri(redirectUri); - } - } - - if (postLogoutRedirectUri != null) - { - if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) - { - client.AddPostLogoutRedirectUri(postLogoutRedirectUri); - } - } - - if (permissions != null) - { - await _permissionDataSeeder.SeedAsync( - ClientPermissionValueProvider.ProviderName, - name, - permissions, - null - ); - } - - if (corsOrigins != null) - { - foreach (var origin in corsOrigins) - { - if (!origin.IsNullOrWhiteSpace() && client.FindCorsOrigin(origin) == null) - { - client.AddCorsOrigin(origin); - } - } - } - - return await _clientRepository.UpdateAsync(client); - } -} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj index beadab9345..317f494200 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj @@ -15,8 +15,6 @@ - - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs index 2737edd6c2..148f5da761 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs @@ -6,11 +6,9 @@ using Volo.Abp.BackgroundJobs; using Volo.Abp.Emailing; using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; -using Volo.Abp.IdentityServer; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; using Volo.Abp.SettingManagement; using Volo.Abp.TenantManagement; @@ -23,8 +21,6 @@ namespace MyCompanyName.MyProjectName; typeof(AbpFeatureManagementDomainModule), typeof(AbpIdentityDomainModule), typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpIdentityServerDomainModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), typeof(AbpSettingManagementDomainModule), typeof(AbpTenantManagementDomainModule), typeof(AbpEmailingModule) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs index ed168aa016..bd091181dd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs @@ -7,7 +7,6 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement; @@ -69,7 +68,6 @@ public class MyProjectNameDbContext : builder.ConfigureBackgroundJobs(); builder.ConfigureAuditLogging(); builder.ConfigureIdentity(); - builder.ConfigureIdentityServer(); builder.ConfigureFeatureManagement(); builder.ConfigureTenantManagement(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs index f655a22a24..6dfef5c44c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs @@ -6,7 +6,6 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.SqlServer; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; @@ -17,7 +16,6 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore; [DependsOn( typeof(MyProjectNameDomainModule), typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityServerEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpEntityFrameworkCoreSqlServerModule), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.Designer.cs new file mode 100644 index 0000000000..36d715348a --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.Designer.cs @@ -0,0 +1,1295 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace MyCompanyName.MyProjectName.Migrations +{ + [DbContext(typeof(MyProjectNameDbContext))] + [Migration("20220516073223_Removed_IdentityServer")] + partial class Removed_IdentityServer + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.cs new file mode 100644 index 0000000000..28b1d38268 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516073223_Removed_IdentityServer.cs @@ -0,0 +1,623 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace MyCompanyName.MyProjectName.Migrations +{ + public partial class Removed_IdentityServer : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "IdentityServerApiResourceClaims"); + + migrationBuilder.DropTable( + name: "IdentityServerApiResourceProperties"); + + migrationBuilder.DropTable( + name: "IdentityServerApiResourceScopes"); + + migrationBuilder.DropTable( + name: "IdentityServerApiResourceSecrets"); + + migrationBuilder.DropTable( + name: "IdentityServerApiScopeClaims"); + + migrationBuilder.DropTable( + name: "IdentityServerApiScopeProperties"); + + migrationBuilder.DropTable( + name: "IdentityServerClientClaims"); + + migrationBuilder.DropTable( + name: "IdentityServerClientCorsOrigins"); + + migrationBuilder.DropTable( + name: "IdentityServerClientGrantTypes"); + + migrationBuilder.DropTable( + name: "IdentityServerClientIdPRestrictions"); + + migrationBuilder.DropTable( + name: "IdentityServerClientPostLogoutRedirectUris"); + + migrationBuilder.DropTable( + name: "IdentityServerClientProperties"); + + migrationBuilder.DropTable( + name: "IdentityServerClientRedirectUris"); + + migrationBuilder.DropTable( + name: "IdentityServerClientScopes"); + + migrationBuilder.DropTable( + name: "IdentityServerClientSecrets"); + + migrationBuilder.DropTable( + name: "IdentityServerDeviceFlowCodes"); + + migrationBuilder.DropTable( + name: "IdentityServerIdentityResourceClaims"); + + migrationBuilder.DropTable( + name: "IdentityServerIdentityResourceProperties"); + + migrationBuilder.DropTable( + name: "IdentityServerPersistedGrants"); + + migrationBuilder.DropTable( + name: "IdentityServerApiResources"); + + migrationBuilder.DropTable( + name: "IdentityServerApiScopes"); + + migrationBuilder.DropTable( + name: "IdentityServerClients"); + + migrationBuilder.DropTable( + name: "IdentityServerIdentityResources"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "IdentityServerApiResources", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + AllowedAccessTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true), + Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), + DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Enabled = table.Column(type: "bit", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiResources", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiScopes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true), + Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), + DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Emphasize = table.Column(type: "bit", nullable: false), + Enabled = table.Column(type: "bit", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + Required = table.Column(type: "bit", nullable: false), + ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiScopes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClients", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + AbsoluteRefreshTokenLifetime = table.Column(type: "int", nullable: false), + AccessTokenLifetime = table.Column(type: "int", nullable: false), + AccessTokenType = table.Column(type: "int", nullable: false), + AllowAccessTokensViaBrowser = table.Column(type: "bit", nullable: false), + AllowOfflineAccess = table.Column(type: "bit", nullable: false), + AllowPlainTextPkce = table.Column(type: "bit", nullable: false), + AllowRememberConsent = table.Column(type: "bit", nullable: false), + AllowedIdentityTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + AlwaysIncludeUserClaimsInIdToken = table.Column(type: "bit", nullable: false), + AlwaysSendClientClaims = table.Column(type: "bit", nullable: false), + AuthorizationCodeLifetime = table.Column(type: "int", nullable: false), + BackChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), + BackChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + ClientClaimsPrefix = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + ClientName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + ClientUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ConsentLifetime = table.Column(type: "int", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true), + Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), + DeviceCodeLifetime = table.Column(type: "int", nullable: false), + EnableLocalLogin = table.Column(type: "bit", nullable: false), + Enabled = table.Column(type: "bit", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + FrontChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), + FrontChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + IdentityTokenLifetime = table.Column(type: "int", nullable: false), + IncludeJwtId = table.Column(type: "bit", nullable: false), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + LogoUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + PairWiseSubjectSalt = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + ProtocolType = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + RefreshTokenExpiration = table.Column(type: "int", nullable: false), + RefreshTokenUsage = table.Column(type: "int", nullable: false), + RequireClientSecret = table.Column(type: "bit", nullable: false), + RequireConsent = table.Column(type: "bit", nullable: false), + RequirePkce = table.Column(type: "bit", nullable: false), + RequireRequestObject = table.Column(type: "bit", nullable: false), + SlidingRefreshTokenLifetime = table.Column(type: "int", nullable: false), + UpdateAccessTokenClaimsOnRefresh = table.Column(type: "bit", nullable: false), + UserCodeType = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + UserSsoLifetime = table.Column(type: "int", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClients", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerDeviceFlowCodes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), + Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + DeviceCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + Expiration = table.Column(type: "datetime2", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + UserCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerDeviceFlowCodes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerIdentityResources", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true), + Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), + DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Emphasize = table.Column(type: "bit", nullable: false), + Enabled = table.Column(type: "bit", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + Required = table.Column(type: "bit", nullable: false), + ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerIdentityResources", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerPersistedGrants", + columns: table => new + { + Key = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + ConsumedTime = table.Column(type: "datetime2", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), + Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Expiration = table.Column(type: "datetime2", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + Id = table.Column(type: "uniqueidentifier", nullable: false), + SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerPersistedGrants", x => x.Key); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiResourceClaims", + columns: table => new + { + ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), + Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiResourceClaims", x => new { x.ApiResourceId, x.Type }); + table.ForeignKey( + name: "FK_IdentityServerApiResourceClaims_IdentityServerApiResources_ApiResourceId", + column: x => x.ApiResourceId, + principalTable: "IdentityServerApiResources", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiResourceProperties", + columns: table => new + { + ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), + Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiResourceProperties", x => new { x.ApiResourceId, x.Key, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerApiResourceProperties_IdentityServerApiResources_ApiResourceId", + column: x => x.ApiResourceId, + principalTable: "IdentityServerApiResources", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiResourceScopes", + columns: table => new + { + ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), + Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiResourceScopes", x => new { x.ApiResourceId, x.Scope }); + table.ForeignKey( + name: "FK_IdentityServerApiResourceScopes_IdentityServerApiResources_ApiResourceId", + column: x => x.ApiResourceId, + principalTable: "IdentityServerApiResources", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiResourceSecrets", + columns: table => new + { + ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), + Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), + Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), + Expiration = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiResourceSecrets", x => new { x.ApiResourceId, x.Type, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerApiResourceSecrets_IdentityServerApiResources_ApiResourceId", + column: x => x.ApiResourceId, + principalTable: "IdentityServerApiResources", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiScopeClaims", + columns: table => new + { + ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false), + Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiScopeClaims", x => new { x.ApiScopeId, x.Type }); + table.ForeignKey( + name: "FK_IdentityServerApiScopeClaims_IdentityServerApiScopes_ApiScopeId", + column: x => x.ApiScopeId, + principalTable: "IdentityServerApiScopes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerApiScopeProperties", + columns: table => new + { + ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false), + Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerApiScopeProperties", x => new { x.ApiScopeId, x.Key, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerApiScopeProperties_IdentityServerApiScopes_ApiScopeId", + column: x => x.ApiScopeId, + principalTable: "IdentityServerApiScopes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientClaims", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientClaims", x => new { x.ClientId, x.Type, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerClientClaims_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientCorsOrigins", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + Origin = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientCorsOrigins", x => new { x.ClientId, x.Origin }); + table.ForeignKey( + name: "FK_IdentityServerClientCorsOrigins_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientGrantTypes", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + GrantType = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientGrantTypes", x => new { x.ClientId, x.GrantType }); + table.ForeignKey( + name: "FK_IdentityServerClientGrantTypes_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientIdPRestrictions", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + Provider = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientIdPRestrictions", x => new { x.ClientId, x.Provider }); + table.ForeignKey( + name: "FK_IdentityServerClientIdPRestrictions_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientPostLogoutRedirectUris", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + PostLogoutRedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientPostLogoutRedirectUris", x => new { x.ClientId, x.PostLogoutRedirectUri }); + table.ForeignKey( + name: "FK_IdentityServerClientPostLogoutRedirectUris_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientProperties", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientProperties", x => new { x.ClientId, x.Key, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerClientProperties_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientRedirectUris", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + RedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientRedirectUris", x => new { x.ClientId, x.RedirectUri }); + table.ForeignKey( + name: "FK_IdentityServerClientRedirectUris_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientScopes", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientScopes", x => new { x.ClientId, x.Scope }); + table.ForeignKey( + name: "FK_IdentityServerClientScopes_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerClientSecrets", + columns: table => new + { + ClientId = table.Column(type: "uniqueidentifier", nullable: false), + Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), + Description = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + Expiration = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerClientSecrets", x => new { x.ClientId, x.Type, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerClientSecrets_IdentityServerClients_ClientId", + column: x => x.ClientId, + principalTable: "IdentityServerClients", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerIdentityResourceClaims", + columns: table => new + { + IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false), + Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerIdentityResourceClaims", x => new { x.IdentityResourceId, x.Type }); + table.ForeignKey( + name: "FK_IdentityServerIdentityResourceClaims_IdentityServerIdentityResources_IdentityResourceId", + column: x => x.IdentityResourceId, + principalTable: "IdentityServerIdentityResources", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "IdentityServerIdentityResourceProperties", + columns: table => new + { + IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false), + Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), + Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_IdentityServerIdentityResourceProperties", x => new { x.IdentityResourceId, x.Key, x.Value }); + table.ForeignKey( + name: "FK_IdentityServerIdentityResourceProperties_IdentityServerIdentityResources_IdentityResourceId", + column: x => x.IdentityResourceId, + principalTable: "IdentityServerIdentityResources", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerClients_ClientId", + table: "IdentityServerClients", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerDeviceFlowCodes_DeviceCode", + table: "IdentityServerDeviceFlowCodes", + column: "DeviceCode", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerDeviceFlowCodes_Expiration", + table: "IdentityServerDeviceFlowCodes", + column: "Expiration"); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerDeviceFlowCodes_UserCode", + table: "IdentityServerDeviceFlowCodes", + column: "UserCode"); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerPersistedGrants_Expiration", + table: "IdentityServerPersistedGrants", + column: "Expiration"); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerPersistedGrants_SubjectId_ClientId_Type", + table: "IdentityServerPersistedGrants", + columns: new[] { "SubjectId", "ClientId", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_IdentityServerPersistedGrants_SubjectId_SessionId_Type", + table: "IdentityServerPersistedGrants", + columns: new[] { "SubjectId", "SessionId", "Type" }); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs index 2435238741..a76fcdbbac 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -981,834 +981,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ConsentLifetime") - .HasColumnType("int"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("Id"); - - b.HasIndex("DeviceCode") - .IsUnique(); - - b.HasIndex("Expiration"); - - b.HasIndex("UserCode"); - - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => - { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ConsumedTime") - .HasColumnType("datetime2"); - - b.Property("CreationTime") - .HasColumnType("datetime2"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); - - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Type") - .IsRequired() - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.HasKey("Key"); - - b.HasIndex("Expiration"); - - b.HasIndex("SubjectId", "ClientId", "Type"); - - b.HasIndex("SubjectId", "SessionId", "Type"); - - b.ToTable("IdentityServerPersistedGrants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerIdentityResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("IdentityResourceId", "Type"); - - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("IdentityResourceId", "Key", "Value"); - - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); - }); - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => { b.Property("Id") @@ -2067,159 +1239,6 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => { b.HasOne("Volo.Abp.TenantManagement.Tenant", null) @@ -2264,52 +1283,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj index 50ebd61a24..b7d7fa47b2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -13,7 +13,6 @@ - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index 81d4bcffba..694f7e445f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -41,7 +41,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index fcaa4f5ab5..34cbcf1aec 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -37,7 +37,7 @@ namespace MyCompanyName.MyProjectName; [DependsOn( typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebModule), typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), @@ -101,16 +101,15 @@ public class MyProjectNameIdentityServerModule : AbpModule { Configure(options => { - // - options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Bootstrap", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}basic-theme{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web", Path.DirectorySeparatorChar))); - options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web.IdentityServer", Path.DirectorySeparatorChar))); - // - options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); }); } @@ -190,7 +189,6 @@ public class MyProjectNameIdentityServerModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseAuditing(); app.UseAbpSerilogEnrichers(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs index fa2327adb4..36191cd675 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs @@ -3,7 +3,6 @@ using Volo.Abp.AuditLogging.MongoDB; using Volo.Abp.BackgroundJobs.MongoDB; using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.Identity.MongoDB; -using Volo.Abp.IdentityServer.MongoDB; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.SettingManagement.MongoDB; @@ -17,7 +16,6 @@ namespace MyCompanyName.MyProjectName.MongoDB; typeof(AbpPermissionManagementMongoDbModule), typeof(AbpSettingManagementMongoDbModule), typeof(AbpIdentityMongoDbModule), - typeof(AbpIdentityServerMongoDbModule), typeof(AbpBackgroundJobsMongoDbModule), typeof(AbpAuditLoggingMongoDbModule), typeof(AbpTenantManagementMongoDbModule), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj index bc48d70fd6..f5398d1aa1 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj @@ -12,7 +12,6 @@ - diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 976724f276..a267fd6ecc 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -45,7 +45,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index b6daf2a4a8..82e7a4b7bd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -47,7 +47,7 @@ namespace MyCompanyName.MyProjectName.Web; typeof(AbpAutofacModule), typeof(AbpIdentityWebModule), typeof(AbpSettingManagementWebModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpTenantManagementWebModule), @@ -134,8 +134,8 @@ public class MyProjectNameWebModule : AbpModule { Configure(options => { - // - options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.UI", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Bootstrap", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); @@ -146,8 +146,8 @@ public class MyProjectNameWebModule : AbpModule options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}identity{0}src{0}Volo.Abp.Identity.Web", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}tenant-management{0}src{0}Volo.Abp.TenantManagement.Web", Path.DirectorySeparatorChar))); - // - options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); + // + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application.Contracts")); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Application")); @@ -239,7 +239,6 @@ public class MyProjectNameWebModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); app.UseAbpSwaggerUI(options => diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs index fdd6bad274..924ee6eb79 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyProjectNameTestBaseModule.cs @@ -4,7 +4,6 @@ using Volo.Abp.Authorization; using Volo.Abp.Autofac; using Volo.Abp.BackgroundJobs; using Volo.Abp.Data; -using Volo.Abp.IdentityServer; using Volo.Abp.Modularity; using Volo.Abp.Threading; @@ -20,15 +19,7 @@ public class MyProjectNameTestBaseModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { - PreConfigure(options => - { - options.AddDeveloperSigningCredential = false; - }); - PreConfigure(identityServerBuilder => - { - identityServerBuilder.AddDeveloperSigningCredential(false, System.Guid.NewGuid().ToString()); - }); } public override void ConfigureServices(ServiceConfigurationContext context) From c59b5b25dfe68696367837e866136fe7b758587b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 16 May 2022 11:24:57 +0300 Subject: [PATCH 12/89] Installed OpenIddict and tested with the console test app --- ...anyName.MyProjectName.Domain.Shared.csproj | 1 + .../MyProjectNameDomainSharedModule.cs | 4 +- .../MyCompanyName.MyProjectName.Domain.csproj | 2 + .../MyProjectNameDomainModule.cs | 4 + .../OpenIddictDataSeedContributor.cs | 151 ++ .../MyProjectNameDbContext.cs | 2 + .../MyProjectNameEntityFrameworkCoreModule.cs | 2 + ...31_Installed_OpenIddict_Module.Designer.cs | 1648 +++++++++++++++++ ...20516081531_Installed_OpenIddict_Module.cs | 189 ++ .../MyProjectNameDbContextModelSnapshot.cs | 353 ++++ ...e.MyProjectName.EntityFrameworkCore.csproj | 1 + .../MyProjectNameHttpApiHostModule.cs | 8 +- ...nyName.MyProjectName.IdentityServer.csproj | 4 +- .../MyProjectNameIdentityServerModule.cs | 41 +- .../MongoDb/MyProjectNameMongoDbModule.cs | 2 + ...MyCompanyName.MyProjectName.MongoDB.csproj | 1 + .../appsettings.json | 4 +- 17 files changed, 2411 insertions(+), 6 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.Designer.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.cs diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 06eb1f75ea..3e5eadd08d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -16,6 +16,7 @@ + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs index 3b7322b3fc..8c71be1006 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs @@ -6,6 +6,7 @@ using Volo.Abp.Identity; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; using Volo.Abp.PermissionManagement; using Volo.Abp.SettingManagement; using Volo.Abp.TenantManagement; @@ -19,9 +20,10 @@ namespace MyCompanyName.MyProjectName; typeof(AbpBackgroundJobsDomainSharedModule), typeof(AbpFeatureManagementDomainSharedModule), typeof(AbpIdentityDomainSharedModule), + typeof(AbpOpenIddictDomainSharedModule), typeof(AbpPermissionManagementDomainSharedModule), typeof(AbpSettingManagementDomainSharedModule), - typeof(AbpTenantManagementDomainSharedModule) + typeof(AbpTenantManagementDomainSharedModule) )] public class MyProjectNameDomainSharedModule : AbpModule { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj index 317f494200..85787e9ffd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyCompanyName.MyProjectName.Domain.csproj @@ -20,6 +20,8 @@ + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs index 148f5da761..7bb1c3014b 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/MyProjectNameDomainModule.cs @@ -8,7 +8,9 @@ using Volo.Abp.FeatureManagement; using Volo.Abp.Identity; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict; using Volo.Abp.PermissionManagement.Identity; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.TenantManagement; @@ -20,6 +22,8 @@ namespace MyCompanyName.MyProjectName; typeof(AbpBackgroundJobsDomainModule), typeof(AbpFeatureManagementDomainModule), typeof(AbpIdentityDomainModule), + typeof(AbpOpenIddictDomainModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpPermissionManagementDomainIdentityModule), typeof(AbpSettingManagementDomainModule), typeof(AbpTenantManagementDomainModule), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs new file mode 100644 index 0000000000..653b27abef --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -0,0 +1,151 @@ +using System; +using System.Globalization; +using System.Threading.Tasks; +using OpenIddict.Abstractions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy; + +namespace MyCompanyName.MyProjectName.OpenIddict; + +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly ICurrentTenant _currentTenant; + private readonly IOpenIddictApplicationManager _applicationManager; + private readonly IOpenIddictScopeManager _scopeManager; + + public OpenIddictDataSeedContributor( + ICurrentTenant currentTenant, + IOpenIddictApplicationManager applicationManager, + IOpenIddictScopeManager scopeManager) + { + _currentTenant = currentTenant; + _applicationManager = applicationManager; + _scopeManager = scopeManager; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _scopeManager.FindByNameAsync("AbpAPI") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() + { + Name = "AbpAPI", + DisplayName = "Abp API access", + DisplayNames = + { + [CultureInfo.GetCultureInfo("zh-Hans")] = "演示 API 访问", + [CultureInfo.GetCultureInfo("tr")] = "API erişimi" + }, + Resources = + { + "AbpAPIResource" + } + }); + } + + if (await _applicationManager.FindByClientIdAsync("AbpApp") == null) + { + await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor + { + ClientId = "AbpApp", + ClientSecret = "1q2w3e*", + ConsentType = OpenIddictConstants.ConsentTypes.Explicit, + DisplayName = "Abp Application", + PostLogoutRedirectUris = + { + new Uri("https://localhost:44302/signout-callback-oidc"), + new Uri("http://localhost:4200") + }, + RedirectUris = + { + new Uri("https://localhost:44302/signin-oidc"), + new Uri("http://localhost:4200") + }, + Permissions = + { + OpenIddictConstants.Permissions.Endpoints.Authorization, + OpenIddictConstants.Permissions.Endpoints.Token, + OpenIddictConstants.Permissions.Endpoints.Device, + OpenIddictConstants.Permissions.Endpoints.Introspection, + OpenIddictConstants.Permissions.Endpoints.Revocation, + OpenIddictConstants.Permissions.Endpoints.Logout, + + OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, + OpenIddictConstants.Permissions.GrantTypes.Implicit, + OpenIddictConstants.Permissions.GrantTypes.Password, + OpenIddictConstants.Permissions.GrantTypes.RefreshToken, + OpenIddictConstants.Permissions.GrantTypes.DeviceCode, + OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, + + OpenIddictConstants.Permissions.ResponseTypes.Code, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeToken, + OpenIddictConstants.Permissions.ResponseTypes.IdToken, + OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.None, + OpenIddictConstants.Permissions.ResponseTypes.Token, + + OpenIddictConstants.Permissions.Scopes.Roles, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Prefixes.Scope + "AbpAPI" + } + }); + } + + if (await _applicationManager.FindByClientIdAsync("AbpBlazorWASMApp") == null) + { + await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor + { + ClientId = "AbpBlazorWASMApp", + ConsentType = OpenIddictConstants.ConsentTypes.Explicit, + DisplayName = "Abp Blazor WASM Application", + PostLogoutRedirectUris = + { + new Uri("https://localhost:44304/authentication/logout-callback") + }, + RedirectUris = + { + new Uri("https://localhost:44304/authentication/login-callback") + }, + Permissions = + { + OpenIddictConstants.Permissions.Endpoints.Authorization, + OpenIddictConstants.Permissions.Endpoints.Token, + OpenIddictConstants.Permissions.Endpoints.Device, + OpenIddictConstants.Permissions.Endpoints.Introspection, + OpenIddictConstants.Permissions.Endpoints.Revocation, + OpenIddictConstants.Permissions.Endpoints.Logout, + + OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, + OpenIddictConstants.Permissions.GrantTypes.Implicit, + OpenIddictConstants.Permissions.GrantTypes.Password, + OpenIddictConstants.Permissions.GrantTypes.RefreshToken, + OpenIddictConstants.Permissions.GrantTypes.DeviceCode, + OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, + + OpenIddictConstants.Permissions.ResponseTypes.Code, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeToken, + OpenIddictConstants.Permissions.ResponseTypes.IdToken, + OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.None, + OpenIddictConstants.Permissions.ResponseTypes.Token, + + OpenIddictConstants.Permissions.Scopes.Roles, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Phone, + + OpenIddictConstants.Permissions.Prefixes.Scope + "AbpAPI" + } + }); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs index bd091181dd..46f1217ffa 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameDbContext.cs @@ -7,6 +7,7 @@ using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement; @@ -68,6 +69,7 @@ public class MyProjectNameDbContext : builder.ConfigureBackgroundJobs(); builder.ConfigureAuditLogging(); builder.ConfigureIdentity(); + builder.ConfigureOpenIddict(); builder.ConfigureFeatureManagement(); builder.ConfigureTenantManagement(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs index 6dfef5c44c..0a8ca0b8c8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreModule.cs @@ -7,6 +7,7 @@ using Volo.Abp.EntityFrameworkCore.SqlServer; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; @@ -16,6 +17,7 @@ namespace MyCompanyName.MyProjectName.EntityFrameworkCore; [DependsOn( typeof(MyProjectNameDomainModule), typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpEntityFrameworkCoreSqlServerModule), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.Designer.cs new file mode 100644 index 0000000000..d6697099be --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.Designer.cs @@ -0,0 +1,1648 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using MyCompanyName.MyProjectName.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace MyCompanyName.MyProjectName.Migrations +{ + [DbContext(typeof(MyProjectNameDbContext))] + [Migration("20220516081531_Installed_OpenIddict_Module")] + partial class Installed_OpenIddict_Module + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.cs new file mode 100644 index 0000000000..01690ca977 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20220516081531_Installed_OpenIddict_Module.cs @@ -0,0 +1,189 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace MyCompanyName.MyProjectName.Migrations +{ + public partial class Installed_OpenIddict_Module : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "OpenIddictApplications", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictScopes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictAuthorizations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "OpenIddictScopes"); + + migrationBuilder.DropTable( + name: "OpenIddictTokens"); + + migrationBuilder.DropTable( + name: "OpenIddictAuthorizations"); + + migrationBuilder.DropTable( + name: "OpenIddictApplications"); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs index a76fcdbbac..b0cbbaedaa 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -981,6 +981,341 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => { b.Property("Id") @@ -1239,6 +1574,24 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => { b.HasOne("Volo.Abp.TenantManagement.Tenant", null) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj index b7d7fa47b2..c7de8d26b5 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -17,6 +17,7 @@ + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index db8ba2982e..45fccf2c90 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; @@ -10,6 +11,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.IdentityModel.Tokens; using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.MultiTenancy; using StackExchange.Redis; @@ -100,7 +102,11 @@ public class MyProjectNameHttpApiHostModule : AbpModule { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); - options.Audience = "MyProjectName"; + options.Audience = "AbpAPIResource"; + + // See OpenIddictServerModule`s PreConfigureServices method. + options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); + options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index 694f7e445f..3119144529 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -34,6 +34,8 @@ + + @@ -41,7 +43,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index 34cbcf1aec..97b39dff55 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -1,12 +1,14 @@ using System; using System.IO; using System.Linq; +using System.Text; using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.IdentityModel.Tokens; using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.MultiTenancy; @@ -28,6 +30,8 @@ using Volo.Abp.Caching; using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; +using Volo.Abp.OpenIddict.WildcardDomains; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.UI; using Volo.Abp.VirtualFileSystem; @@ -37,7 +41,7 @@ namespace MyCompanyName.MyProjectName; [DependsOn( typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpAccountWebModule), + typeof(AbpAccountWebOpenIddictModule), typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), @@ -46,10 +50,44 @@ namespace MyCompanyName.MyProjectName; )] public class MyProjectNameIdentityServerModule : AbpModule { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(builder => + { + //https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + //https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html + builder.AddSigningKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78"))); + builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); + }); + + PreConfigure(options => + { + options.EnableWildcardDomainSupport = true; + options.WildcardDomainsFormat.Add("https://{0}.abp.io/signin-oidc"); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("AbpAPIResource"); + + options.UseLocalServer(); + + options.UseAspNetCore(); + }); + }); + } + public override void ConfigureServices(ServiceConfigurationContext context) { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); + + Configure(options => + { + options.AddDevelopmentEncryptionAndSigningCertificate = false; + }); Configure(options => { @@ -108,6 +146,7 @@ public class MyProjectNameIdentityServerModule : AbpModule options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}framework{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}basic-theme{0}src{0}Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}..{0}..{0}..{0}modules{0}account{0}src{0}Volo.Abp.Account.Web.OpenIddict", Path.DirectorySeparatorChar))); // options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain.Shared")); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Domain")); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs index 36191cd675..d6bfb8448f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MyProjectNameMongoDbModule.cs @@ -4,6 +4,7 @@ using Volo.Abp.BackgroundJobs.MongoDB; using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.Identity.MongoDB; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict.MongoDB; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.SettingManagement.MongoDB; using Volo.Abp.TenantManagement.MongoDB; @@ -16,6 +17,7 @@ namespace MyCompanyName.MyProjectName.MongoDB; typeof(AbpPermissionManagementMongoDbModule), typeof(AbpSettingManagementMongoDbModule), typeof(AbpIdentityMongoDbModule), + typeof(AbpOpenIddictMongoDbModule), typeof(AbpBackgroundJobsMongoDbModule), typeof(AbpAuditLoggingMongoDbModule), typeof(AbpTenantManagementMongoDbModule), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj index f5398d1aa1..01cca1665c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MyCompanyName.MyProjectName.MongoDB.csproj @@ -16,6 +16,7 @@ + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json index 9214292fa9..8a299f9f2b 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -7,12 +7,12 @@ "IdentityClients": { "Default": { "GrantType": "password", - "ClientId": "MyProjectName_App", + "ClientId": "AbpApp", "ClientSecret": "1q2w3e*", "UserName": "admin", "UserPassword": "1q2w3E*", "Authority": "https://localhost:44301", - "Scope": "MyProjectName" + "Scope": "AbpAPI profile roles email phone offline_access" } } } \ No newline at end of file From cecc2c1baa53675906bbd96ac27e476783821bad Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 16 May 2022 16:45:03 +0800 Subject: [PATCH 13/89] Add `abp.globalFeatures.isEnabled` to `abp.js` --- .../en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md | 11 +++++++---- .../ApplicationGlobalFeatureConfigurationDto.cs | 3 --- .../AbpApplicationConfigurationAppService.cs | 6 ------ npm/packs/core/src/abp.js | 10 ++++++++++ 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md b/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md index 2f226724b8..7b451addcd 100644 --- a/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md +++ b/docs/en/UI/AspNetCore/JavaScript-API/GlobalFeatures.md @@ -7,15 +7,18 @@ ## Usage ````js +//Gets all enabled global features. > abp.globalFeatures.enabledFeatures [ 'Shopping.Payment', 'Ecommerce.Subscription' ] -> abp.globalFeatures.moduleEnabledFeatures -{ Ecommerce } +//Check the global feature is enabled +> abp.globalFeatures.isEnabled('Ecommerce.Subscription') -> abp.globalFeatures.moduleEnabledFeatures.Ecommerce +true -[ 'Ecommerce.Subscription', 'Ecommerce.Invoice' ] +> abp.globalFeatures.isEnabled('My.Subscription') + +false ```` diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationGlobalFeatureConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationGlobalFeatureConfigurationDto.cs index e911cd911d..9854e85315 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationGlobalFeatureConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationGlobalFeatureConfigurationDto.cs @@ -8,11 +8,8 @@ public class ApplicationGlobalFeatureConfigurationDto { public HashSet EnabledFeatures { get; set; } - public Dictionary> ModuleEnabledFeatures { get; set; } - public ApplicationGlobalFeatureConfigurationDto() { EnabledFeatures = new HashSet(); - ModuleEnabledFeatures = new Dictionary>(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs index bfa2e6a285..b80a288e81 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -295,15 +295,9 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp result.EnabledFeatures.AddIfNotContains(enabledFeatureName); } - foreach (var module in GlobalFeatureManager.Instance.Modules) - { - result.ModuleEnabledFeatures.AddIfNotContains(new KeyValuePair>(module.Key, module.Value.GetFeatures().Select(x => x.FeatureName).ToList())); - } - return Task.FromResult(result); } - protected virtual async Task GetTimingConfigAsync() { var windowsTimeZoneId = await _settingProvider.GetOrNullAsync(TimingSettingNames.TimeZone); diff --git a/npm/packs/core/src/abp.js b/npm/packs/core/src/abp.js index 7cb0782f1a..f715b5004c 100644 --- a/npm/packs/core/src/abp.js +++ b/npm/packs/core/src/abp.js @@ -773,4 +773,14 @@ var abp = abp || {}; return abp.features.values[name]; }; + /* GLOBAL FEATURES *************************************************/ + + abp.globalFeatures = abp.globalFeatures || {}; + + abp.globalFeatures.enabledFeatures = abp.globalFeatures.enabledFeatures || {}; + + abp.globalFeatures.isEnabled = function(name){ + return abp.globalFeatures.enabledFeatures.indexOf(name) != -1; + } + })(); From b837648472c7aaceb5966793e35300ea82af371a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 16 May 2022 12:14:15 +0300 Subject: [PATCH 14/89] Revisited OpenIddictDataSeedContributor --- .../appsettings.json | 15 +- .../OpenIddictDataSeedContributor.cs | 422 +++++++++++++----- .../MyProjectNameHttpApiHostModule.cs | 2 +- .../appsettings.json | 4 +- 4 files changed, 322 insertions(+), 121 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json index 7bd454bab3..b3c3ee52e0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json @@ -2,22 +2,21 @@ "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName;Trusted_Connection=True" }, - "IdentityServer": { - "Clients": { + "OpenIddict": { + "Applications": { "MyProjectName_Web": { "ClientId": "MyProjectName_Web", - "ClientSecret": "1q2w3e*", - "RootUrl": "https://localhost:44302" + "RootUrl": "https://localhost:44302/" + }, + "MyProjectName_Blazor": { + "ClientId": "MyProjectName_Blazor", + "RootUrl": "https://localhost:44307/" }, "MyProjectName_App": { "ClientId": "MyProjectName_App", "ClientSecret": "1q2w3e*", "RootUrl": "http://localhost:4200" }, - "MyProjectName_Blazor": { - "ClientId": "MyProjectName_Blazor", - "RootUrl": "https://localhost:44307" - }, "MyProjectName_BlazorServerTiered": { "ClientId": "MyProjectName_BlazorServerTiered", "ClientSecret": "1q2w3e*", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index 653b27abef..919fd136fa 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -1,151 +1,353 @@ using System; -using System.Globalization; +using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; +using JetBrains.Annotations; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Localization; using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; -using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; namespace MyCompanyName.MyProjectName.OpenIddict; +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency { - private readonly ICurrentTenant _currentTenant; + private readonly IConfiguration _configuration; private readonly IOpenIddictApplicationManager _applicationManager; private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; public OpenIddictDataSeedContributor( - ICurrentTenant currentTenant, - IOpenIddictApplicationManager applicationManager, - IOpenIddictScopeManager scopeManager) + IConfiguration configuration, + IOpenIddictApplicationManager applicationManager, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l) { - _currentTenant = currentTenant; + _configuration = configuration; _applicationManager = applicationManager; _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; } - public async Task SeedAsync(DataSeedContext context) + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) { - if (await _scopeManager.FindByNameAsync("AbpAPI") == null) + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _scopeManager.FindByNameAsync("MyProjectName") == null) { - await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor { - Name = "AbpAPI", - DisplayName = "Abp API access", - DisplayNames = - { - [CultureInfo.GetCultureInfo("zh-Hans")] = "演示 API 访问", - [CultureInfo.GetCultureInfo("tr")] = "API erişimi" - }, + Name = "MyProjectName", + DisplayName = "MyProjectName API", Resources = { - "AbpAPIResource" + "MyProjectName" } }); } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "MyProjectName" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); - if (await _applicationManager.FindByClientIdAsync("AbpApp") == null) + //Web Client + var webClientId = configurationSection["MyProjectName_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) { - await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor - { - ClientId = "AbpApp", - ClientSecret = "1q2w3e*", - ConsentType = OpenIddictConstants.ConsentTypes.Explicit, - DisplayName = "Abp Application", - PostLogoutRedirectUris = - { - new Uri("https://localhost:44302/signout-callback-oidc"), - new Uri("http://localhost:4200") + var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); + + /* MyProjectName_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + await CreateApplicationAsync( + name: webClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Explicit, + displayName: "Web Application", + secret: null, + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Implicit }, - RedirectUris = + scopes: commonScopes, + redirectUri: $"{webClientRootUrl}signin-oidc", + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + name: consoleAndAngularClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Explicit, + displayName: "Console Test / Angular Application", + secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List { - new Uri("https://localhost:44302/signin-oidc"), - new Uri("http://localhost:4200") + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + "LinkLogin", + "Impersonation" }, - Permissions = - { - OpenIddictConstants.Permissions.Endpoints.Authorization, - OpenIddictConstants.Permissions.Endpoints.Token, - OpenIddictConstants.Permissions.Endpoints.Device, - OpenIddictConstants.Permissions.Endpoints.Introspection, - OpenIddictConstants.Permissions.Endpoints.Revocation, - OpenIddictConstants.Permissions.Endpoints.Logout, - - OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, - OpenIddictConstants.Permissions.GrantTypes.Implicit, - OpenIddictConstants.Permissions.GrantTypes.Password, - OpenIddictConstants.Permissions.GrantTypes.RefreshToken, - OpenIddictConstants.Permissions.GrantTypes.DeviceCode, - OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, - - OpenIddictConstants.Permissions.ResponseTypes.Code, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeToken, - OpenIddictConstants.Permissions.ResponseTypes.IdToken, - OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.None, - OpenIddictConstants.Permissions.ResponseTypes.Token, - - OpenIddictConstants.Permissions.Scopes.Roles, - OpenIddictConstants.Permissions.Scopes.Profile, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Phone, - OpenIddictConstants.Permissions.Prefixes.Scope + "AbpAPI" - } - }); + scopes: commonScopes, + redirectUri: webClientRootUrl, + postLogoutRedirectUri: webClientRootUrl + ); } - - if (await _applicationManager.FindByClientIdAsync("AbpBlazorWASMApp") == null) + + // Blazor Client + var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; + if (!blazorClientId.IsNullOrWhiteSpace()) { - await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor - { - ClientId = "AbpBlazorWASMApp", - ConsentType = OpenIddictConstants.ConsentTypes.Explicit, - DisplayName = "Abp Blazor WASM Application", - PostLogoutRedirectUris = + var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: blazorClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Explicit, + displayName: "Blazor Application", + secret: null, + grantTypes: new List { - new Uri("https://localhost:44304/authentication/logout-callback") + OpenIddictConstants.GrantTypes.AuthorizationCode, }, - RedirectUris = + scopes: commonScopes, + redirectUri: $"{blazorRootUrl}/authentication/login-callback", + postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" + ); + } + + // Swagger Client + var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: swaggerClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Explicit, + displayName: "Blazor Application", + secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + grantTypes: new List { - new Uri("https://localhost:44304/authentication/login-callback") + OpenIddictConstants.GrantTypes.AuthorizationCode, }, - Permissions = - { - OpenIddictConstants.Permissions.Endpoints.Authorization, - OpenIddictConstants.Permissions.Endpoints.Token, - OpenIddictConstants.Permissions.Endpoints.Device, - OpenIddictConstants.Permissions.Endpoints.Introspection, - OpenIddictConstants.Permissions.Endpoints.Revocation, - OpenIddictConstants.Permissions.Endpoints.Logout, - - OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, - OpenIddictConstants.Permissions.GrantTypes.Implicit, - OpenIddictConstants.Permissions.GrantTypes.Password, - OpenIddictConstants.Permissions.GrantTypes.RefreshToken, - OpenIddictConstants.Permissions.GrantTypes.DeviceCode, - OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, - - OpenIddictConstants.Permissions.ResponseTypes.Code, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeToken, - OpenIddictConstants.Permissions.ResponseTypes.IdToken, - OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.None, - OpenIddictConstants.Permissions.ResponseTypes.Token, - - OpenIddictConstants.Permissions.Scopes.Roles, - OpenIddictConstants.Permissions.Scopes.Profile, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Phone, - - OpenIddictConstants.Permissions.Prefixes.Scope + "AbpAPI" + scopes: commonScopes, + redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html" + ); + } + } + + private async Task CreateApplicationAsync( + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string secret, + List grantTypes, + List scopes, + string redirectUri = null, + string postLogoutRedirectUri = null, + List permissions = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + if (!string.IsNullOrEmpty(name) && await _applicationManager.FindByClientIdAsync(name) != null) + { + return; + //throw new BusinessException(L["TheClientIdentifierIsAlreadyTakenByAnotherApplication"]); + } + + var client = await _applicationManager.FindByClientIdAsync(name); + if (client == null) + { + var application = new OpenIddictApplicationDescriptor + { + ClientId = name, + Type = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new [] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All(grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); } - }); + } + + if (!redirectUri.IsNullOrWhiteSpace() || !postLogoutRedirectUri.IsNullOrWhiteSpace()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); + } + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + } + + var buildInScopes = new [] + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (redirectUri != null) + { + if (!redirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + } + + if (postLogoutRedirectUri != null) + { + if (!postLogoutRedirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + await _applicationManager.CreateAsync(application); } } -} + +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 45fccf2c90..763856f427 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -102,7 +102,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule { options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); - options.Audience = "AbpAPIResource"; + options.Audience = "MyProjectName"; // See OpenIddictServerModule`s PreConfigureServices method. options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json index 8a299f9f2b..9214292fa9 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -7,12 +7,12 @@ "IdentityClients": { "Default": { "GrantType": "password", - "ClientId": "AbpApp", + "ClientId": "MyProjectName_App", "ClientSecret": "1q2w3e*", "UserName": "admin", "UserPassword": "1q2w3E*", "Authority": "https://localhost:44301", - "Scope": "AbpAPI profile roles email phone offline_access" + "Scope": "MyProjectName" } } } \ No newline at end of file From c736c57d3528fc21babab05e927ee1a90f411781 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 16 May 2022 17:15:04 +0800 Subject: [PATCH 15/89] Sending test email in the setting page with MVC and Blazor UI --- .../IEmailSettingsAppService.cs | 2 + .../SettingManagement/SendTestEmailInput.cs | 17 ++++ ...gManagementPermissionDefinitionProvider.cs | 8 +- .../SettingManagementPermissions.cs | 2 + .../EmailSettingsAppService.cs | 13 ++- .../EmailSettingGroupViewComponent.razor | 91 ++++++++++++++++--- .../EmailSettingGroupViewComponent.razor.cs | 80 ++++++++++++++++ ...ettingManagementBlazorAutoMapperProfile.cs | 2 + .../Resources/AbpSettingManagement/en.json | 9 ++ .../Resources/AbpSettingManagement/tr.json | 9 ++ .../AbpSettingManagement/zh-Hans.json | 9 ++ .../AbpSettingManagement/zh-Hant.json | 9 ++ .../EmailSettingsClientProxy.Generated.cs | 8 ++ .../settingManagement-generate-proxy.json | 39 ++++++++ .../EmailSettingsController.cs | 6 ++ .../EmailSettingGroup/Default.cshtml | 9 ++ .../Components/EmailSettingGroup/Default.js | 31 ++++++- .../SendTestEmailModal.cshtml | 25 +++++ .../SendTestEmailModal.cshtml.cs | 63 +++++++++++++ .../SettingManagementWebAutoMapperProfile.cs | 2 + .../client-proxies/settingManagement-proxy.js | 9 ++ 21 files changed, 422 insertions(+), 21 deletions(-) create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SendTestEmailInput.cs create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml create mode 100644 modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/IEmailSettingsAppService.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/IEmailSettingsAppService.cs index 72d995b251..c318f568ec 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/IEmailSettingsAppService.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/IEmailSettingsAppService.cs @@ -8,4 +8,6 @@ public interface IEmailSettingsAppService : IApplicationService Task GetAsync(); Task UpdateAsync(UpdateEmailSettingsDto input); + + Task SendTestEmailAsync(SendTestEmailInput input); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SendTestEmailInput.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SendTestEmailInput.cs new file mode 100644 index 0000000000..d8a4d2aa4a --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SendTestEmailInput.cs @@ -0,0 +1,17 @@ +using System.ComponentModel.DataAnnotations; + +namespace Volo.Abp.SettingManagement; + +public class SendTestEmailInput +{ + [Required] + public string SenderEmailAddress { get; set; } + + [Required] + public string TargetEmailAddress { get; set; } + + [Required] + public string Subject { get; set; } + + public string Body { get; set; } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissionDefinitionProvider.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissionDefinitionProvider.cs index d624089989..81e58503e7 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissionDefinitionProvider.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissionDefinitionProvider.cs @@ -10,9 +10,11 @@ public class SettingManagementPermissionDefinitionProvider : PermissionDefinitio { var moduleGroup = context.AddGroup(SettingManagementPermissions.GroupName, L("Permission:SettingManagement")); - moduleGroup - .AddPermission(SettingManagementPermissions.Emailing, L("Permission:Emailing")) - .StateCheckers.Add(new AllowTenantsToChangeEmailSettingsFeatureSimpleStateChecker()); + var emailPermission = moduleGroup + .AddPermission(SettingManagementPermissions.Emailing, L("Permission:Emailing")); + emailPermission.StateCheckers.Add(new AllowTenantsToChangeEmailSettingsFeatureSimpleStateChecker()); + + emailPermission.AddChild(SettingManagementPermissions.EmailingTest, L("Permission:EmailingTest")); } private static LocalizableString L(string name) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissions.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissions.cs index dd8e028b45..43f0c5a104 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissions.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissions.cs @@ -7,6 +7,8 @@ public class SettingManagementPermissions public const string GroupName = "SettingManagement"; public const string Emailing = GroupName + ".Emailing"; + + public const string EmailingTest = Emailing + ".Test"; public static string[] GetAll() { diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/EmailSettingsAppService.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/EmailSettingsAppService.cs index 92ee36cb04..fe67975517 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/EmailSettingsAppService.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/EmailSettingsAppService.cs @@ -11,10 +11,13 @@ namespace Volo.Abp.SettingManagement; public class EmailSettingsAppService : SettingManagementAppServiceBase, IEmailSettingsAppService { protected ISettingManager SettingManager { get; } + + protected IEmailSender EmailSender { get; } - public EmailSettingsAppService(ISettingManager settingManager) + public EmailSettingsAppService(ISettingManager settingManager, IEmailSender emailSender) { SettingManager = settingManager; + EmailSender = emailSender; } public virtual async Task GetAsync() @@ -60,6 +63,14 @@ public class EmailSettingsAppService : SettingManagementAppServiceBase, IEmailSe await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.DefaultFromDisplayName, input.DefaultFromDisplayName); } + [Authorize(SettingManagementPermissions.EmailingTest)] + public virtual async Task SendTestEmailAsync(SendTestEmailInput input) + { + await CheckFeatureAsync(); + + await EmailSender.SendAsync(input.SenderEmailAddress, input.TargetEmailAddress, input.Subject, input.Body); + } + protected virtual async Task CheckFeatureAsync() { await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.Enable); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor index 36d5857776..e5a2313de0 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor @@ -13,7 +13,7 @@ @L["DefaultFromDisplayName"] * - + @@ -23,17 +23,17 @@ @L["DefaultFromAddress"] * - + - @L["SmtpHost"] + @L["SmtpHost"] - + @@ -58,30 +58,30 @@ { - @L["SmtpDomain"] + @L["SmtpDomain"] - + - @L["SmtpUserName"] + @L["SmtpUserName"] - + - @L["SmtpPassword"] + @L["SmtpPassword"] - + @@ -92,8 +92,75 @@ - + + @if (HasSendTestEmailPermission) + { + + } + -} + + @if (HasSendTestEmailPermission) + { + + +
+ + @L["SendTestEmail"] + + + + + + + @L["SenderEmailAddress"] + + + + + + + + + + @L["TargetEmailAddress"] + + + + + + + + + + @L["Subject"] + + + + + + + + + + @L["Body"] + + + + + + + + + + + + + +
+
+
+ } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs index 1cd8ceeb1b..bfc3b47fd7 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Components; using Volo.Abp.AspNetCore.Components.Messages; using Volo.Abp.AspNetCore.Components.Web.Configuration; using Volo.Abp.Auditing; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.SettingManagement.Localization; namespace Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement.EmailSettingGroup; @@ -14,6 +15,9 @@ public partial class EmailSettingGroupViewComponent { [Inject] protected IEmailSettingsAppService EmailSettingsAppService { get; set; } + + [Inject] + protected IPermissionChecker PermissionChecker { get; set; } [Inject] private ICurrentApplicationConfigurationCacheResetService CurrentApplicationConfigurationCacheResetService { get; set; } @@ -23,7 +27,17 @@ public partial class EmailSettingGroupViewComponent protected UpdateEmailSettingsViewModel EmailSettings; + protected SendTestEmailViewModel SendTestEmailInput; + protected Validations EmailSettingValidation; + + protected Validations EmailSettingTestValidation; + + protected Modal SendTestEmailModal; + + protected bool HasSendTestEmailPermission { get; set; } + + public EmailSettingGroupViewComponent() { @@ -36,6 +50,8 @@ public partial class EmailSettingGroupViewComponent try { EmailSettings = ObjectMapper.Map(await EmailSettingsAppService.GetAsync()); + HasSendTestEmailPermission = await PermissionChecker.IsGrantedAsync(SettingManagementPermissions.EmailingTest); + SendTestEmailInput = new SendTestEmailViewModel(); } catch (Exception ex) { @@ -64,6 +80,52 @@ public partial class EmailSettingGroupViewComponent } } + protected virtual async Task OpenSendTestEmailModalAsync() + { + try + { + await EmailSettingTestValidation.ClearAll(); + var emailSettings = await EmailSettingsAppService.GetAsync(); + SendTestEmailInput = new SendTestEmailViewModel + { + SenderEmailAddress = emailSettings.DefaultFromAddress, + TargetEmailAddress = CurrentUser.Email, + Subject = L["TestEmailSubject", new Random().Next(1000, 9999)], + Body = L["TestEmailBody"] + }; + + await SendTestEmailModal.Show(); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + + protected virtual Task CloseSendTestEmailModalAsync() + { + return InvokeAsync(SendTestEmailModal.Hide); + } + + protected virtual async Task SendTestEmailAsync() + { + try + { + if (!await EmailSettingTestValidation.ValidateAll()) + { + return; + } + + await EmailSettingsAppService.SendTestEmailAsync(ObjectMapper.Map(SendTestEmailInput)); + + await Notify.Success(L["SuccessfullySent"]); + } + catch (Exception ex) + { + await HandleErrorAsync(ex); + } + } + public class UpdateEmailSettingsViewModel { [MaxLength(256)] @@ -104,4 +166,22 @@ public partial class EmailSettingGroupViewComponent [Display(Name = "DefaultFromDisplayName")] public string DefaultFromDisplayName { get; set; } } + + public class SendTestEmailViewModel + { + [Required] + [Display(Name = "SenderEmailAddress")] + public string SenderEmailAddress { get; set; } + + [Required] + [Display(Name = "TargetEmailAddress")] + public string TargetEmailAddress { get; set; } + + [Required] + [Display(Name = "Subject")] + public string Subject { get; set; } + + [Display(Name = "Body")] + public string Body { get; set; } + } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs index 38279c09d4..604996e478 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/SettingManagementBlazorAutoMapperProfile.cs @@ -9,5 +9,7 @@ public class SettingManagementBlazorAutoMapperProfile : Profile { CreateMap(); CreateMap(); + + CreateMap(); } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json index bec50ed27e..ccc26b5d2d 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json @@ -5,6 +5,15 @@ "SuccessfullySaved": "Successfully saved", "Permission:SettingManagement": "Setting Management", "Permission:Emailing": "Emailing", + "Permission:EmailingTest": "Emailing test", + "SendTestEmail": "Send test email", + "SenderEmailAddress": "Sender email address", + "TargetEmailAddress": "Target email address", + "Subject": "Subject", + "Body": "Body", + "TestEmailSubject": "Test email {0}", + "TestEmailBody": "Test email body message here", + "SuccessfullySent": "Successfully sent", "Menu:Emailing": "Emailing", "SmtpHost": "Host", "SmtpPort": "Port", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json index 7f1ae1c0b7..4dfebf4321 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json @@ -5,6 +5,15 @@ "SuccessfullySaved": "Başarıyla Kaydedildi", "Permission:SettingManagement": "Ayarlar yönetimi", "Permission:Emailing": "Email", + "Permission:EmailingTest": "Email testi", + "SendTestEmail": "Test emaili gönder", + "SenderEmailAddress": "Gönderen email adresi", + "TargetEmailAddress": "Hedef email adresi", + "Subject": "Konu", + "Body": "Gövde", + "TestEmailSubject": "Test email {0}", + "TestEmailBody": "E-posta gövdesi mesajını burada test edin", + "SuccessfullySent": "Başarıyla gönderildi", "Menu:Emailing": "Email", "SmtpHost": "Sunucu", "SmtpPort": "Port", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index 8606c7da83..dfcc00078b 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -5,6 +5,15 @@ "SuccessfullySaved": "保存成功", "Permission:SettingManagement": "设置管理", "Permission:Emailing": "邮件", + "Permission:EmailingTest": "邮件测试", + "SendTestEmail": "发送测试邮件", + "SenderEmailAddress": "发件人邮箱地址", + "TargetEmailAddress": "收件人邮箱地址", + "Subject": "主题", + "Body": "正文", + "TestEmailSubject": "测试邮件 {0}", + "TestEmailBody": "测试邮件内容", + "SuccessfullySent": "发送成功", "Menu:Emailing": "邮件", "SmtpHost": "主机", "SmtpPort": "端口", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json index d01365223d..371e087bd0 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json @@ -5,6 +5,15 @@ "SuccessfullySaved": "保存成功", "Permission:SettingManagement": "設定管理", "Permission:Emailing": "信箱", + "Permission:EmailingTest": "邮件測試", + "SendTestEmail": "發送測試邮件", + "SenderEmailAddress": "發送者電子郵件地址", + "TargetEmailAddress": "目標電子郵件地址", + "Subject": "主題", + "Body": "體", + "TestEmailSubject": "測試邮件 {0}", + "TestEmailBody": "測試邮件內容", + "SuccessfullySent": "成功發送", "Menu:Emailing": "信箱", "SmtpHost": "主機", "SmtpPort": "Port", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.HttpApi.Client/ClientProxies/EmailSettingsClientProxy.Generated.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.HttpApi.Client/ClientProxies/EmailSettingsClientProxy.Generated.cs index 54895f25f7..c30a526505 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.HttpApi.Client/ClientProxies/EmailSettingsClientProxy.Generated.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.HttpApi.Client/ClientProxies/EmailSettingsClientProxy.Generated.cs @@ -27,4 +27,12 @@ public partial class EmailSettingsClientProxy : ClientProxyBase L +@inject IPermissionChecker PermissionChecker @model Volo.Abp.SettingManagement.Web.Pages.SettingManagement.Components.EmailSettingGroup.EmailSettingGroupViewComponent.UpdateEmailSettingsViewModel
@@ -24,6 +27,12 @@ @L["Save"] + @if (await PermissionChecker.IsGrantedAsync(SettingManagementPermissions.EmailingTest)) + { + + @L["Send test email"] + + } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js index c9871bb3d9..ae8e694de3 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js @@ -1,16 +1,20 @@ (function ($) { + var _sendTestEmailModal = new abp.ModalManager( + abp.appPath + 'SettingManagement/Components/EmailSettingGroup/SendTestEmailModal' + ); + $(function () { var l = abp.localization.getResource('AbpSettingManagement'); $("#EmailSettingsForm").on('submit', function (event) { event.preventDefault(); - - if(!$(this).valid()) { + + if (!$(this).valid()) { return; } - + var form = $(this).serializeFormToObject(); volo.abp.settingManagement.emailSettings.update(form).then(function (result) { $(document).trigger("AbpSettingSaved"); @@ -21,11 +25,28 @@ $('#SmtpUseDefaultCredentials').change(function () { if (this.checked) { $('#HideSectionWhenUseDefaultCredentialsIsChecked').slideUp(); - } - else { + } else { $('#HideSectionWhenUseDefaultCredentialsIsChecked').slideDown(); } }); + + _sendTestEmailModal.onOpen(function () { + var $form = _sendTestEmailModal.getForm(); + _sendTestEmailModal.getForm().off('abp-ajax-success'); + + $form.on('abp-ajax-success', function () { + _sendTestEmailModal.setResult(); + }); + }) + + _sendTestEmailModal.onResult(function () { + abp.notify.success(l('SuccessfullySent')); + }); + + $("#SendTestEmailButton").click(function (e) { + e.preventDefault(); + _sendTestEmailModal.open(); + }); }); })(jQuery); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml new file mode 100644 index 0000000000..3e2e82aefa --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml @@ -0,0 +1,25 @@ +@page +@using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.AspNetCore.Mvc.TagHelpers +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal +@using Volo.Abp.SettingManagement.Localization +@using Volo.Abp.SettingManagement.Web.Pages.SettingManagement.Components.EmailSettingGroup +@model SendTestEmailModal +@inject IHtmlLocalizer L +@{ + Layout = null; +} + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs new file mode 100644 index 0000000000..7d2819824e --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs @@ -0,0 +1,63 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.SettingManagement.Localization; + +namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement.Components.EmailSettingGroup; + +[Authorize(SettingManagementPermissions.EmailingTest)] +public class SendTestEmailModal : AbpPageModel +{ + [BindProperty] + public SendTestEmailViewModel Input { get; set; } + + protected IEmailSettingsAppService EmailSettingsAppService { get; } + + public SendTestEmailModal(IEmailSettingsAppService emailSettingsAppService) + { + LocalizationResourceType = typeof(AbpSettingManagementResource); + EmailSettingsAppService = emailSettingsAppService; + } + + public async Task OnGetAsync() + { + var emailSettings = await EmailSettingsAppService.GetAsync(); + Input = new SendTestEmailViewModel + { + SenderEmailAddress = emailSettings.DefaultFromAddress, + TargetEmailAddress = CurrentUser.Email, + Subject = L["TestEmailSubject", new Random().Next(1000, 9999)], + Body = L["TestEmailBody"] + }; + } + + public async Task OnPostAsync() + { + ValidateModel(); + + await EmailSettingsAppService.SendTestEmailAsync(ObjectMapper.Map(Input)); + + return NoContent(); + } + + public class SendTestEmailViewModel + { + [Required] + [Display(Name = "SenderEmailAddress")] + public string SenderEmailAddress { get; set; } + + [Required] + [Display(Name = "TargetEmailAddress")] + public string TargetEmailAddress { get; set; } + + [Required] + [Display(Name = "Subject")] + public string Subject { get; set; } + + [Display(Name = "Body")] + public string Body { get; set; } + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs index 19e512da56..77afa99224 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs @@ -8,5 +8,7 @@ public class SettingManagementWebAutoMapperProfile : Profile public SettingManagementWebAutoMapperProfile() { CreateMap(); + + CreateMap(); } } \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/wwwroot/client-proxies/settingManagement-proxy.js b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/wwwroot/client-proxies/settingManagement-proxy.js index b3b5f5731a..2c227c39a9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/wwwroot/client-proxies/settingManagement-proxy.js +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/wwwroot/client-proxies/settingManagement-proxy.js @@ -27,6 +27,15 @@ }, ajaxParams)); }; + volo.abp.settingManagement.emailSettings.sendTestEmail = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/setting-management/emailing/send-test-email', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + })(); })(); From 7448239e919e0903c58e151ec4e5b01c01776136 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 16 May 2022 17:19:17 +0800 Subject: [PATCH 16/89] Update default.cshtml --- .../Components/EmailSettingGroup/Default.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml index 051fa24eab..caca43c1e1 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml @@ -30,7 +30,7 @@ @if (await PermissionChecker.IsGrantedAsync(SettingManagementPermissions.EmailingTest)) { - @L["Send test email"] + @L["SendTestEmail"] } From 2aacf3315329e75d67fc5a4fe1a874cb971830a3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 16 May 2022 17:34:43 +0800 Subject: [PATCH 17/89] Change save to send button --- .../EmailSettingGroupViewComponent.razor | 2 +- .../Localization/Resources/AbpSettingManagement/en.json | 1 + .../Localization/Resources/AbpSettingManagement/tr.json | 1 + .../Resources/AbpSettingManagement/zh-Hans.json | 1 + .../Resources/AbpSettingManagement/zh-Hant.json | 1 + .../EmailSettingGroup/SendTestEmailModal.cshtml | 8 +++++++- 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor index e5a2313de0..e80115cfde 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor @@ -157,7 +157,7 @@ - + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json index ccc26b5d2d..d947142885 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json @@ -14,6 +14,7 @@ "TestEmailSubject": "Test email {0}", "TestEmailBody": "Test email body message here", "SuccessfullySent": "Successfully sent", + "Send": "Send", "Menu:Emailing": "Emailing", "SmtpHost": "Host", "SmtpPort": "Port", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json index 4dfebf4321..57397659f1 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json @@ -14,6 +14,7 @@ "TestEmailSubject": "Test email {0}", "TestEmailBody": "E-posta gövdesi mesajını burada test edin", "SuccessfullySent": "Başarıyla gönderildi", + "Send": "Gönder", "Menu:Emailing": "Email", "SmtpHost": "Sunucu", "SmtpPort": "Port", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index dfcc00078b..34ab12a79c 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -14,6 +14,7 @@ "TestEmailSubject": "测试邮件 {0}", "TestEmailBody": "测试邮件内容", "SuccessfullySent": "发送成功", + "Send": "发送", "Menu:Emailing": "邮件", "SmtpHost": "主机", "SmtpPort": "端口", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json index 371e087bd0..9cd5350bc9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json @@ -14,6 +14,7 @@ "TestEmailSubject": "測試邮件 {0}", "TestEmailBody": "測試邮件內容", "SuccessfullySent": "成功發送", + "Send": "發送", "Menu:Emailing": "信箱", "SmtpHost": "主機", "SmtpPort": "Port", diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml index 3e2e82aefa..69834f547e 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml @@ -20,6 +20,12 @@ - + + @L["Cancel"] + + @L["Send"] + + + \ No newline at end of file From 016afa155dac45857725999a3cce0884dd30942c Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 16 May 2022 17:41:50 +0800 Subject: [PATCH 18/89] Remove unnecessary Display attribute --- .../EmailSettingGroupViewComponent.razor.cs | 4 ---- .../EmailSettingGroup/SendTestEmailModal.cshtml.cs | 6 +----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs index bfc3b47fd7..ebdcff25d3 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs @@ -170,18 +170,14 @@ public partial class EmailSettingGroupViewComponent public class SendTestEmailViewModel { [Required] - [Display(Name = "SenderEmailAddress")] public string SenderEmailAddress { get; set; } [Required] - [Display(Name = "TargetEmailAddress")] public string TargetEmailAddress { get; set; } [Required] - [Display(Name = "Subject")] public string Subject { get; set; } - [Display(Name = "Body")] public string Body { get; set; } } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs index 7d2819824e..4fae4a8649 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/SendTestEmailModal.cshtml.cs @@ -46,18 +46,14 @@ public class SendTestEmailModal : AbpPageModel public class SendTestEmailViewModel { [Required] - [Display(Name = "SenderEmailAddress")] public string SenderEmailAddress { get; set; } [Required] - [Display(Name = "TargetEmailAddress")] public string TargetEmailAddress { get; set; } [Required] - [Display(Name = "Subject")] public string Subject { get; set; } - - [Display(Name = "Body")] + public string Body { get; set; } } } \ No newline at end of file From 99a6d5bf65c21776e0c91592558d7b09faebd159 Mon Sep 17 00:00:00 2001 From: Volosoft Agent <43883821+voloagent@users.noreply.github.com> Date: Mon, 16 May 2022 13:33:17 +0300 Subject: [PATCH 19/89] Update_NPM_Packages --- .../package.json | 2 +- .../yarn.lock | 224 +++++------ .../package.json | 4 +- .../yarn.lock | 260 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 298 +++++++-------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 238 ++++++------ modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 238 ++++++------ .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 238 ++++++------ .../host/Volo.CmsKit.Web.Unified/package.json | 4 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 360 +++++++++--------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 298 +++++++-------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------ .../package.json | 4 +- .../yarn.lock | 272 ++++++------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 24 +- .../packages/account-core/package.json | 6 +- npm/ng-packs/packages/account/package.json | 6 +- npm/ng-packs/packages/components/package.json | 6 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 6 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 6 +- .../packages/theme-shared/package.json | 4 +- npm/ng-packs/yarn.lock | 138 +++---- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 6 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package-lock.json | 2 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/cms-kit.admin/package.json | 10 +- npm/packs/cms-kit.public/package.json | 6 +- npm/packs/cms-kit/package.json | 6 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/cropperjs/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net-bs5/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 4 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/slugify/package.json | 2 +- npm/packs/star-rating-svg/package.json | 4 +- npm/packs/sweetalert2/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 6 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/vee-validate/package.json | 4 +- npm/packs/virtual-file-explorer/package.json | 6 +- npm/packs/vue/package.json | 2 +- templates/app-nolayers/angular/package.json | 18 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- templates/app/angular/package.json | 18 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- templates/module/angular/package.json | 18 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- 108 files changed, 1638 insertions(+), 1638 deletions(-) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index dc7f6f50d0..375badf04e 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^5.2.1", + "@abp/aspnetcore.mvc.ui.theme.shared": "^5.2.2", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index e40aac01d8..62aa60f1af 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.shared@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -34,144 +34,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 4caf5c1672..cb91c8815f 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/prismjs": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/prismjs": "^5.2.2" }, "devDependencies": {} } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 407c79dba3..2ecf2b1eec 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,161 +41,161 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.1.tgz#c6bddd279b37e9b2bd27b027d5686411c9ae942b" - integrity sha512-aouNTDz8t+8M4O2a+UsEdtABRsyhvzGpXqCG2+LYE1vA3I+CKhglkvEFp+GyIgWsipEHY1U1w6V3qZtcRINn+A== +"@abp/clipboard@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.2.tgz#77b0ca59b6d24a480b4edcb783e922b3f9d0fc55" + integrity sha512-25J3o+Z4iNhb9b72WbCZMwpDWkS63V7lFdToNPOyMeSeXjV2nw5486/GcgTqoC4VQgbPpM+Xeyb9MIV/Pt3ZkA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" clipboard "^2.0.8" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.1.tgz#86aae6ee4529401da75744f1e43c7cd3c0b494a0" - integrity sha512-YNgcM7Kvmu3hGXJh4B8gl7rLzC28VuZYYP7AVptVSbTz/n6usCo21evG/st8L3vXixuQkvnNpBFgacJnHdSJZQ== +"@abp/prismjs@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.2.tgz#dec0e7b7f38cf219507d30ffdf6bbee4d12f24a9" + integrity sha512-MAhK9Whxd45p07i/br+KxbG8qvdSOO6SVMEWkZJzNfEYY66T+nNPCACFZ5sH2dfNm+4VL/T0PSTIgH2K1z86MQ== dependencies: - "@abp/clipboard" "~5.2.1" - "@abp/core" "~5.2.1" + "@abp/clipboard" "~5.2.2" + "@abp/core" "~5.2.2" prismjs "^1.26.0" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index 1d0e320c39..514484d3a3 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/blogging": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/blogging": "^5.2.2" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 08c5aba314..44649adcde 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,187 +41,187 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/blogging@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-5.2.1.tgz#5b9c98d120293a835c0a0cb27b1764be849140d9" - integrity sha512-p2AamTCbBZkbqJKZ341JXYnzvJm4vCkT1gTZPNY49tMNa5brl2oFloI+tk491JHHaNz4lpHGFpPzQftjLPdTew== +"@abp/blogging@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-5.2.2.tgz#ea0b968bb1ffd01c40c4eceeac9063408c979dc7" + integrity sha512-O0swExaM/4EC7HyBz9QPI4EDQ+Zx7kRdqXNEHsiaMRvE8HMCSdpN9OF1LHugTRV5hltEluYyj3ARK+ZSxQSD3A== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - "@abp/owl.carousel" "~5.2.1" - "@abp/prismjs" "~5.2.1" - "@abp/tui-editor" "~5.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + "@abp/owl.carousel" "~5.2.2" + "@abp/prismjs" "~5.2.2" + "@abp/tui-editor" "~5.2.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.1.tgz#c6bddd279b37e9b2bd27b027d5686411c9ae942b" - integrity sha512-aouNTDz8t+8M4O2a+UsEdtABRsyhvzGpXqCG2+LYE1vA3I+CKhglkvEFp+GyIgWsipEHY1U1w6V3qZtcRINn+A== +"@abp/clipboard@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.2.tgz#77b0ca59b6d24a480b4edcb783e922b3f9d0fc55" + integrity sha512-25J3o+Z4iNhb9b72WbCZMwpDWkS63V7lFdToNPOyMeSeXjV2nw5486/GcgTqoC4VQgbPpM+Xeyb9MIV/Pt3ZkA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" clipboard "^2.0.8" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/owl.carousel@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-5.2.1.tgz#f58d28c98ccb8ff0f9cbcf612519648032fa4399" - integrity sha512-LYDSKrHlrzB5mD33m39olc1V96NJnNPTv3+VefKNnZvUCRHGwwCfow4pwWgjmn2uvHBKW5qiBX9c2EbwLFplQA== +"@abp/owl.carousel@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-5.2.2.tgz#6e5f8683df2f1c90a01dc1b6198ef1d260ce5ce6" + integrity sha512-Bd2E8KY5cwNDItHatHd8481jmZLtDW4Evztls6Pl3nbMDg/SJdTsPmbsIefo9ExnzEkqXrAuCSwNRayFd4aFHw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" owl.carousel "^2.3.4" -"@abp/prismjs@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.1.tgz#86aae6ee4529401da75744f1e43c7cd3c0b494a0" - integrity sha512-YNgcM7Kvmu3hGXJh4B8gl7rLzC28VuZYYP7AVptVSbTz/n6usCo21evG/st8L3vXixuQkvnNpBFgacJnHdSJZQ== +"@abp/prismjs@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.2.tgz#dec0e7b7f38cf219507d30ffdf6bbee4d12f24a9" + integrity sha512-MAhK9Whxd45p07i/br+KxbG8qvdSOO6SVMEWkZJzNfEYY66T+nNPCACFZ5sH2dfNm+4VL/T0PSTIgH2K1z86MQ== dependencies: - "@abp/clipboard" "~5.2.1" - "@abp/core" "~5.2.1" + "@abp/clipboard" "~5.2.2" + "@abp/core" "~5.2.2" prismjs "^1.26.0" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/tui-editor@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.2.1.tgz#06be1a029de754868fa11ce3479be3fbc90ba103" - integrity sha512-Mi3preBkGEU1hrtSNCkOjeXPc9c74DFt8BL82sPIVDglYcVrVLXbnNTWE/CHP0spmKWh33ek4FoH1Pt0TePMuw== +"@abp/tui-editor@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.2.2.tgz#fba2c48f62c33424b2dd3dab245e5f937b3e811b" + integrity sha512-1SSiDsVgs8wE0u2iJNqXNukSsvucFQ6OxkeSWeBWCI2CaHxITW3sak/DlbHGx0WKViKzY0JIT6A9HVcqeBL8Bw== dependencies: - "@abp/jquery" "~5.2.1" - "@abp/prismjs" "~5.2.1" + "@abp/jquery" "~5.2.2" + "@abp/prismjs" "~5.2.2" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index b65206c781..8b8ba18e91 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index e8b775d277..b19064c203 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index a2285f9846..015a872d73 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~5.2.1", - "@abp/ng.identity": "~5.2.1", - "@abp/ng.setting-management": "~5.2.1", - "@abp/ng.tenant-management": "~5.2.1", - "@abp/ng.theme.basic": "~5.2.1", + "@abp/ng.account": "~5.2.2", + "@abp/ng.identity": "~5.2.2", + "@abp/ng.setting-management": "~5.2.2", + "@abp/ng.tenant-management": "~5.2.2", + "@abp/ng.theme.basic": "~5.2.2", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index f2937c3593..3e8b1a0d07 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=5.2.1", - "@abp/ng.theme.shared": ">=5.2.1" + "@abp/ng.core": ">=5.2.2", + "@abp/ng.theme.shared": ">=5.2.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 44e817e13e..b3abfa944e 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index 69f5c5ac40..fdf0d9f931 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 0448d7be40..6d072dac8a 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 0bd254552e..6cb3f8a2d0 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 7004bbc292..ea18400423 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/cms-kit": "5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/cms-kit": "5.2.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index cedf508cc2..bbebbde6b7 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,234 +41,234 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.1.tgz#c6bddd279b37e9b2bd27b027d5686411c9ae942b" - integrity sha512-aouNTDz8t+8M4O2a+UsEdtABRsyhvzGpXqCG2+LYE1vA3I+CKhglkvEFp+GyIgWsipEHY1U1w6V3qZtcRINn+A== +"@abp/clipboard@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.2.tgz#77b0ca59b6d24a480b4edcb783e922b3f9d0fc55" + integrity sha512-25J3o+Z4iNhb9b72WbCZMwpDWkS63V7lFdToNPOyMeSeXjV2nw5486/GcgTqoC4VQgbPpM+Xeyb9MIV/Pt3ZkA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" clipboard "^2.0.8" -"@abp/cms-kit.admin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-5.2.1.tgz#f685e8533366fa7a7db9641a61681f664af6d979" - integrity sha512-KkT3eJMR0XCzlIY3KXNId3KfN8rQmGuThTZIPo5cifGg0mpW/HdkCfI4Dmv6v2xkUnZ/o5dOf+cXkvFrt6zzfg== +"@abp/cms-kit.admin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-5.2.2.tgz#e412d7a35b8bde97486ec5e4a889c5cc0f72dd34" + integrity sha512-A9wz3+5PUTSBXZtjhaoZ71EIaAv1UBWp+xVoYRFY9hscUUyI74QSYn6s5aCr5fgRahjgtGt2cgRPfa/LZKMHZw== dependencies: - "@abp/jstree" "~5.2.1" - "@abp/slugify" "~5.2.1" - "@abp/tui-editor" "~5.2.1" - "@abp/uppy" "~5.2.1" + "@abp/jstree" "~5.2.2" + "@abp/slugify" "~5.2.2" + "@abp/tui-editor" "~5.2.2" + "@abp/uppy" "~5.2.2" -"@abp/cms-kit.public@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-5.2.1.tgz#8f4860b17470f57fce3bbd732a7954031a244d14" - integrity sha512-dOhzJjWuXO74GFUg78JRhLOJCaUXjwOHuQMbzpWHnMyrj88nEJkEtHwYs1vxf9GWvyhhES6h7ZyusxJhy+Ybww== +"@abp/cms-kit.public@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-5.2.2.tgz#264a8d4b638b0a4dad884d90153f277e4b0b1c8e" + integrity sha512-fzTnHW21NuWatkFvI/79cYiMN4ceZq0gnUL3WMSO6HJmjnksuq8LRfLBOdJ1ru7qNNHevkt9j1XNE8mtRYaTAg== dependencies: - "@abp/highlight.js" "~5.2.1" - "@abp/star-rating-svg" "~5.2.1" + "@abp/highlight.js" "~5.2.2" + "@abp/star-rating-svg" "~5.2.2" -"@abp/cms-kit@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-5.2.1.tgz#2cab9de4bb4e14ec39f8a2086b16fc38556af6bb" - integrity sha512-SuIJYj8LAdYeATYrpLxRGg7gMQ52Wq2gApriv7c7pC45mPQosi57wjEMvsI2MKAurEwQqTf7J38R3UJNRgmQbQ== +"@abp/cms-kit@5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-5.2.2.tgz#31d5d241f888881882737b1fee2a328926a10e72" + integrity sha512-J44kplwlNSqdl8JP4VMYSiQo+o9GOWim0f2xACwhM2PvbujHyN8taDa+PQqFoJmcWXkd70WVG0y3JMnE9JRSAQ== dependencies: - "@abp/cms-kit.admin" "~5.2.1" - "@abp/cms-kit.public" "~5.2.1" + "@abp/cms-kit.admin" "~5.2.2" + "@abp/cms-kit.public" "~5.2.2" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/highlight.js@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.2.1.tgz#345e826047b2e87861d08b5ca2a9e5a313c22bda" - integrity sha512-Pi/pMWqdvdBr0E63UrhapuUtNNoY9Jt3R1Py52JQ0r90r53k5fmYOIaSwmaFlVZ8T/JApJt2D9i0Z4k8Tcn7Vg== +"@abp/highlight.js@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.2.2.tgz#9460d221ffdff4ede5f3a7cd0ac5fabc97455db7" + integrity sha512-F5k+rddI64YcfpPTuLG7jDeZ/MDUKX7VBnTHMA6ABtlzXqRGxG0RQYPSG7ey6aWoZ2vNJ1mDn85LFhk5usPncA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@highlightjs/cdn-assets" "~11.4.0" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/jstree@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-5.2.1.tgz#27f8c80053fbd7f5b242cc144b3ebdc33a668b9d" - integrity sha512-KYcdkjm33OEOBH/HHgOvIoVX8Bg/KlTJ4muyWYzPK0JK8T61rjrAw8cnlvMl5fqnuzdUUWFgfpuZq7HhgU30NQ== +"@abp/jstree@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-5.2.2.tgz#80f3480750027c715b9bd3fb470d3c4bc95e5409" + integrity sha512-1Ox6Kqpi48P/1aVlkgjkPKeCF311alvv3NFqIcqWS8rJp9UwR+005w7oBolpBzh7rs5tqF+aX357/OzCAuJHBQ== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jstree "^3.3.12" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.1.tgz#86aae6ee4529401da75744f1e43c7cd3c0b494a0" - integrity sha512-YNgcM7Kvmu3hGXJh4B8gl7rLzC28VuZYYP7AVptVSbTz/n6usCo21evG/st8L3vXixuQkvnNpBFgacJnHdSJZQ== +"@abp/prismjs@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.2.tgz#dec0e7b7f38cf219507d30ffdf6bbee4d12f24a9" + integrity sha512-MAhK9Whxd45p07i/br+KxbG8qvdSOO6SVMEWkZJzNfEYY66T+nNPCACFZ5sH2dfNm+4VL/T0PSTIgH2K1z86MQ== dependencies: - "@abp/clipboard" "~5.2.1" - "@abp/core" "~5.2.1" + "@abp/clipboard" "~5.2.2" + "@abp/core" "~5.2.2" prismjs "^1.26.0" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/slugify@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-5.2.1.tgz#97c8b54fcfc271e7fb2f1697fafa3dff30ba6891" - integrity sha512-e/QxzbeOJYgKdYJQSCeP7QnnraLEafxB/AAzQDDJH2hKid9lNDeUxjggw/xCSiiRCG9Qz8OYuei6bNaYDHcxbQ== +"@abp/slugify@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-5.2.2.tgz#26da0fd9b0455eb1320b58f79c15649a694bec40" + integrity sha512-X7V9lP/2G3ddaci9lj0WS9VqM0PbqyoV7l1YaTXSlF4FJDbrp6d0reD8TDInhysnGFv7Gtx0Ske6T+qafPeuyw== dependencies: slugify "^1.6.5" -"@abp/star-rating-svg@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-5.2.1.tgz#f8cd6a965079acfa3633731eacf653e142886c1e" - integrity sha512-QofOzA0kjpXEm80tkxBptKYTUZa4uolHRy4KNTzDFdcf8TyC6hT8I6kmUS9ym7F3HKLjLhDWfRsd1kKaDwxzQw== +"@abp/star-rating-svg@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-5.2.2.tgz#c240e450fe101ab6f0511b472574a32f3b57b127" + integrity sha512-ciOU1YEvEkHfDhMEE6boVfQihn1pswwJvAXUrwensKmELqdPTXauTuAQFLNxwd8Tr/ZHCu6R+QXh+QOYtljxpA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" star-rating-svg "^3.5.0" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/tui-editor@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.2.1.tgz#06be1a029de754868fa11ce3479be3fbc90ba103" - integrity sha512-Mi3preBkGEU1hrtSNCkOjeXPc9c74DFt8BL82sPIVDglYcVrVLXbnNTWE/CHP0spmKWh33ek4FoH1Pt0TePMuw== +"@abp/tui-editor@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.2.2.tgz#fba2c48f62c33424b2dd3dab245e5f937b3e811b" + integrity sha512-1SSiDsVgs8wE0u2iJNqXNukSsvucFQ6OxkeSWeBWCI2CaHxITW3sak/DlbHGx0WKViKzY0JIT6A9HVcqeBL8Bw== dependencies: - "@abp/jquery" "~5.2.1" - "@abp/prismjs" "~5.2.1" + "@abp/jquery" "~5.2.2" + "@abp/prismjs" "~5.2.2" -"@abp/uppy@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-5.2.1.tgz#560bbb363a0b0b493cc2f1c20f4f7b51e95cb331" - integrity sha512-cLqeGHrfwuOgPKjIBTq7H/l3P494sEgmrdH3UW9wVIjD5OAIbK/2AeZ2xTIIg0Mn+ALm+rqfsw0+qBoBug1WHQ== +"@abp/uppy@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-5.2.2.tgz#a4e27a0cc5dc251baa89e73b71f6ede9a7eb68cf" + integrity sha512-AnyfCsy4TI81kSJ86ypyK4GP2rDY8adBIpDOUQVxkv53cnMliBdZzhb1qWwfImcH+gidLIcF5UJdqHz7mWsHfg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" uppy "^1.16.1" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 2ec4d524e2..cfdba1471e 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/docs": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/docs": "^5.2.2" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 802094ec7c..9f3a3f0763 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-5.2.1.tgz#701e01a9637800429cf3f0364e62b8351c3a0354" - integrity sha512-61+rrfSQyZacqUJ5qQxkoWYffWcd7AArkj8DmEHmFY4e28hH3P9eXMcuGBoJ85pXleAPEmVYswc/xZiTMNHkvg== +"@abp/anchor-js@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-5.2.2.tgz#f2de4d555f4d607fe65928288902e4c84b046c1f" + integrity sha512-wgroEGQOL8kjQ+VWJjyZo0isttiISAhrXkLWD2W45JVkUMjWHDm3yMlB0Q+jUqdJkC8Xu+Et3qE9nRx7jg4IoA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" anchor-js "^4.3.1" -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -49,180 +49,180 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.1.tgz#c6bddd279b37e9b2bd27b027d5686411c9ae942b" - integrity sha512-aouNTDz8t+8M4O2a+UsEdtABRsyhvzGpXqCG2+LYE1vA3I+CKhglkvEFp+GyIgWsipEHY1U1w6V3qZtcRINn+A== +"@abp/clipboard@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.2.tgz#77b0ca59b6d24a480b4edcb783e922b3f9d0fc55" + integrity sha512-25J3o+Z4iNhb9b72WbCZMwpDWkS63V7lFdToNPOyMeSeXjV2nw5486/GcgTqoC4VQgbPpM+Xeyb9MIV/Pt3ZkA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" clipboard "^2.0.8" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/docs@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-5.2.1.tgz#111952a2da8e6e1ac20ed8eaa8a15854b2c92f7b" - integrity sha512-WZCCY73vyIpRu7hypPiP9CRr4Bvzkv3up0WeGQ4rK9LiZWNSxG9PXv4lYeD4cuHg0zgxH9d/6toYToaIJNqDCQ== +"@abp/docs@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-5.2.2.tgz#b45eab268fbadc26819d9e5b332e627ad2a21284" + integrity sha512-YYAIxv/dHgwd9glZkE7odHlGCCzP/xKYJ1puHH1V1VgX4c0oPDXdGOepdsEXx58wiFskKOaR/jbEkqsdznidaw== dependencies: - "@abp/anchor-js" "~5.2.1" - "@abp/clipboard" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/popper.js" "~5.2.1" - "@abp/prismjs" "~5.2.1" + "@abp/anchor-js" "~5.2.2" + "@abp/clipboard" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/popper.js" "~5.2.2" + "@abp/prismjs" "~5.2.2" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-5.2.1.tgz#441a5be6889915fc09fe5d5e3c4b419d65a7b3bd" - integrity sha512-poQhd5EYjU2/udJWlDEd5mIPWmw6AzNOzAd5V4OUHMai+BHeuhIXQ6mopvxf9lpzytGoFe2ZIiQ547Wfq4Fl/Q== +"@abp/popper.js@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-5.2.2.tgz#257ed4b80a8ff17648a22476ab5340a35ab85392" + integrity sha512-s48982/xxtrwnfAGCaBTaSS8vOhO4NyQdxiXvjDW1k/Hb8Q/aeGFTItw6YvNgToR1Hm+X/Ml5uZ4y6TkhxSfcw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@popperjs/core" "^2.11.2" -"@abp/prismjs@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.1.tgz#86aae6ee4529401da75744f1e43c7cd3c0b494a0" - integrity sha512-YNgcM7Kvmu3hGXJh4B8gl7rLzC28VuZYYP7AVptVSbTz/n6usCo21evG/st8L3vXixuQkvnNpBFgacJnHdSJZQ== +"@abp/prismjs@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.2.tgz#dec0e7b7f38cf219507d30ffdf6bbee4d12f24a9" + integrity sha512-MAhK9Whxd45p07i/br+KxbG8qvdSOO6SVMEWkZJzNfEYY66T+nNPCACFZ5sH2dfNm+4VL/T0PSTIgH2K1z86MQ== dependencies: - "@abp/clipboard" "~5.2.1" - "@abp/core" "~5.2.1" + "@abp/clipboard" "~5.2.2" + "@abp/core" "~5.2.2" prismjs "^1.26.0" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json index 95b3f87bfc..49b96041b5 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json @@ -3,6 +3,6 @@ "name": "demo-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock index d5f6d1f237..b1bc8362d9 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,144 +41,144 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json index 5cbf1e4a17..773d4aac47 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/virtual-file-explorer": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/virtual-file-explorer": "^5.2.2" } } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock index eb76a09ea5..3f1eb829fb 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.1.tgz#25bd7116b9b0e72ba45f0f5246343343de8561b2" - integrity sha512-DYr9ROcTPfCRHxD1QSWqLZ9+ARbO5p9I6SRo893NtJ39aHacAa9RIAwZmP0JLG0C4hLXfJLKXJ2DpNcwY+ubXA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.1.tgz#dc291fe9c7100cc796068e19abf7579bd5e54b44" - integrity sha512-/1C5RyPIRPZT5ir8Len2EnSt1KfWcRdPyn/avAG+9JKBZ8FoUL8mO2/ffESOvikh/wItZZgxJ5VEJVGwHNjgdQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~5.2.1" - "@abp/bootstrap" "~5.2.1" - "@abp/bootstrap-datepicker" "~5.2.1" - "@abp/datatables.net-bs5" "~5.2.1" - "@abp/font-awesome" "~5.2.1" - "@abp/jquery-form" "~5.2.1" - "@abp/jquery-validation-unobtrusive" "~5.2.1" - "@abp/lodash" "~5.2.1" - "@abp/luxon" "~5.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~5.2.1" - "@abp/select2" "~5.2.1" - "@abp/sweetalert2" "~5.2.1" - "@abp/timeago" "~5.2.1" - "@abp/toastr" "~5.2.1" - -"@abp/aspnetcore.mvc.ui@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.1.tgz#239ceeec332cebe2fedec0bb0cdec09089b499d3" - integrity sha512-VUSPOKjBSF+NxfwdsEVQte8u7mGP1t7jd1+ej2ND8JEKYJ1Vh7z2mfsT+lQaEJg0JWggU1AxkIMOOfHDNTU3Kg== +"@abp/aspnetcore.mvc.ui.theme.basic@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.2.2.tgz#c3306d23bf3e3b7ebca8793d207d716bb7e42d3c" + integrity sha512-F6Yml17KeRkiq3Gk7/f9BRA5Z3RMW8Kn0khfCZolERBqm5mxi69VPWHLsGFBZDfNIW5YRuC+JkxaJ2yO9xnOKg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~5.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.2.2.tgz#103215c25babf38cd1f0e1d97df729eb7e8b225c" + integrity sha512-G8NsdK3exme6qNUUe4/7iNGyZB3l91sxFwj0Fd2dOAUu9m+IhA5vF2Eo50w+SGTAWYbwEBlEIM5eA2hWaSrPfA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~5.2.2" + "@abp/bootstrap" "~5.2.2" + "@abp/bootstrap-datepicker" "~5.2.2" + "@abp/datatables.net-bs5" "~5.2.2" + "@abp/font-awesome" "~5.2.2" + "@abp/jquery-form" "~5.2.2" + "@abp/jquery-validation-unobtrusive" "~5.2.2" + "@abp/lodash" "~5.2.2" + "@abp/luxon" "~5.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~5.2.2" + "@abp/select2" "~5.2.2" + "@abp/sweetalert2" "~5.2.2" + "@abp/timeago" "~5.2.2" + "@abp/toastr" "~5.2.2" + +"@abp/aspnetcore.mvc.ui@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.2.2.tgz#35faf51af65791b578212fdb42d350700501428b" + integrity sha512-TrvfBvKvei3uyJtiO4gEMlbPpvPJ98ggW5Ilb/0olx3H9qHgMvtQbusDN0qW2e9xkHL7GbRJUk4jxYP9tThiyw== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -41,171 +41,171 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.1.tgz#20d565211d05ca184f8e3ef4db840dbd98a58fbd" - integrity sha512-UPdVu9t7XybINSfonQN0DB9Lpz1r5vCz7F8CMpbjQprvPmsFmkAZyY0p6MS3kGO5eu5rlpGAGPBGOTeSfEp9ww== +"@abp/bootstrap-datepicker@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.2.2.tgz#0612a6056617acfaed862528fdeab1e792675b05" + integrity sha512-237UInHlY381a4anJ3nfvwa2JmlFFpitNQFJl/E8KVYvhy+3wswnv4linVmGWYtPd3diwmpcDwqONYPQ+KdxPw== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.1.tgz#fe15144d7136a26be44be23fd2470cdef0bd28b9" - integrity sha512-vFW8OxfRhiDkIrDVIn3TyGkGyiCLLFmPMjSOmMg3o2XPdRk5uhwSBzWYpk/m+kmPpP6cEsJMxaHpCsirSlPE+A== +"@abp/bootstrap@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.2.2.tgz#e28b52e4b9e09746eab881524f612d1771d7df35" + integrity sha512-LzzTBzRzjHdLZNhDe5By1kWD4KD08U725AfU37MlscyvrcIjjrU9s6P9TGgaXnHk00X5ddJlnYUx08V1SNEZhQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.1.tgz#c6bddd279b37e9b2bd27b027d5686411c9ae942b" - integrity sha512-aouNTDz8t+8M4O2a+UsEdtABRsyhvzGpXqCG2+LYE1vA3I+CKhglkvEFp+GyIgWsipEHY1U1w6V3qZtcRINn+A== +"@abp/clipboard@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.2.2.tgz#77b0ca59b6d24a480b4edcb783e922b3f9d0fc55" + integrity sha512-25J3o+Z4iNhb9b72WbCZMwpDWkS63V7lFdToNPOyMeSeXjV2nw5486/GcgTqoC4VQgbPpM+Xeyb9MIV/Pt3ZkA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" clipboard "^2.0.8" -"@abp/core@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.1.tgz#9cd7f25dec0b4e654f7998f89c19f3d73169c74a" - integrity sha512-FDOhIPjig3oGxkbadJZzFSC1ZHzgQV4R75fsDNH56lQ9mTyRUPQdg0Y54eCtY7yOSjiJOctOUUWHaxoFG7frGQ== +"@abp/core@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.2.2.tgz#51a995bb5f9b89c7709633d131a4ef7c10686770" + integrity sha512-rxvzVEPwZGOgvCak8VRpM2Bv48LLVJcGG8kmxbaLbwg1HuZH1KZVT5QvNZBvPjzcS93jly79aGElQrDoAOMv/A== dependencies: - "@abp/utils" "~5.2.1" + "@abp/utils" "~5.2.2" -"@abp/datatables.net-bs5@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.1.tgz#fafc65295d00d5b351404740702f7e56ff1341fe" - integrity sha512-B8lSAeMM9qOwYbDK/Dhp7BX5lFaCpao4RCPcSqgFrye8vlH8bcobmp4tMD23r24y/gRIEuQBcKzp0Lf0OUpLhA== +"@abp/datatables.net-bs5@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-5.2.2.tgz#f4cf02ac91c533ca042cb531b45686588ba4cec1" + integrity sha512-OQTcNf/rm+/o3XlicKTs/eanLaaBgIdxnddMpZbNVGHJl9GAYww4d+7hwDibwcy4QWbM4EYB2q2+KTDmbwFZvg== dependencies: - "@abp/datatables.net" "~5.2.1" + "@abp/datatables.net" "~5.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.1.tgz#397a3e7db2017c20c082598214478c277b2abec6" - integrity sha512-6Q3+W+d8e4TMAkZr/IdPDQuL1v+tjbS50ChLvrJX/BLb4fBhu1LGJWWKzKJFj721DwIsuQQiM4uq9xX/TjiS0w== +"@abp/datatables.net@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.2.2.tgz#be0c5f09825c4635906217e66ddbea52f9bcb036" + integrity sha512-7Cvt5hL1K0F3FRpZhYw1otmLnotcsddocsri1jvMAGMUnJMzHwIax7FHACtG6QstSJjKJ3AIRrS4K8ofgN6WmA== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.1.tgz#357785a0366f555b72f76e2b8ee8a2d607aed6fb" - integrity sha512-9fAUdA9QeNRMjp6v8i6EOR480bjB4OzqzriFCKUu4k6VwbA6PxUsJIRFyKIt5UpC12Zqdhpkyj0iG6tE0nRekQ== +"@abp/font-awesome@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.2.2.tgz#27e32192eb21c4b248dfc42c9a060524e1987f52" + integrity sha512-f2hy6f4yI8+HnxQTTnvBP6le3mJ/daaqSdP5LPNWNCuzWL7pkrBSFkeNX4ADSpoC8KDUjMWMY0WMBJLoDH9NFQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.1.tgz#c9cc6ad3997f7fa036d5cd8e0d15923ad7fff790" - integrity sha512-L7uKs7vReOQEETG9xIDq5aXjshbaPa+ZZQcCbn2uwY813e0ErS7Rb1mnowEt/LNEB02AtLet1B4TDVwZUl1uXQ== +"@abp/jquery-form@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.2.2.tgz#a35448eacc8dd57f682cbfbd2437b123343a8d5e" + integrity sha512-AC+vwIj7+yMv+34XmyzGi2oB4yIxJyb+2VrQJihERfXG2AHV5yEWITun3jFO8aLd1PBos6QcL81CQtXSYz2deg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.1.tgz#7fdfa3867f61f862ee575114560f79b505649093" - integrity sha512-uZ36D1FfoLdBb6h44fQ3kZuTk4gJ5yzhyOprkgMsGAJDVakX7w/W4V3ThpiEO+iUpNKTboVIhW2QQ0AXK9rrsg== +"@abp/jquery-validation-unobtrusive@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.2.2.tgz#bc29269a1f6577c7ee13930af5c2cf598db13286" + integrity sha512-K8n73+mphz5mr2x3iKJBNoaMqWbG9yZLIpo28nViuLDaqYy0tmLO38Pfv6dzmFcuniGHaw/kh2VKBWEM42qcRQ== dependencies: - "@abp/jquery-validation" "~5.2.1" + "@abp/jquery-validation" "~5.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.1.tgz#e7fbaa1715af5667559e3b6f0fcb916766b28244" - integrity sha512-Rr/+SWGlXJ53jfysMB/HVNZqsJKCF3rg23ip2Kg6Q+kQTvWVRE3tpkpoBJczOii5tPUk/A/lsJKgRlcsnP0ASw== +"@abp/jquery-validation@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.2.2.tgz#ebacb0a6dde929881a5f0651231b175ca76abd47" + integrity sha512-BHgbwdlRBl5ZDudfKfdiL9RgpY0l+x6y/R+a1Vb5OZPSxrnCaPPYHyFWNqS+UoX+QDDAHIwaAiVxrRWMCGoT4Q== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.1.tgz#6b88af5c22fb25d953d38847bcddcf591aeb3228" - integrity sha512-FiIRnDx/gm6JR8QljiulwCc5d8+YC123X0qxMIBI8IY9vznEX+Jk48jYG8fLABnRqKEIYfV8UsYSK8IJx3mcSg== +"@abp/jquery@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.2.2.tgz#ec4fb478760801b31822de38689e542877c81cc2" + integrity sha512-PPHE6V1q2ebAG8X/pwkP024rzclwX/qh3/QjJ02kUPgRdhtEroqyYcinBiuZPXHCVgKr5hz0wDldXZRhSN2dhA== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" jquery "~3.6.0" -"@abp/lodash@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.1.tgz#87601162025a4a376e3c335d418636ef2079ad2d" - integrity sha512-ILg3X5tTH2HhJMRmg7BP/r+Kstm/nf+0aNQ2exsJoMMnKE7CC0eYQjpSgrze6GwG3a13eamyTlrz+RrlIm5IBA== +"@abp/lodash@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.2.2.tgz#85605092b645be23dcf11a7d829f1431b554e840" + integrity sha512-bkeW/imDeGc1tkhwnRCX3BXRMumdK8Ys2v+njZ6Vrce5zygGStv1pRr7uuA7nu5puLHF5JIHhybMRaynJBpzxg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" lodash "^4.17.21" -"@abp/luxon@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.1.tgz#72a9e9bb0e7f3a688662c8e9ad52016b9cfa3a17" - integrity sha512-D3KVsba969UBYktdbCxq1JQp4kYZ1S7rIMymDJMBoHByXxwwdeXMkvuphAifBmSYTt3K6bNoZdR0VxtnNlPn2A== +"@abp/luxon@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.2.2.tgz#2ebeee50ccdb12716e056464bac893fa0512ddd6" + integrity sha512-oWXiAtaDpi7A5m2cDm6B1ibfskCh7Rc//xfeJ4mIOExvrrnwTzcTCuQeGlNF0bWnl4qYufR8UQxgdqkJAK0cxw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.1.tgz#8d1b600552607e28a274775ad3bb68ac7cfbba09" - integrity sha512-5mvABMCT7tiwPl1vUK8kriN/SRi2gC4VqkEuxghT7uBQG9Cqh5jhJrl80M9ZK/oQFind3r6+SF8OlfwF8yvxHQ== +"@abp/malihu-custom-scrollbar-plugin@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.2.2.tgz#a3a0fcaa054effa3574b96647509978b8dc0d267" + integrity sha512-k0mUxAnJQn0uY/v+dc836TKNmHBkfMMQTu/zcmUSzepxuzo6eaYeyfGT4/vOhYiB3o6OB3N7KHGm2dFIBHzjmg== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.1.tgz#86aae6ee4529401da75744f1e43c7cd3c0b494a0" - integrity sha512-YNgcM7Kvmu3hGXJh4B8gl7rLzC28VuZYYP7AVptVSbTz/n6usCo21evG/st8L3vXixuQkvnNpBFgacJnHdSJZQ== +"@abp/prismjs@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.2.2.tgz#dec0e7b7f38cf219507d30ffdf6bbee4d12f24a9" + integrity sha512-MAhK9Whxd45p07i/br+KxbG8qvdSOO6SVMEWkZJzNfEYY66T+nNPCACFZ5sH2dfNm+4VL/T0PSTIgH2K1z86MQ== dependencies: - "@abp/clipboard" "~5.2.1" - "@abp/core" "~5.2.1" + "@abp/clipboard" "~5.2.2" + "@abp/core" "~5.2.2" prismjs "^1.26.0" -"@abp/select2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.1.tgz#f52a3c88da52bbfc4b135671064326aebb98b332" - integrity sha512-JH/PqOxhTY05sUyN7of6TNai0W4M3N3OF3Hlwmr8i7hNdYfFwJvQnQzKeKrk/vt8Hv44/JTQDlNKU02BmSBfOQ== +"@abp/select2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.2.2.tgz#476fcd222166bc36396d4f4b9d87c0e78763a7ed" + integrity sha512-a25/vriOqawpwF12wAXWNuRNU9MF5SJL54p07EKt6wNFdxYXWLiDqt4HntLdHFJJ/DPrX52/mh22/fAnLFjjvQ== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.1.tgz#f5ff712b4f7a4cb5a75a754aa4642f099f382e51" - integrity sha512-laaF/5WhYw+hNJRTfMzO93fVhaYqnnOcQTUlkGgsZMe2gwebyX73VI8O8Xw7zXmN1Tu/JwqRI46qiafDrPFTLg== +"@abp/sweetalert2@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.2.2.tgz#3232b1faf33426289096178318fa0224d48d816b" + integrity sha512-EpHCa9xtiZQMfQUSXn1G14qihUjRlYWm1uSiMY5qrhHr9sn5E5sGNZNsWslqbtdFJoyP1gcNS0/SWHBFX8eEiw== dependencies: - "@abp/core" "~5.2.1" + "@abp/core" "~5.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.1.tgz#a410dbf652c0f78f86384e116111aa613458b6de" - integrity sha512-xmgqKEKusB6pcqFhMaz8RTi886ad8RrRMYgMWSw4Zjk1Lr9EqQwKtcE43Ve5XWJamh2Wpk8H7IKLQKHfrV12oA== +"@abp/timeago@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.2.2.tgz#bf9e680411fd3f1aaee5e0f56aa8747fb247ad27" + integrity sha512-6VZh+k+IGcFrCkzoBiEOVdFz09IehC9UzITkaFG6qulQpiciPhYjsJ5XUVj9Xtc/mORSc3in+5nBLA0CXMtHgg== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" timeago "^1.6.7" -"@abp/toastr@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.1.tgz#4ed96a7967d028b8e849ff79b8a0a8a041bb20e4" - integrity sha512-HrnIzvM9LgQdzlmLmvHUVSG4PmWfx9YuozxkFTv+AGa2FAPby5W9hbQ025ry3bPkU9lGWSu/w7JSDqoiL16bPA== +"@abp/toastr@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.2.2.tgz#a1154a812427d3967e9e9652b8d83852b1714286" + integrity sha512-iD0tY/Oi/+otCuB8+6rfc1qsbwZCGbIc6pXRq0L8fwgMTjPfxYDV96YTIEDr0SXYB++itqy52SBx8jYLcbkC2g== dependencies: - "@abp/jquery" "~5.2.1" + "@abp/jquery" "~5.2.2" toastr "^2.1.4" -"@abp/utils@~5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" - integrity sha512-9hxI24aRZCnxCP+WsOoCltSg4YqG9WtW06t9/f6hFO9B0udXIKyV+95Ndipca/R1G94Snx81ifSwAa+DHbFfvQ== +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== dependencies: just-compare "^1.3.0" -"@abp/virtual-file-explorer@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-5.2.1.tgz#3c4021307213c03f061ecdcb969f21ed3320a094" - integrity sha512-Ppg6zqZBOaryJhkr6KPhuwfPW8NypQDaMGXtCN6AY/usNOf91WlSZJ1uyou0rC6qT3N2ZgM6JIIp+nw9K6K0TA== +"@abp/virtual-file-explorer@^5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-5.2.2.tgz#2ddc3482db6d98e545a26a80e9ef97cfe826d08f" + integrity sha512-MdApfzZpU1v25Hzubsi6drOFFlodUm1Nq+S0aUiP5togkHz26RbFA34fWx2tLfuEJk4PbZtvhRvISnuHyXmK8A== dependencies: - "@abp/clipboard" "~5.2.1" - "@abp/prismjs" "~5.2.1" + "@abp/clipboard" "~5.2.2" + "@abp/prismjs" "~5.2.2" "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" diff --git a/npm/lerna.json b/npm/lerna.json index 65e1e1fcbb..91ae2a8678 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index 4b6e1a83fe..70529efa87 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 1ebb27c41c..54dcd24eaa 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -37,7 +37,7 @@ }, "private": true, "devDependencies": { - "@abp/utils": "~5.2.1", + "@abp/utils": "~5.2.2", "@angular-devkit/build-angular": "13.1.2", "@angular-devkit/build-ng-packagr": "^0.1002.0", "@angular-devkit/schematics-cli": "~12.2.0", @@ -56,17 +56,17 @@ "@angular/platform-browser": "13.1.1", "@angular/platform-browser-dynamic": "13.1.1", "@angular/router": "13.1.1", - "@abp/ng.account": "~5.2.1", - "@abp/ng.account.core": "~5.2.1", - "@abp/ng.core": "~5.2.1", - "@abp/ng.feature-management": "~5.2.1", - "@abp/ng.identity": "~5.2.1", - "@abp/ng.permission-management": "~5.2.1", - "@abp/ng.schematics": "~5.2.1", - "@abp/ng.setting-management": "~5.2.1", - "@abp/ng.tenant-management": "~5.2.1", - "@abp/ng.theme.basic": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.account": "~5.2.2", + "@abp/ng.account.core": "~5.2.2", + "@abp/ng.core": "~5.2.2", + "@abp/ng.feature-management": "~5.2.2", + "@abp/ng.identity": "~5.2.2", + "@abp/ng.permission-management": "~5.2.2", + "@abp/ng.schematics": "~5.2.2", + "@abp/ng.setting-management": "~5.2.2", + "@abp/ng.tenant-management": "~5.2.2", + "@abp/ng.theme.basic": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "~12.0.0-beta.4", "@ngneat/spectator": "^10.0.0", diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json index 9a44b1098b..98f55c2638 100644 --- a/npm/ng-packs/packages/account-core/package.json +++ b/npm/ng-packs/packages/account-core/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account.core", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.core": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "@angular/common": ">=12.0.0", "@angular/core": ">=12.0.0" }, diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 57b6c9c77d..60fafabc62 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.account.core": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 6b43da3490..c49177f451 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.components", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=5.2.1", - "@abp/ng.theme.shared": ">=5.2.1", + "@abp/ng.core": ">=5.2.2", + "@abp/ng.theme.shared": ">=5.2.2", "@ng-bootstrap/ng-bootstrap": ">=10.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 564777912e..7ed416526c 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "~5.2.1", + "@abp/utils": "~5.2.2", "angular-oauth2-oidc": "^13.0.1", "just-clone": "^3.2.1", "just-compare": "^1.4.0", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 2cbf8f50bd..789fbe863d 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 7c05de9a6f..077d863214 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.permission-management": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 11fee9b967..b04a355e1f 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 7f6517164f..a0c29d9ada 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "5.2.1", + "version": "5.2.2", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 5af6cdce19..7c16cb023f 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.setting-management", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.components": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 9122c79f6c..8c9bc8bc91 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.feature-management": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index e40abda535..7d59ed3de2 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.theme.basic", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.account.core": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index 3d61bd2036..dfd92dd055 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "5.2.1", + "version": "5.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~5.2.1", + "@abp/ng.core": "~5.2.2", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "~12.0.0-beta.4", "@ngx-validate/core": "^0.1.1", diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index 5b3431e52d..f98ad9676e 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,72 +2,72 @@ # yarn lockfile v1 -"@abp/ng.account.core@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.account.core/-/ng.account.core-5.2.0.tgz#52b154b915a793d23bb5a355af83fbd0b7daca4d" - integrity sha512-8duxfsll++Lg30hRfRwaIvYuphQSYUo87wE61VEDZtXQN01aQqbrfs4kLWd+GKYGRs0+DcSkoSvXxqhA0XDQaQ== +"@abp/ng.account.core@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.account.core/-/ng.account.core-5.2.1.tgz#6188a048339abfca385a79659b4ea6aa90692ccd" + integrity sha512-hzcs6XwEf9CEs7K2ItGaBCoNVLVDgcOQt+i1jcyOAbVjdJgvywzN3UvHCk4TiVAbbO6c0DW3yaF1SDjwLvfRKA== dependencies: tslib "^2.0.0" -"@abp/ng.account@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-5.2.0.tgz#53ef83fa766e276cdc455c61ab20908ead2b9c65" - integrity sha512-R9zVcxDDNXDvPJ75DcwEV6hcrLSbcWHZwTW83eRw26RvyhNZpYiVpO85n01pLmHjCZ020Eij+AjF6B5Fo3Me0Q== +"@abp/ng.account@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-5.2.1.tgz#327c69717aa2bc598fc51bcbb98e7541b3d46222" + integrity sha512-SzjwSk+qqoktcnKbGavr853Ne+RqIg0OJ1buzXSjwE/SweTEWi7HEyKsyd2DzSF9MOWgxNr4Qdd6yBSJG6MZ/Q== dependencies: - "@abp/ng.account.core" "~5.2.0" - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.account.core" "~5.2.1" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.components@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.components/-/ng.components-5.2.0.tgz#93888659f8809a82ac1cb713af39ace4a445cca4" - integrity sha512-YklPX5HZwQasGk45ShDGuan3DORK81uSerFCxlWeaICafL2CkkQr2NsOwi1ki62wqbmJdyI255XrquyCklB9Jw== +"@abp/ng.components@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.components/-/ng.components-5.2.1.tgz#3f1c7d220d7d132e74881da5e52d1c132504e0a6" + integrity sha512-HKIB6CZ4ufaW/t3AHeNpr7vXFUunCry1s5yXevrQXuTmz7UrmPjFumf4nRmNLhFNXPfzUfkYEmgx0/syQtVGnA== dependencies: chart.js "^3.5.1" ng-zorro-antd "^13.0.0" tslib "^2.0.0" -"@abp/ng.core@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-5.2.0.tgz#aeffa1f95e9e198ef5d35ed71e640cfcb04be903" - integrity sha512-G/DHBi8p55P2dkXNaiFFOiPQ22F6QATONO1nc7vYb0IhoCrwCYrro/wUuVq65Rypo1Uy4Y2VRiVnjsjKKQZP6A== +"@abp/ng.core@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-5.2.1.tgz#e74d65ee5db90391db572a7b6350ab2bb0c89408" + integrity sha512-7gFmJ3oulh+9/pwcOEzF5O0BRqqCLanicP8bkJ1jMoJMjf+ji9mn869PL24Pq2I8Wk/moDZ2t5rpcjzVIio8Uw== dependencies: - "@abp/utils" "~5.2.0" + "@abp/utils" "~5.2.1" angular-oauth2-oidc "^13.0.1" just-clone "^3.2.1" just-compare "^1.4.0" ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-5.2.0.tgz#c250e20500514d5013a93882808cf7a2f8df80f5" - integrity sha512-yTT3oQlg7mAD0FhQ/k3/JrCyxLIy/ti5QJkAuc4moA0fmRiGAaTKZC2DZDF8EWRwK5ywk9oLDidjLbe+fzg83Q== +"@abp/ng.feature-management@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-5.2.1.tgz#d3e2a5e7e52a8dc0a40a7924907ad36b8c51f6ea" + integrity sha512-Sew5VwgSgmqjOcr6TDQb6xyW/S9+cBopuqzStvBeHUn3rYPE8g4BNmdlwNkGhuI+1Lt3fXfS7OUrwKg8MmY8dw== dependencies: - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.identity@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-5.2.0.tgz#12e1fa69fad69c7f7c822c0f836694e19a63abbb" - integrity sha512-6PLStuk80YPs7N0j8oVijjUhjrrPOv0/ezyaH6M4YNQ88+VZa/0qECJznPyfG2kKpcST0VhFTaoSw+c75utmZg== +"@abp/ng.identity@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-5.2.1.tgz#732d7cc10022dc8108f442f3eff8e7d7a7adb93f" + integrity sha512-DIS8uVKrRU3K7Lw8kBnbp8RdnU16W/n6bT+IzJkQKvTF7UTPVtB7kqcjPSepzVIvY4UnsFZrZxyNZsm2J4bBuw== dependencies: - "@abp/ng.permission-management" "~5.2.0" - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.permission-management" "~5.2.1" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.permission-management@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-5.2.0.tgz#f22a45f8b4c359ba635c2280e58f13e89180a836" - integrity sha512-/1u2C/apoRJFreaoyiZvBEQ5zpQWiDc5kbtBwpLx3Ese7ZGl5eH/97UWuLodSsVpDQv0zpgePt9bK5adJW+ePw== +"@abp/ng.permission-management@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-5.2.1.tgz#9e539d63b66b06ede5e572a1277865b7c7ef72b4" + integrity sha512-lyCMKvIZTUVX8QprMjU1Q7+LoTL+Xwxb5gWWA4qI82gAJtAfqP/apDicP76BMlqkPVjG4OVLYfPDz0ZaZ7a65w== dependencies: - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.schematics@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-5.2.0.tgz#d5a53a00784a896b0657643ab3e74b19ce9609f2" - integrity sha512-qtl2RsfCCkIav21Ml628hRQwXKVC5emg2m40wCX4fK2uCdWZmyO791GScoYg9ScWUY0PZyA119XA2mXMokVFNA== +"@abp/ng.schematics@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-5.2.1.tgz#c20eec2d3c3c0431ebb6ee07adefe505ea199091" + integrity sha512-ug7FM8cGgmpbbgwKUWY/dC3qUs2zLolB2iKmNiB7r4786aDS9sCzsHOzLtUbfG8tbrrGbG1MDUu7kCY12eqwRw== dependencies: "@angular-devkit/core" "~11.0.2" "@angular-devkit/schematics" "~11.0.2" @@ -76,39 +76,39 @@ should-quote "^1.0.0" typescript "~3.9.2" -"@abp/ng.setting-management@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-5.2.0.tgz#a4054d6a0109e1c60f17c09e35c31c1f013e17af" - integrity sha512-EChCIhTHrPuWJWpg7lKt0dGOz4L3YmFVlv5v5EAQjN92hN7cNsRhaa259Zke8SDSYSAE3GpGNLoJgSxxeqoUvQ== +"@abp/ng.setting-management@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-5.2.1.tgz#052805b5769a0aed03a0374cf6287b54f0d067a1" + integrity sha512-Fe3U/FsqYGgZONlLGxxlHI6Q0oTVZQwxUlvRcQ5m1MEI2ueGfLAUycvJlz1Jyy6Qpd8te3lwdsjTVzC8sbG8+A== dependencies: - "@abp/ng.components" "~5.2.0" - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.components" "~5.2.1" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.tenant-management@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-5.2.0.tgz#3ee3a09ce7398813ea9ab476f25f7e0e9cdcbf6d" - integrity sha512-AkFGc2MppnFP7hVbnJVg177tNzOnr2TyqezJfNqPdRx4tHoRGIb7zviZVp1IV+kh8btU22/sSWT/RfL+WBorgg== +"@abp/ng.tenant-management@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-5.2.1.tgz#cee456be41e116a02eb22fb615ada9c63a43d4c0" + integrity sha512-tD5v8/l1idY9CmXw2nGjH9V2BYlKmlYHTci8jcYNMUdDx30srIBJJI2tM/VoeYYIZXvvmUMLtz3EhXmIsXmQUA== dependencies: - "@abp/ng.feature-management" "~5.2.0" - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.feature-management" "~5.2.1" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.theme.basic@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-5.2.0.tgz#f9112db7d68230bfadd5ee009144e23512c9b46a" - integrity sha512-rRAKzYdrVChIOAZwnEfER9/6iFjxXtGAphI7HkI7faWKpDGQmEOsxXNKdjyOlgnXJ9WPxLkovuOi8dXY+kzPXg== +"@abp/ng.theme.basic@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-5.2.1.tgz#f1175aee9e06d23a92d031b7458f52f9bde88488" + integrity sha512-9mUVDYuMlV+IDq57wYSUnwznQhVLVoaIIQQAb/Rj85OTPNGHr1X24A8mTpasKAsyhNSUddnCRdRbd8AozBVJ8g== dependencies: - "@abp/ng.account.core" "~5.2.0" - "@abp/ng.theme.shared" "~5.2.0" + "@abp/ng.account.core" "~5.2.1" + "@abp/ng.theme.shared" "~5.2.1" tslib "^2.0.0" -"@abp/ng.theme.shared@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-5.2.0.tgz#721cd849c62ffd988329c22c414a831683bbff83" - integrity sha512-ohHSvLAuMp5ZNgtl0cRAp4bc1aAKvbLsEbo7oFUL47UR/gwNuvyQ22PQsiJ8pEF4n/fIHRypp+BIAq8R2sEmXg== +"@abp/ng.theme.shared@~5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-5.2.1.tgz#9c13605b0f3a02e6b46564971b4c4fd8ed74f291" + integrity sha512-Gu11L7xx6AsKbjs/VsKMbkWmXvMw0+0ZPVJPZo5KvyJjF5GqYamBhkNC9gNgLmAl+VvZBFiYOfTYU195ecHrlQ== dependencies: - "@abp/ng.core" "~5.2.0" + "@abp/ng.core" "~5.2.1" "@fortawesome/fontawesome-free" "^5.15.4" "@ng-bootstrap/ng-bootstrap" "~12.0.0-beta.4" "@ngx-validate/core" "^0.1.1" @@ -117,13 +117,6 @@ bootstrap "^5.1.1" tslib "^2.0.0" -"@abp/utils@~5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.0.tgz#3f5a7a2aab94f5c2a5e1f0f634517a4939909fa7" - integrity sha512-CBQzu8bAQQ9EUPCjjcXwLCDE/rPFGTtSRtGeMP1lrjavYEAxplXu58Fd8WeTl6d8/dqGA3nNQUnWbc2lGPlUYw== - dependencies: - just-compare "^1.3.0" - "@abp/utils@~5.2.1": version "5.2.1" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.1.tgz#7c2d20f1bcc8cf9f90c060ed31ed3a114a463064" @@ -131,6 +124,13 @@ dependencies: just-compare "^1.3.0" +"@abp/utils@~5.2.2": + version "5.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.2.2.tgz#3926edb783cef24ceb821bf63a1d4d34180c825f" + integrity sha512-qrinQLM3fdearXAh15k2C9uk6OnUaQoF7gSUjnbQKRLbBh5bgeOYbA/YRh8UcIKzVfUBJpGaebv+mbnGY/n2IQ== + dependencies: + just-compare "^1.3.0" + "@ampproject/remapping@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.2.tgz#a7ebbadb71517dd63298420868f27d98fe230a0a" diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index bfae9b3f64..a288bf5025 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "anchor-js": "^4.3.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json index f449a068c8..9cb6d5c020 100644 --- a/npm/packs/aspnetcore.components.server.basictheme/package.json +++ b/npm/packs/aspnetcore.components.server.basictheme/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/aspnetcore.components.server.basictheme", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.components.server.theming": "~5.2.1" + "@abp/aspnetcore.components.server.theming": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json index 055934beac..c1289ef2d1 100644 --- a/npm/packs/aspnetcore.components.server.theming/package.json +++ b/npm/packs/aspnetcore.components.server.theming/package.json @@ -1,12 +1,12 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/aspnetcore.components.server.theming", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/bootstrap": "~5.2.1", - "@abp/font-awesome": "~5.2.1" + "@abp/bootstrap": "~5.2.2", + "@abp/font-awesome": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 31a154e12c..a09e6d03b7 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~5.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 4ce48a5cd5..09437b65ef 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "repository": { "type": "git", @@ -10,20 +10,20 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~5.2.1", - "@abp/bootstrap": "~5.2.1", - "@abp/bootstrap-datepicker": "~5.2.1", - "@abp/datatables.net-bs5": "~5.2.1", - "@abp/font-awesome": "~5.2.1", - "@abp/jquery-form": "~5.2.1", - "@abp/jquery-validation-unobtrusive": "~5.2.1", - "@abp/lodash": "~5.2.1", - "@abp/luxon": "~5.2.1", - "@abp/malihu-custom-scrollbar-plugin": "~5.2.1", - "@abp/select2": "~5.2.1", - "@abp/sweetalert2": "~5.2.1", - "@abp/timeago": "~5.2.1", - "@abp/toastr": "~5.2.1" + "@abp/aspnetcore.mvc.ui": "~5.2.2", + "@abp/bootstrap": "~5.2.2", + "@abp/bootstrap-datepicker": "~5.2.2", + "@abp/datatables.net-bs5": "~5.2.2", + "@abp/font-awesome": "~5.2.2", + "@abp/jquery-form": "~5.2.2", + "@abp/jquery-validation-unobtrusive": "~5.2.2", + "@abp/lodash": "~5.2.2", + "@abp/luxon": "~5.2.2", + "@abp/malihu-custom-scrollbar-plugin": "~5.2.2", + "@abp/select2": "~5.2.2", + "@abp/sweetalert2": "~5.2.2", + "@abp/timeago": "~5.2.2", + "@abp/toastr": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json index 9147176dd2..a31af22497 100644 --- a/npm/packs/aspnetcore.mvc.ui/package-lock.json +++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "@abp/aspnetcore.mvc.ui", - "version": "5.2.1", + "version": "5.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 9a9809573d..89db0fc584 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/aspnetcore.mvc.ui", "repository": { "type": "git", diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 58360f41e4..022fcf0ed0 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~5.2.1", - "@abp/owl.carousel": "~5.2.1", - "@abp/prismjs": "~5.2.1", - "@abp/tui-editor": "~5.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~5.2.2", + "@abp/owl.carousel": "~5.2.2", + "@abp/prismjs": "~5.2.2", + "@abp/tui-editor": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 414748fc4f..7ca2ab73d1 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/bootstrap-datepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index 07b88bf56e..5c26cfcf21 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/bootstrap", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "bootstrap": "^5.1.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 393c7a0fc3..49c035e8f5 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 2197d7ac9b..3c1438d84b 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "clipboard": "^2.0.8" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json index c7c02508b4..7b2ecac52a 100644 --- a/npm/packs/cms-kit.admin/package.json +++ b/npm/packs/cms-kit.admin/package.json @@ -1,14 +1,14 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/cms-kit.admin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jstree": "~5.2.1", - "@abp/slugify": "~5.2.1", - "@abp/tui-editor": "~5.2.1", - "@abp/uppy": "~5.2.1" + "@abp/jstree": "~5.2.2", + "@abp/slugify": "~5.2.2", + "@abp/tui-editor": "~5.2.2", + "@abp/uppy": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json index b16a5f322f..389b2b125a 100644 --- a/npm/packs/cms-kit.public/package.json +++ b/npm/packs/cms-kit.public/package.json @@ -1,12 +1,12 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/cms-kit.public", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/highlight.js": "~5.2.1", - "@abp/star-rating-svg": "~5.2.1" + "@abp/highlight.js": "~5.2.2", + "@abp/star-rating-svg": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json index 90d02d96fa..58cefd43db 100644 --- a/npm/packs/cms-kit/package.json +++ b/npm/packs/cms-kit/package.json @@ -1,12 +1,12 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/cms-kit", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/cms-kit.admin": "~5.2.1", - "@abp/cms-kit.public": "~5.2.1" + "@abp/cms-kit.admin": "~5.2.2", + "@abp/cms-kit.public": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index c9d5c77fdc..a82bcfa9ad 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "codemirror": "^5.65.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index 8a82924f24..3e302f01bb 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/core", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/utils": "~5.2.1" + "@abp/utils": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index ab4b7fd4f5..b3c582ebed 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "cropperjs": "^1.5.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index a6628e6c28..cc46098329 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/datatables.net-bs4", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/datatables.net": "~5.2.1", + "@abp/datatables.net": "~5.2.2", "datatables.net-bs4": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net-bs5/package.json b/npm/packs/datatables.net-bs5/package.json index 9599f3f3fb..8fb80c9ac4 100644 --- a/npm/packs/datatables.net-bs5/package.json +++ b/npm/packs/datatables.net-bs5/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/datatables.net-bs5", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~5.2.1", + "@abp/datatables.net": "~5.2.2", "datatables.net-bs5": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 05ab5a041f..cc8aa903eb 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/datatables.net", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "datatables.net": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index 42181c3fb4..43e2cc0a3a 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~5.2.1", - "@abp/clipboard": "~5.2.1", - "@abp/malihu-custom-scrollbar-plugin": "~5.2.1", - "@abp/popper.js": "~5.2.1", - "@abp/prismjs": "~5.2.1" + "@abp/anchor-js": "~5.2.2", + "@abp/clipboard": "~5.2.2", + "@abp/malihu-custom-scrollbar-plugin": "~5.2.2", + "@abp/popper.js": "~5.2.2", + "@abp/prismjs": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index cd90d02ce5..9b0edf7bb4 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index f34d2a867a..3cf4f4b0e5 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/font-awesome", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "@fortawesome/fontawesome-free": "^5.15.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index fce1c0e212..6ac61a234a 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "@highlightjs/cdn-assets": "~11.4.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 30384f80f9..aeba2e0356 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/jquery-form", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "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 e71325e186..dd2bd1725a 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/jquery-validation-unobtrusive", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~5.2.1", + "@abp/jquery-validation": "~5.2.2", "jquery-validation-unobtrusive": "^3.2.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 13154cfbcb..fe2f9dce7b 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/jquery-validation", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "jquery-validation": "^1.19.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index bb6780647f..362a92760f 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/jquery", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "jquery": "~3.6.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 2dd6eae521..578131ab42 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "jstree": "^3.3.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 3e8a5473ca..037adcae1c 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/lodash", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "lodash": "^4.17.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 89d57e2360..5143f335be 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/luxon", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "luxon": "^2.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 665fc7b624..fbc522e7f9 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/malihu-custom-scrollbar-plugin", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "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 f737132f50..736ae307ae 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "markdown-it": "^12.3.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 64d5bc8e6e..a49f863b05 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 55ef39b872..a1687db60d 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "@popperjs/core": "^2.11.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 6b48d7e709..90dfcbf0f4 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~5.2.1", - "@abp/core": "~5.2.1", + "@abp/clipboard": "~5.2.2", + "@abp/core": "~5.2.2", "prismjs": "^1.26.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index 86fb70e7a9..574ea333fd 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/select2", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 9db6bd9df1..91f6a6b5d2 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "@microsoft/signalr": "~6.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json index 3bccf0b808..9b634fcee5 100644 --- a/npm/packs/slugify/package.json +++ b/npm/packs/slugify/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/slugify", "publishConfig": { "access": "public" diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json index 1a458a374e..f6e204cfb9 100644 --- a/npm/packs/star-rating-svg/package.json +++ b/npm/packs/star-rating-svg/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/star-rating-svg", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "star-rating-svg": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json index 7373282e71..dd455d25b4 100644 --- a/npm/packs/sweetalert2/package.json +++ b/npm/packs/sweetalert2/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/sweetalert2", "publishConfig": { "access": "public" @@ -10,7 +10,7 @@ "directory": "npm/packs/sweetalert2" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "sweetalert2": "^11.3.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index d8a3016057..4da0d4dea7 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/timeago", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index c3acb8cefd..31eea64306 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/toastr", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", + "@abp/jquery": "~5.2.2", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index b229a31256..59f23948fc 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,12 +1,12 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~5.2.1", - "@abp/prismjs": "~5.2.1" + "@abp/jquery": "~5.2.2", + "@abp/prismjs": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index ffe8b4080a..2f2e1b39bf 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~5.2.1", + "@abp/core": "~5.2.2", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index d03f9bd89f..32c6b4d9fe 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "5.2.1", + "version": "5.2.2", "scripts": { "prepublishOnly": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json index 2dc5a68b53..14a63a72d0 100644 --- a/npm/packs/vee-validate/package.json +++ b/npm/packs/vee-validate/package.json @@ -1,11 +1,11 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/vee-validate", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/vue": "~5.2.1", + "@abp/vue": "~5.2.2", "vee-validate": "~3.4.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index a4b0bd8b85..dd3cb6bdb7 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~5.2.1", - "@abp/prismjs": "~5.2.1" + "@abp/clipboard": "~5.2.2", + "@abp/prismjs": "~5.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json index 2e9144b3e5..6ef27db323 100644 --- a/npm/packs/vue/package.json +++ b/npm/packs/vue/package.json @@ -1,5 +1,5 @@ { - "version": "5.2.1", + "version": "5.2.2", "name": "@abp/vue", "publishConfig": { "access": "public" diff --git a/templates/app-nolayers/angular/package.json b/templates/app-nolayers/angular/package.json index 5e66eb239a..73c88c1f1a 100644 --- a/templates/app-nolayers/angular/package.json +++ b/templates/app-nolayers/angular/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~5.2.1", - "@abp/ng.components": "~5.2.1", - "@abp/ng.core": "~5.2.1", - "@abp/ng.identity": "~5.2.1", - "@abp/ng.setting-management": "~5.2.1", - "@abp/ng.tenant-management": "~5.2.1", - "@abp/ng.theme.basic": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.account": "~5.2.2", + "@abp/ng.components": "~5.2.2", + "@abp/ng.core": "~5.2.2", + "@abp/ng.identity": "~5.2.2", + "@abp/ng.setting-management": "~5.2.2", + "@abp/ng.tenant-management": "~5.2.2", + "@abp/ng.theme.basic": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "@angular/animations": "~13.1.1", "@angular/common": "~13.1.1", "@angular/compiler": "~13.1.1", @@ -34,7 +34,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@abp/ng.schematics": "~5.2.1", + "@abp/ng.schematics": "~5.2.2", "@angular-devkit/build-angular": "~13.1.2", "@angular-eslint/builder": "~13.0.1", "@angular-eslint/eslint-plugin": "~13.0.1", diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json index b99280b230..9966f9d27f 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/aspnetcore.components.server.basictheme": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/aspnetcore.components.server.basictheme": "^5.2.2" } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json index b99280b230..9966f9d27f 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/aspnetcore.components.server.basictheme": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/aspnetcore.components.server.basictheme": "^5.2.2" } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json index 8bad0a8f1d..fb082e0449 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~5.2.2" } } \ No newline at end of file diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json index 8bad0a8f1d..fb082e0449 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~5.2.2" } } \ No newline at end of file diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 5e66eb239a..73c88c1f1a 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~5.2.1", - "@abp/ng.components": "~5.2.1", - "@abp/ng.core": "~5.2.1", - "@abp/ng.identity": "~5.2.1", - "@abp/ng.setting-management": "~5.2.1", - "@abp/ng.tenant-management": "~5.2.1", - "@abp/ng.theme.basic": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.account": "~5.2.2", + "@abp/ng.components": "~5.2.2", + "@abp/ng.core": "~5.2.2", + "@abp/ng.identity": "~5.2.2", + "@abp/ng.setting-management": "~5.2.2", + "@abp/ng.tenant-management": "~5.2.2", + "@abp/ng.theme.basic": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "@angular/animations": "~13.1.1", "@angular/common": "~13.1.1", "@angular/compiler": "~13.1.1", @@ -34,7 +34,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@abp/ng.schematics": "~5.2.1", + "@abp/ng.schematics": "~5.2.2", "@angular-devkit/build-angular": "~13.1.2", "@angular-eslint/builder": "~13.0.1", "@angular-eslint/eslint-plugin": "~13.0.1", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json index b99280b230..9966f9d27f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/aspnetcore.components.server.basictheme": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/aspnetcore.components.server.basictheme": "^5.2.2" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json index b99280b230..9966f9d27f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/aspnetcore.components.server.basictheme": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/aspnetcore.components.server.basictheme": "^5.2.2" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index 44e817e13e..b3abfa944e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index 3f2ae010fe..4d4a299802 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,14 +15,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~5.2.1", - "@abp/ng.components": "~5.2.1", - "@abp/ng.core": "~5.2.1", - "@abp/ng.identity": "~5.2.1", - "@abp/ng.setting-management": "~5.2.1", - "@abp/ng.tenant-management": "~5.2.1", - "@abp/ng.theme.basic": "~5.2.1", - "@abp/ng.theme.shared": "~5.2.1", + "@abp/ng.account": "~5.2.2", + "@abp/ng.components": "~5.2.2", + "@abp/ng.core": "~5.2.2", + "@abp/ng.identity": "~5.2.2", + "@abp/ng.setting-management": "~5.2.2", + "@abp/ng.tenant-management": "~5.2.2", + "@abp/ng.theme.basic": "~5.2.2", + "@abp/ng.theme.shared": "~5.2.2", "@angular/animations": "~13.1.1", "@angular/common": "~13.1.1", "@angular/compiler": "~13.1.1", @@ -37,7 +37,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@abp/ng.schematics": "~5.2.1", + "@abp/ng.schematics": "~5.2.2", "@angular-devkit/build-angular": "~13.1.2", "@angular-eslint/builder": "~13.0.1", "@angular-eslint/eslint-plugin": "~13.0.1", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index 0bfada49ae..3e98f9442a 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": ">=9", "@angular/core": ">=9", - "@abp/ng.core": ">=5.2.1", - "@abp/ng.theme.shared": ">=5.2.1" + "@abp/ng.core": ">=5.2.2", + "@abp/ng.theme.shared": ">=5.2.2" }, "dependencies": { "tslib": "^2.1.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json index b99280b230..9966f9d27f 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1", - "@abp/aspnetcore.components.server.basictheme": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2", + "@abp/aspnetcore.components.server.basictheme": "^5.2.2" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index 44e817e13e..b3abfa944e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index 0448d7be40..6d072dac8a 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^5.2.2" } } \ No newline at end of file From 389f57d08014073482acbd3689602381de287a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 16 May 2022 14:00:25 +0300 Subject: [PATCH 20/89] Use OpenIddict from the tiered MVC client --- .../MyProjectNameWebModule.cs | 5 +++-- .../MyCompanyName.MyProjectName.Web.Host/appsettings.json | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs index 368ad5eafe..3dbf6227b8 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs @@ -148,12 +148,13 @@ public class MyProjectNameWebModule : AbpModule options.ResponseType = OpenIdConnectResponseType.CodeIdToken; options.ClientId = configuration["AuthServer:ClientId"]; - options.ClientSecret = configuration["AuthServer:ClientSecret"]; + options.UsePkce = true; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; + options.SignOutScheme = "Cookies"; - options.Scope.Add("role"); + options.Scope.Add("roles"); options.Scope.Add("email"); options.Scope.Add("phone"); options.Scope.Add("MyProjectName"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json index c89186b748..0d2d376016 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json @@ -13,8 +13,7 @@ "AuthServer": { "Authority": "https://localhost:44301", "RequireHttpsMetadata": "true", - "ClientId": "MyProjectName_Web", - "ClientSecret": "1q2w3e*" + "ClientId": "MyProjectName_Web" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" From 6ef09658f346ddb6250fb7da760d15c1a7c2d27b Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 16 May 2022 15:44:35 +0300 Subject: [PATCH 21/89] CmsKit - Add Unit Tests for GetWithAuthorAsync --- .../Comments/CommentRepository_Tests.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/Comments/CommentRepository_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/Comments/CommentRepository_Tests.cs index facf55f523..ea4d2bbc61 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/Comments/CommentRepository_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/Comments/CommentRepository_Tests.cs @@ -54,6 +54,15 @@ public abstract class CommentRepository_Tests : CmsKitTestBase x.Author == null).ShouldBeFalse(); } + [Fact] + public async Task GetWithAuthorAsync() + { + var commentDetail = await _commentRepository.GetWithAuthorAsync(_cmsKitTestData.CommentWithChildId); + + commentDetail.ShouldNotBeNull(); + commentDetail.Author.ShouldNotBeNull(); + } + [Fact] public async Task DeleteWithRepliesAsync() { From 3b55d471fc3a7d65e35de77197a01cd3c318972f Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 16 May 2022 15:45:09 +0300 Subject: [PATCH 22/89] CmsKit - Fix comments query --- .../Comments/MongoCommentRepository.cs | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs index b948f360d9..089b86cc4f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using MongoDB.Driver; using MongoDB.Driver.Linq; using Volo.Abp; -using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories.MongoDB; using Volo.Abp.MongoDB; using Volo.CmsKit.Comments; @@ -23,25 +22,16 @@ public class MongoCommentRepository : MongoDbRepository GetWithAuthorAsync(Guid id, CancellationToken cancellationToken = default) { - var query = from comment in (await GetMongoQueryableAsync(cancellationToken)) - join user in (await GetDbContextAsync(cancellationToken)).CmsUsers on comment.CreatorId equals user.Id - where id == comment.Id - select new { - Comment = comment, - Author = user - }; - - var commentWithAuthor = await query.FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); - - if (commentWithAuthor == null) - { - throw new EntityNotFoundException(typeof(Comment), id); - } + var comment = await GetAsync(id); + var author = await (await GetDbContextAsync()) + .CmsUsers + .AsQueryable() + .FirstOrDefaultAsync(x => x.Id == comment.CreatorId, GetCancellationToken(cancellationToken)); return new CommentWithAuthorQueryResultItem() { - Comment = commentWithAuthor.Comment, - Author = commentWithAuthor.Author + Comment = comment, + Author = author }; } From cdd0be7a6ff8cb2168897460eb0a04c4cae8107f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 17 May 2022 07:48:12 +0300 Subject: [PATCH 23/89] Added eventhub to samples --- docs/en/Samples/Index.md | 18 +++++++++++------- docs/en/Samples/Microservice-Demo.md | 2 ++ docs/en/docs-nav.json | 10 +++++++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/docs/en/Samples/Index.md b/docs/en/Samples/Index.md index 58543ba380..704cdf3808 100644 --- a/docs/en/Samples/Index.md +++ b/docs/en/Samples/Index.md @@ -2,15 +2,19 @@ Here, a list of official samples built with the ABP Framework. Most of these samples are located under the [abpframework/abp-samples](https://github.com/abpframework/abp-samples) GitHub repository. -### Microservice Demo +## eShopOnAbp -A complete solution to demonstrate how to build systems based on the microservice architecture. +Reference microservice solution built with the ABP Framework and .NET. -* [The complete documentation for this sample](Microservice-Demo.md) -* [Source code](https://github.com/abpframework/abp-samples/tree/master/MicroserviceDemo) -* [Microservice architecture document](../Microservice-Architecture.md) +* [Source code](https://github.com/abpframework/eShopOnAbp) -### Book Store +## EventHub + +This is a reference application built with the ABP Framework. It implements the Domain Driven Design with multiple application layers. + +* [Source code](https://github.com/abpframework/eventhub) + +## Book Store A simple CRUD application to show basic principles of developing an application with the ABP Framework. The same sample was implemented with different technologies: @@ -28,7 +32,7 @@ A simple CRUD application to show basic principles of developing an application While there is no Razor Pages & MongoDB combination, you can check both documents to understand it since DB & UI selection don't effect each other. -### Other Samples +## Other Samples * **Event Organizer**: A sample application to create events (meetups) and allow others to register the events. Developed using EF Core and Blazor UI. * [Source code](https://github.com/abpframework/abp-samples/tree/master/EventOrganizer) diff --git a/docs/en/Samples/Microservice-Demo.md b/docs/en/Samples/Microservice-Demo.md index 285c2b10a0..1e2549338f 100644 --- a/docs/en/Samples/Microservice-Demo.md +++ b/docs/en/Samples/Microservice-Demo.md @@ -1,5 +1,7 @@ # Microservice Demo Solution +> This solution is no longer maintained. See [the eShopOnAbp project](https://github.com/abpframework/eShopOnAbp) for the replacement solution. + *"Microservices are a software development technique—a variant of the **service-oriented architecture** (SOA) architectural style that structures an application as a collection of **loosely coupled services**. In a microservices architecture, services are **fine-grained** and the protocols are **lightweight**. The benefit of decomposing an application into different smaller services is that it improves **modularity**. This makes the application easier to understand, develop, test, and become more resilient to architecture erosion. It **parallelizes development** by enabling small autonomous teams to **develop, deploy and scale** their respective services independently. It also allows the architecture of an individual service to emerge through **continuous refactoring**. Microservices-based architectures enable **continuous delivery and deployment**."* — [Wikipedia](https://en.wikipedia.org/wiki/Microservices) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index b81f0b6efd..ac76c7cee8 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1300,7 +1300,15 @@ "path": "Samples/Index.md" }, { - "text": "Microservice Demo", + "text": "eShopOnAbp", + "path": "https://github.com/abpframework/eShopOnAbp" + }, + { + "text": "EventHub", + "path": "https://github.com/abpframework/eventhub" + }, + { + "text": "Microservice Demo (legacy)", "path": "Samples/Microservice-Demo.md" } ] From 732c3f9ce3b86efe2c2e3bff110e740394255e17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 17 May 2022 07:53:07 +0300 Subject: [PATCH 24/89] Update Microservice-Architecture.md --- docs/en/Microservice-Architecture.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/Microservice-Architecture.md b/docs/en/Microservice-Architecture.md index 7790e26f3c..b98323908d 100644 --- a/docs/en/Microservice-Architecture.md +++ b/docs/en/Microservice-Architecture.md @@ -23,8 +23,8 @@ One common advise to start a new solution is **always to start with a monolith** However, developing such a well-modular application can be a problem since it is **hard to keep modules isolated** from each other as you would do it for microservices (see [Stefan Tilkov's article](https://martinfowler.com/articles/dont-start-monolith.html) about that). Microservice architecture naturally forces you to develop well isolated services, but in a modular monolithic application it's easy to tight couple modules to each other and design **weak module boundaries** and API contracts. -ABP can help you in that point by offerring a **microservice-compatible, strict module architecture** where your module is splitted into multiple layers/projects and developed in its own VS solution completely isolated and independent from other modules. Such a developed module is a natural microservice yet it can be easily plugged-in a monolithic application. See the [module development best practice guide](Best-Practices/Index.md) that offers a **microservice-first module design**. All [standard ABP modules](https://github.com/abpframework/abp/tree/master/modules) are developed based on this guide. So, you can use these modules by embedding into your monolithic solution or deploy them separately and use via remote APIs. They can share a single database or can have their own database based on your simple configuration. +ABP can help you in that point by offering a **microservice-compatible, strict module architecture** where your module is split into multiple layers/projects and developed in its own VS solution completely isolated and independent from other modules. Such a developed module is a natural microservice yet it can be easily plugged-in a monolithic application. See the [module development best practice guide](Best-Practices/Index.md) that offers a **microservice-first module design**. All [standard ABP modules](https://github.com/abpframework/abp/tree/master/modules) are developed based on this guide. So, you can use these modules by embedding into your monolithic solution or deploy them separately and use via remote APIs. They can share a single database or can have their own database based on your simple configuration. -## Microservice Demo Solution +## Microservice Demo Solution: eShopOnAbp -The [sample microservice solution](Samples/Microservice-Demo.md) demonstrates a complete microservice solution based on the ABP framework. +The [eShopOnAbp project](https://github.com/abpframework/eShopOnAbp) demonstrates a complete microservice solution based on the ABP framework. From e34395e7f98a98ef6c6bc8ba8bf21cf0d7c58deb Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 17 May 2022 09:37:55 +0300 Subject: [PATCH 25/89] fix angular service proxy url generation parameter --- .../Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs index 8c8a6cdbd0..b9f1662a98 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs @@ -48,7 +48,7 @@ public class AngularServiceProxyGenerator : ServiceProxyGeneratorBase Date: Tue, 17 May 2022 09:57:18 +0300 Subject: [PATCH 26/89] Update Blazor WASM to use OpenIddict. --- .../MyProjectNameBlazorModule.cs | 8 +++- .../OpenIddictDataSeedContributor.cs | 2 +- .../MyProjectNameHttpApiHostModule.cs | 1 - ...e.MyProjectName.HttpApi.HostWithIds.csproj | 4 +- .../MyProjectNameHttpApiHostModule.cs | 43 ++++++++++++++++++- .../MyProjectNameIdentityServerModule.cs | 4 +- 6 files changed, 53 insertions(+), 9 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index 11e4dc97d5..a8030ab41c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -15,6 +15,7 @@ using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme; using Volo.Abp.Identity.Blazor.WebAssembly; +using Volo.Abp.Security.Claims; using Volo.Abp.SettingManagement.Blazor.WebAssembly; using Volo.Abp.TenantManagement.Blazor.WebAssembly; @@ -72,12 +73,17 @@ public class MyProjectNameBlazorModule : AbpModule builder.Services.AddOidcAuthentication(options => { builder.Configuration.Bind("AuthServer", options.ProviderOptions); + + options.UserOptions.NameClaim = JwtClaimTypes.Name; options.UserOptions.RoleClaim = JwtClaimTypes.Role; + options.ProviderOptions.DefaultScopes.Add("MyProjectName"); - options.ProviderOptions.DefaultScopes.Add("role"); + options.ProviderOptions.DefaultScopes.Add("roles"); options.ProviderOptions.DefaultScopes.Add("email"); options.ProviderOptions.DefaultScopes.Add("phone"); }); + + AbpClaimTypes.UserName = JwtClaimTypes.Name; } private static void ConfigureUI(WebAssemblyHostBuilder builder) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index 919fd136fa..b47f9c17da 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -136,7 +136,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: blazorClientId, type: OpenIddictConstants.ClientTypes.Public, - consentType: OpenIddictConstants.ConsentTypes.Explicit, + consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Blazor Application", secret: null, grantTypes: new List diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 763856f427..b2b07c3c78 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -104,7 +104,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; - // See OpenIddictServerModule`s PreConfigureServices method. options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj index 5fbd48f168..87952416f4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -12,13 +12,15 @@ + + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 586507bbc4..35e4551c5a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -3,11 +3,13 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; +using System.Text; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.IdentityModel.Tokens; using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.MultiTenancy; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; @@ -25,6 +27,8 @@ using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; +using Volo.Abp.OpenIddict.WildcardDomains; using Volo.Abp.Swashbuckle; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.VirtualFileSystem; @@ -39,12 +43,39 @@ namespace MyCompanyName.MyProjectName; typeof(MyProjectNameEntityFrameworkCoreModule), typeof(AbpAspNetCoreMvcUiBasicThemeModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), typeof(AbpAspNetCoreSerilogModule), typeof(AbpSwashbuckleModule) )] public class MyProjectNameHttpApiHostModule : AbpModule { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(builder => + { + //https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + //https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html + builder.AddSigningKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78"))); + builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); + }); + + PreConfigure(options => + { + options.EnableWildcardDomainSupport = true; + options.WildcardDomainsFormat.Add("https://{0}.abp.io/signin-oidc"); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + } + public override void ConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); @@ -117,6 +148,11 @@ public class MyProjectNameHttpApiHostModule : AbpModule private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) { + Configure(options => + { + options.AddDevelopmentEncryptionAndSigningCertificate = false; + }); + context.Services.AddAuthentication() .AddJwtBearer(options => { @@ -128,6 +164,9 @@ public class MyProjectNameHttpApiHostModule : AbpModule ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; + + options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); + options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); }); } @@ -144,6 +183,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule options.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProjectName API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.CustomSchemaIds(type => type.FullName); + options.ResolveConflictingActions(x => x.First()); }); } @@ -225,7 +265,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index 97b39dff55..1c912fafa2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -70,10 +70,8 @@ public class MyProjectNameIdentityServerModule : AbpModule { builder.AddValidation(options => { - options.AddAudiences("AbpAPIResource"); - + options.AddAudiences("MyProjectName"); options.UseLocalServer(); - options.UseAspNetCore(); }); }); From e3002efa24d136b54e5461f99cb30a37fdfb445e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 17 May 2022 09:58:05 +0300 Subject: [PATCH 27/89] Use implicit consent for in-house applications. --- .../OpenIddict/OpenIddictDataSeedContributor.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index b47f9c17da..986a4a5e1e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -88,7 +88,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: webClientId, type: OpenIddictConstants.ClientTypes.Public, - consentType: OpenIddictConstants.ConsentTypes.Explicit, + consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Web Application", secret: null, grantTypes: new List //Hybrid flow @@ -110,7 +110,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: consoleAndAngularClientId, type: OpenIddictConstants.ClientTypes.Confidential, - consentType: OpenIddictConstants.ConsentTypes.Explicit, + consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Console Test / Angular Application", secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", grantTypes: new List @@ -158,7 +158,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: swaggerClientId, type: OpenIddictConstants.ClientTypes.Confidential, - consentType: OpenIddictConstants.ConsentTypes.Explicit, + consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Blazor Application", secret: configurationSection["MyProjectName_Swagger:ClientSecret"], grantTypes: new List From 83acbbf77583385fc50457aadb0fff521b748852 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 17 May 2022 10:15:41 +0300 Subject: [PATCH 28/89] Update Application.md --- docs/en/Startup-Templates/Application.md | 94 ++++++++++++------------ 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md index 0f4372b621..05973c8776 100644 --- a/docs/en/Startup-Templates/Application.md +++ b/docs/en/Startup-Templates/Application.md @@ -13,7 +13,7 @@ This document explains **the solution structure** and projects in details. If yo You can use the [ABP CLI](../CLI.md) to create a new project using this startup template. Alternatively, you can directly create & download from the [Get Started](https://abp.io/get-started) page. CLI approach is used here. -First, install the ABP CLI if you haven't installed before: +First, install the ABP CLI if you haven't installed it before: ````bash dotnet tool install -g Volo.Abp.Cli @@ -25,8 +25,8 @@ Then use the `abp new` command in an empty folder to create a new solution: abp new Acme.BookStore -t app ```` -* `Acme.BookStore` is the solution name, like *YourCompany.YourProduct*. You can use single level, two-levels or three-levels naming. -* This example specified the template name (`-t` or `--template` option). However, `app` is already the default template if you don't specify it. +* `Acme.BookStore` is the solution name, like *YourCompany.YourProduct*. You can use single-level, two-level or three-level naming. +* This example specified the template name (`-t` or `--template` option). However, the `app` is already the default template if you don't specify it. ### Specify the UI Framework @@ -36,7 +36,7 @@ This template provides multiple UI frameworks: * `blazor`: Blazor UI * `angular`: Angular UI -Use `-u` or `--ui` option to specify the UI framework: +Use the `-u` or `--ui` option to specify the UI framework: ````bash abp new Acme.BookStore -u angular @@ -61,7 +61,7 @@ This template supports the following mobile application frameworks: - `react-native`: React Native -Use `-m` (or `--mobile`) option to specify the mobile application framework: +Use the `-m` (or `--mobile`) option to specify the mobile application framework: ````bash abp new Acme.BookStore -m react-native @@ -75,7 +75,7 @@ Based on the options you've specified, you will get a slightly different solutio ### Default Structure -If you don't specify any additional option, you will have a solution like shown below: +If you don't specify any additional options, you will have a solution like shown below: ![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-v3.png) @@ -93,7 +93,7 @@ This project contains constants, enums and other objects these are actually a pa A `BookType` enum and a `BookConsts` class (which may have some constant fields for the `Book` entity, like `MaxNameLength`) are good candidates for this project. -* This project has no dependency to other projects in the solution. All other projects depend on this directly or indirectly. +* This project has no dependency on other projects in the solution. All other projects depend on this directly or indirectly. #### .Domain Project @@ -105,7 +105,7 @@ A `Book` entity, a `BookManager` domain service and an `IBookRepository` interfa #### .Application.Contracts Project -This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exists to separate interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. +This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exist to separate the interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. An `IBookAppService` interface and a `BookCreationDto` class are good candidates for this project. @@ -130,7 +130,7 @@ This is the integration project for the EF Core. It defines the `DbContext` and #### .DbMigrator Project -This is a console application which simplifies to execute database migrations on development and production environments. When you run this application, it; +This is a console application that simplifies to execute database migrations on development and production environments. When you run this application, it; * Creates the database if necessary. * Applies the pending database migrations. @@ -140,24 +140,24 @@ This is a console application which simplifies to execute database migrations on Especially, seeding initial data is important at this point. ABP has a modular data seed infrastructure. See [its documentation](../Data-Seeding.md) for more about the data seeding. -While creating database & applying migrations seems only necessary for relational databases, this projects comes even if you choose a NoSQL database provider (like MongoDB). In that case, it still seeds initial data which is necessary for the application. +While creating database & applying migrations seem only necessary for relational databases, this project comes even if you choose a NoSQL database provider (like MongoDB). In that case, it still seeds initial data which is necessary for the application. * Depends on the `.EntityFrameworkCore` project (for EF Core) since it needs to access to the migrations. -* Depends on the `.Application.Contracts` project to be able to access permission definitions, because initial data seeder grants all permissions for the admin role by default. +* Depends on the `.Application.Contracts` project to be able to access permission definitions, because the initial data seeder grants all permissions for the admin role by default. #### .HttpApi Project This project is used to define your API Controllers. -Most of time you don't need to manually define API Controllers since ABP's [Auto API Controllers](../API/Auto-API-Controllers.md) feature creates them automagically based on your application layer. However, in case of you need to write API controllers, this is the best place to do it. +Most of the time you don't need to manually define API Controllers since ABP's [Auto API Controllers](../API/Auto-API-Controllers.md) feature creates them automagically based on your application layer. However, in case of you need to write API controllers, this is the best place to do it. * Depends on the `.Application.Contracts` project to be able to inject the application service interfaces. #### .HttpApi.Client Project -This is a project that defines C# client proxies to use the HTTP APIs of the solution. You can share this library to 3rd-party clients, so they can easily consume your HTTP APIs in their Dotnet applications (For other type of applications, they can still use your APIs, either manually or using a tool in their own platform) +This is a project that defines C# client proxies to use the HTTP APIs of the solution. You can share this library to 3rd-party clients, so they can easily consume your HTTP APIs in their Dotnet applications (For other types of applications, they can still use your APIs, either manually or using a tool in their own platform) -Most of time you don't need to manually create C# client proxies, thanks to ABP's [Dynamic C# API Clients](../API/Dynamic-CSharp-API-Clients.md) feature. +Most of the time you don't need to manually create C# client proxies, thanks to ABP's [Dynamic C# API Clients](../API/Dynamic-CSharp-API-Clients.md) feature. `.HttpApi.Client.ConsoleTestApp` project is a console application created to demonstrate the usage of the client proxies. @@ -169,17 +169,17 @@ Most of time you don't need to manually create C# client proxies, thanks to ABP' This project contains the User Interface (UI) of the application if you are using ASP.NET Core MVC UI. It contains Razor pages, JavaScript files, CSS files, images and so on... -This project contains the main `appsettings.json` file that contains the connection string and other configuration of the application. +This project contains the main `appsettings.json` file that contains the connection string and other configurations of the application. -* Depends on the `.HttpApi` since UI layer needs to use APIs and application service interfaces of the solution. +* Depends on the `.HttpApi` since the UI layer needs to use APIs and application service interfaces of the solution. > If you check the source code of the `.Web.csproj` file, you will see the references to the `.Application` and the `.EntityFrameworkCore` projects. > -> These references are actually not needed while coding your UI layer, because UI layer normally doesn't depend on the EF Core or the Application layer's implementation. This startup templates are ready for the tiered deployment, where API layer is hosted in a separate server than the UI layer. +> These references are actually not needed while coding your UI layer, because the UI layer normally doesn't depend on the EF Core or the Application layer's implementation. This startup templates are ready for the tiered deployment, where API layer is hosted in a separate server than the UI layer. > > However, if you don't choose the `--tiered` option, these references will be in the .Web project to be able to host the Web, API and application layers in a single application endpoint. > -> This gives you to ability to use domain entities & repositories in your presentation layer. However, this is considered as a bad practice according to the DDD. +> This gives you to the ability to use domain entities & repositories in your presentation layer. However, this is considered as a bad practice according to the DDD. #### Test Projects @@ -195,32 +195,32 @@ In addition, `.HttpApi.Client.ConsoleTestApp` is a console application (not an a Test projects are prepared for integration testing; -* It is fully integrated to ABP framework and all services in your application. +* It is fully integrated into the ABP framework and all services in your application. * It uses SQLite in-memory database for EF Core. For MongoDB, it uses the [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library. * Authorization is disabled, so any application service can be easily used in tests. -You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization process). +You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization processes). #### How to Run? -Set `.Web` as the startup project and run the application. Default username is `admin` and password is `1q2w3E*`. +Set `.Web` as the startup project and run the application. The default username is `admin` and the password is `1q2w3E*`. See [Getting Started With the ASP.NET Core MVC Template](../Getting-Started-AspNetCore-MVC-Template.md) for more information. ### Tiered Structure -If you have selected the ASP.NET Core UI and specified the `--tiered` option, the solution created will be a tiered solution. The purpose of the tiered structure is to be able to **deploy Web application and HTTP API to different servers**: +If you have selected the ASP.NET Core UI and specified the `--tiered` option, the solution created will be a tiered solution. The purpose of the tiered structure is to be able to **deploy Web applications and HTTP API to different servers**: ![bookstore-visual-studio-solution-v3](../images/tiered-solution-servers.png) * Browser runs your UI by executing HTML, CSS & JavaScript. -* Web servers hosts static UI files (CSS, JavaScript, image... etc.) & dynamic components (e.g. Razor pages). It performs HTTP requests to the API server to execute the business logic of the application. -* API Server hosts the HTTP APIs which then use application & domain layers of the application to perform the business logic. +* Web servers host static UI files (CSS, JavaScript, image... etc.) & dynamic components (e.g. Razor pages). It performs HTTP requests to the API server to execute the business logic of the application. +* API Server hosts the HTTP APIs which then use the application & domain layers of the application to perform the business logic. * Finally, database server hosts your database. So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiered deployment of the default structure explained before. -> Unless you actually need to such a 4-tiered deployment, its suggested to go with the default structure which is simpler to develop, deploy and maintain. +> Unless you actually need to such a 4-tiered deployment, it's suggested going with the default structure which is simpler to develop, deploy and maintain. The solution structure is shown below: @@ -246,17 +246,17 @@ This project is an application that hosts the API of the solution. It has its ow Just like the default structure, this project contains the User Interface (UI) of the application. It contains razor pages, JavaScript files, style files, images and so on... -This project contains an `appsettings.json` file, but this time it does not have a connection string because it never connects to the database. Instead, it mainly contains endpoint of the remote API server and the authentication server. +This project contains an `appsettings.json` file, but this time it does not have a connection string because it never connects to the database. Instead, it mainly contains the endpoint of the remote API server and the authentication server. #### Pre-requirements -* [Redis](https://redis.io/): The applications use Redis as as distributed cache. So, you need to have Redis installed & running. +* [Redis](https://redis.io/): The applications use Redis as a distributed cache. So, you need to have Redis installed & running. #### How to Run? You should run the application with the given order: -* First, run the `.IdentityServer` since other applications depends on it. +* First, run the `.IdentityServer` since other applications depend on it. * Then run the `.HttpApi.Host` since it is used by the `.Web` application. * Finally, you can run the `.Web` project and login to the application (using `admin` as the username and `1q2w3E*` as the password). @@ -286,9 +286,9 @@ Angular application module structure: #### AppModule -`AppModule` is the root module of the application. Some of ABP modules and some essential modules imported to the `AppModule`. +`AppModule` is the root module of the application. Some of the ABP modules and some essential modules are imported to the `AppModule`. -ABP Config modules also have imported to `AppModule`  for initially requirements of lazy-loadable ABP modules. +ABP Config modules also have imported to `AppModule` for initially requirements of lazy-loadable ABP modules. #### AppRoutingModule @@ -315,8 +315,8 @@ You should add `routes` property in the `data` object to add a link on the menu ``` In the above example; * If the user is not logged in, AuthGuard blocks access and redirects to the login page. -* PermissionGuard checks the user's permission with `requiredPolicy` property of the `rotues` object. If the user is not authorized to access the page, the 403 page appears. -* `name` property of `routes` is the menu link label. A localization key can be defined . +* PermissionGuard checks the user's permission with `requiredPolicy` property of the `routes` object. If the user is not authorized to access the page, the 403 page appears. +* `name` property of `routes` is the menu link label. A localization key can be defined. * `iconClass` property of `routes` object is the menu link icon class. * `requiredPolicy` property of `routes` object is the required policy key to access the page. @@ -324,13 +324,13 @@ After the above `routes` definition, if the user is authorized, the dashboard li #### Shared Module -The modules that may be required for all modules have imported to the `SharedModule`. You should import the `SharedModule` to all modules. +The modules that may be required for all modules have been imported to the `SharedModule`. You should import the `SharedModule` to all modules. See the [Sharing Modules](https://angular.io/guide/sharing-ngmodules) document. #### Environments -The files under the `src/environments` folder has the essential configuration of the application. +The files under the `src/environments` folder have the essential configuration of the application. #### Home Module @@ -338,11 +338,11 @@ Home module is an example lazy-loadable module that loads on the root address of #### Styles -The required style files added to `styles` array in the `angular.json`. `AppComponent` loads some style files lazily via `LazyLoadService` after the main bundle is loaded to shorten the first rendering time. +The required style files are added to the `styles` array in the `angular.json`. `AppComponent` loads some style files lazily via `LazyLoadService` after the main bundle is loaded to shorten the first rendering time. #### Testing -You should create your tests in the same folder as the file file you want to test. +You should create your tests in the same folder as the file you want to test. See the [testing document](https://angular.io/guide/testing). @@ -356,7 +356,7 @@ See the [testing document](https://angular.io/guide/testing). ### React Native -if `-m react-native` option is spesified in new project command, the solution includes the [React Native](https://reactnative.dev/) application in the `react-native` folder. +If the `-m react-native` option is specified in the new project command, the solution includes the [React Native](https://reactnative.dev/) application in the `react-native` folder. The server-side is similar to the solution described above. `*.HttpApi.Host` project serves the API, so the React Native application consumes it. @@ -366,17 +366,17 @@ React Native application folder structure as like below: ![react-native-folder-structure](../images/react-native-folder-structure.png) -* `App.js` is bootstrap component of the application. -* `Environment.js` file has the essential configuration of the application. `prod` and `dev` configurations defined in this file. +* `App.js` is the bootstrap component of the application. +* `Environment.js` file has the essential configuration of the application. `prod` and `dev` configurations are defined in this file. * [Contexts](https://reactjs.org/docs/context.html) are created in the `src/contexts` folder. -* [Higher order components](https://reactjs.org/docs/higher-order-components.html) are created in the`src/hocs` folder. -* [Custom hooks](https://reactjs.org/docs/hooks-custom.html#extracting-a-custom-hook) are created in the`src/hooks`. +* [Higher order components](https://reactjs.org/docs/higher-order-components.html) are created in the `src/hocs` folder. +* [Custom hooks](https://reactjs.org/docs/hooks-custom.html#extracting-a-custom-hook) are created in the `src/hooks`. * [Axios interceptors](https://github.com/axios/axios#interceptors) are created in the `src/interceptors` folder. * Utility functions are exported from `src/utils` folder. #### Components -Components that can be used on all screens are created in the `src/components` folder. All components have created as a function that able to use [hooks](https://reactjs.org/docs/hooks-intro.html). +Components that can be used on all screens are created in the `src/components` folder. All components have been created as a function that is able to use [hooks](https://reactjs.org/docs/hooks-intro.html). #### Screens @@ -388,13 +388,13 @@ Each screen is used in a navigator in the `src/navigators` folder. #### Navigation -[React Navigation](https://reactnavigation.org/) is used as a navigation library. Navigators are created in the `src/navigators`. A [drawer](https://reactnavigation.org/docs/drawer-based-navigation/) navigator and several [stack](https://reactnavigation.org/docs/hello-react-navigation/#installing-the-stack-navigator-library) navigators have created in this folder. See the [above diagram](#screens) for navigation structure. +[React Navigation](https://reactnavigation.org/) is used as a navigation library. Navigators are created in the `src/navigators`. A [drawer](https://reactnavigation.org/docs/drawer-based-navigation/) navigator and several [stack](https://reactnavigation.org/docs/hello-react-navigation/#installing-the-stack-navigator-library) navigators have been created in this folder. See the [above diagram](#screens) for the navigation structure. #### State Management -[Redux](https://redux.js.org/) is used as state management library. [Redux Toolkit](https://redux-toolkit.js.org/) library is used as a toolset for efficient Redux development. +[Redux](https://redux.js.org/) is used as a state management library. [Redux Toolkit](https://redux-toolkit.js.org/) library is used as a toolset for efficient Redux development. -Actions, reducers, sagas, selectors are created in the `src/store` folder. Store folder as like below: +Actions, reducers, sagas and selectors are created in the `src/store` folder. Store folder as like below: ![react-native-store-folder](../images/react-native-store-folder.png) @@ -426,11 +426,11 @@ See the [Testing Overview](https://reactjs.org/docs/testing.html) document. * [Native Base](https://nativebase.io/) is used as UI components library. * [React Navigation](https://reactnavigation.org/) is used as navigation library. -* [Axios](https://github.com/axios/axios) is used as HTTP client library. +* [Axios](https://github.com/axios/axios) is used as an HTTP client library. * [Redux](https://redux.js.org/) is used as state management library. * [Redux Toolkit](https://redux-toolkit.js.org/) library is used as a toolset for efficient Redux development. * [Redux-Saga](https://redux-saga.js.org/) is used to manage asynchronous processes. -* [Redux Persist](https://github.com/rt2zz/redux-persist) is used as state persistance. +* [Redux Persist](https://github.com/rt2zz/redux-persist) is used as state persistence. * [Reselect](https://github.com/reduxjs/reselect) is used to create memoized selectors. * [i18n-js](https://github.com/fnando/i18n-js) is used as i18n library. * [expo-font](https://docs.expo.io/versions/latest/sdk/font/) library allows loading fonts easily. From a93b7429e2eda4376bafbccd5b969323f5d4ff1b Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Tue, 17 May 2022 11:06:02 +0300 Subject: [PATCH 29/89] Add localizations for abpIo --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 3 ++- .../Commercial/Localization/Resources/en.json | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 1dc0d7c1f7..9569a08657 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -393,6 +393,7 @@ "StartTime": "Start Time", "EndTime": "End Time", "CreateABookDiscount": "Create a book discount", - "BookDiscountDeletionConfirmationMessage": "Are you sure you want to delete this book discount?" + "BookDiscountDeletionConfirmationMessage": "Are you sure you want to delete this book discount?", + "CustomPaymentFlexSwitchDescription": "With license" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 5a63ea7869..5db648203f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -502,6 +502,7 @@ "ForMoreInformationClickHere": "For more information, click here.", "IsGetOnboardingTraining": "Would you like to get onboarding & web application development training?", "OnboardingWebApplicationDevelopmentTrainingMessage": "To schedule your training calendar, please contact {0} after creating the organization", + "CustomPurchaseMessage": "Click {0} to contact for the next step.", "Note": "Note", "AdditionalNote": "Additional Note", "OnboardingTrainingFaqTitle": "Do you have ABP onboarding training?", From 65be63b782e11d6348b9f4dfe31f8ad97ee37b16 Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Tue, 17 May 2022 11:16:16 +0300 Subject: [PATCH 30/89] fix angular service schematic version warning --- .../ServiceProxying/Angular/AngularServiceProxyGenerator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs index b9f1662a98..5f1698661e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs @@ -100,8 +100,8 @@ public class AngularServiceProxyGenerator : ServiceProxyGeneratorBase Date: Tue, 17 May 2022 16:44:10 +0800 Subject: [PATCH 31/89] Support Blazor-wasm and Angular. --- .../angular/src/environments/environment.ts | 3 +- .../MyProjectNameBlazorModule.cs | 19 +++- .../OpenIddictDataSeedContributor.cs | 91 +++++++++---------- .../MyProjectNameHttpApiHostModule.cs | 2 +- .../MyProjectNameHttpApiHostModule.cs | 19 ++-- .../MyProjectNameIdentityServerModule.cs | 8 +- 6 files changed, 72 insertions(+), 70 deletions(-) diff --git a/templates/app/angular/src/environments/environment.ts b/templates/app/angular/src/environments/environment.ts index 96f84eea43..fcc4e89a07 100644 --- a/templates/app/angular/src/environments/environment.ts +++ b/templates/app/angular/src/environments/environment.ts @@ -10,9 +10,10 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44305', + issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true, diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index a8030ab41c..86935abcf1 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MyCompanyName.MyProjectName.Blazor.Menus; +using OpenIddict.Abstractions; using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic; using Volo.Abp.AspNetCore.Components.Web.Theming.Routing; using Volo.Abp.Autofac.WebAssembly; @@ -73,17 +74,25 @@ public class MyProjectNameBlazorModule : AbpModule builder.Services.AddOidcAuthentication(options => { builder.Configuration.Bind("AuthServer", options.ProviderOptions); - - options.UserOptions.NameClaim = JwtClaimTypes.Name; - options.UserOptions.RoleClaim = JwtClaimTypes.Role; - + options.UserOptions.NameClaim = OpenIddictConstants.Claims.Name; + options.UserOptions.RoleClaim = OpenIddictConstants.Claims.Role; + options.ProviderOptions.DefaultScopes.Add("MyProjectName"); options.ProviderOptions.DefaultScopes.Add("roles"); options.ProviderOptions.DefaultScopes.Add("email"); options.ProviderOptions.DefaultScopes.Add("phone"); }); - AbpClaimTypes.UserName = JwtClaimTypes.Name; + AbpClaimTypes.UserId = OpenIddictConstants.Claims.Subject; + AbpClaimTypes.Role = OpenIddictConstants.Claims.Role; + AbpClaimTypes.UserName = OpenIddictConstants.Claims.Name; + AbpClaimTypes.Name = OpenIddictConstants.Claims.GivenName; + AbpClaimTypes.SurName = OpenIddictConstants.Claims.FamilyName; + AbpClaimTypes.PhoneNumber = OpenIddictConstants.Claims.PhoneNumber; + AbpClaimTypes.PhoneNumberVerified = OpenIddictConstants.Claims.PhoneNumberVerified; + AbpClaimTypes.Email = OpenIddictConstants.Claims.Email; + AbpClaimTypes.EmailVerified = OpenIddictConstants.Claims.EmailVerified; + } private static void ConfigureUI(WebAssemblyHostBuilder builder) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index 986a4a5e1e..621d45a77d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -27,10 +27,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep private readonly IStringLocalizer L; public OpenIddictDataSeedContributor( - IConfiguration configuration, - IOpenIddictApplicationManager applicationManager, - IOpenIddictScopeManager scopeManager, - IPermissionDataSeeder permissionDataSeeder, + IConfiguration configuration, + IOpenIddictApplicationManager applicationManager, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, IStringLocalizer l) { _configuration = configuration; @@ -62,19 +62,19 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep }); } } - + private async Task CreateApplicationsAsync() { var commonScopes = new List { - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Phone, - OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, OpenIddictConstants.Permissions.Scopes.Roles, "MyProjectName" }; - + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); //Web Client @@ -93,7 +93,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep secret: null, grantTypes: new List //Hybrid flow { - OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }, scopes: commonScopes, @@ -101,7 +101,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" ); } - + //Console Test / Angular Client var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) @@ -113,20 +113,19 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Console Test / Angular Application", secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", - grantTypes: new List + grantTypes: new List { - OpenIddictConstants.GrantTypes.AuthorizationCode, - OpenIddictConstants.GrantTypes.Password, - OpenIddictConstants.GrantTypes.ClientCredentials, - "LinkLogin", - "Impersonation" + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken }, scopes: commonScopes, redirectUri: webClientRootUrl, postLogoutRedirectUri: webClientRootUrl ); } - + // Blazor Client var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; if (!blazorClientId.IsNullOrWhiteSpace()) @@ -139,7 +138,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Blazor Application", secret: null, - grantTypes: new List + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, @@ -161,7 +160,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Blazor Application", secret: configurationSection["MyProjectName_Swagger:ClientSecret"], - grantTypes: new List + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, @@ -170,7 +169,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep ); } } - + private async Task CreateApplicationAsync( [NotNull] string name, [NotNull] string type, @@ -187,7 +186,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep { throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); } - + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, StringComparison.OrdinalIgnoreCase)) { throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); @@ -198,7 +197,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep return; //throw new BusinessException(L["TheClientIdentifierIsAlreadyTakenByAnotherApplication"]); } - + var client = await _applicationManager.FindByClientIdAsync(name); if (client == null) { @@ -213,7 +212,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); Check.NotNullOrEmpty(scopes, nameof(scopes)); - + if (new [] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All(grantTypes.Contains)) { application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); @@ -229,7 +228,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep { application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); } - + foreach (var grantType in grantTypes) { if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) @@ -242,36 +241,36 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep { application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); } - - if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || - grantType == OpenIddictConstants.GrantTypes.ClientCredentials || - grantType == OpenIddictConstants.GrantTypes.Password || + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || grantType == OpenIddictConstants.GrantTypes.RefreshToken || grantType == OpenIddictConstants.GrantTypes.DeviceCode) { application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); } - + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) { application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); } - + if (grantType == OpenIddictConstants.GrantTypes.Implicit) { application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); } - + if (grantType == OpenIddictConstants.GrantTypes.Password) { application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); } - + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) { application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); } - + if (grantType == OpenIddictConstants.GrantTypes.Implicit) { application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); @@ -285,13 +284,13 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var buildInScopes = new [] { - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Phone, - OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, OpenIddictConstants.Permissions.Scopes.Roles }; - + foreach (var scope in scopes) { if (buildInScopes.Contains(scope)) @@ -303,7 +302,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); } } - + if (redirectUri != null) { if (!redirectUri.IsNullOrEmpty()) @@ -312,14 +311,14 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep { throw new BusinessException(L["InvalidRedirectUri", redirectUri]); } - + if (application.RedirectUris.All(x => x != uri)) { application.RedirectUris.Add(uri); } } } - + if (postLogoutRedirectUri != null) { if (!postLogoutRedirectUri.IsNullOrEmpty()) @@ -328,14 +327,14 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep { throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); } - + if (application.PostLogoutRedirectUris.All(x => x != uri)) { application.PostLogoutRedirectUris.Add(uri); } } } - + if (permissions != null) { await _permissionDataSeeder.SeedAsync( @@ -350,4 +349,4 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep } } -} \ No newline at end of file +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index b2b07c3c78..b08c7c714e 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -103,7 +103,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; - + options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 35e4551c5a..8197e947ba 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -59,12 +59,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); }); - PreConfigure(options => - { - options.EnableWildcardDomainSupport = true; - options.WildcardDomainsFormat.Add("https://{0}.abp.io/signin-oidc"); - }); - PreConfigure(builder => { builder.AddValidation(options => @@ -75,12 +69,17 @@ public class MyProjectNameHttpApiHostModule : AbpModule }); }); } - + public override void ConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); var hostingEnvironment = context.Services.GetHostingEnvironment(); + Configure(options => + { + options.AddDevelopmentEncryptionAndSigningCertificate = false; + }); + ConfigureBundles(); ConfigureUrls(configuration); ConfigureConventionalControllers(); @@ -161,10 +160,10 @@ public class MyProjectNameHttpApiHostModule : AbpModule options.Audience = "MyProjectName"; options.BackchannelHttpHandler = new HttpClientHandler { - ServerCertificateCustomValidationCallback = - HttpClientHandler.DangerousAcceptAnyServerCertificateValidator + ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; - + options.MapInboundClaims = false; + options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index 1c912fafa2..9f4867d024 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -60,12 +60,6 @@ public class MyProjectNameIdentityServerModule : AbpModule builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); }); - PreConfigure(options => - { - options.EnableWildcardDomainSupport = true; - options.WildcardDomainsFormat.Add("https://{0}.abp.io/signin-oidc"); - }); - PreConfigure(builder => { builder.AddValidation(options => @@ -81,7 +75,7 @@ public class MyProjectNameIdentityServerModule : AbpModule { var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - + Configure(options => { options.AddDevelopmentEncryptionAndSigningCertificate = false; From d49eb6f8cae29884bf098f686ea99a47c4eada31 Mon Sep 17 00:00:00 2001 From: Ebicoglu Date: Tue, 17 May 2022 11:58:46 +0300 Subject: [PATCH 32/89] Add localization for the pricing page volosoft/volo#10268 --- .../Commercial/Localization/Resources/en.json | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 5a63ea7869..fc391cd171 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -488,7 +488,7 @@ "BackOfficeApplicationExplanation": "The actual web application of your system, with multiple UI framework options. You can create any kind of business application.", "LandingWebsite": "Landing Website", "LandingWebsiteExplanation": "A generic landing/public website that can be used for several purposes, like introducing your company, selling your products, etc.", - "ABPFrameworkEBook": "E-Book: Mastering ABP Framework", + "ABPFrameworkEBook": "Mastering ABP Framework e-book", "MasteringAbpFrameworkEBookDescription": "Included within your ABP Commercial license", "Volo.AbpIo.Domain:070000": "The organization name can only contain latin letters, numbers, dots and hyphens!", "Volo.AbpIo.Domain:070001": "The company name can only contain latin letters, numbers, dots, space and hyphens!", @@ -508,6 +508,31 @@ "OnboardingTrainingFaqExplanation": "Yes, we have ABP Training Services to help you get your ABP project started fast. You will learn about ABP from an ABP core team member and you will get the skills to begin your ABP project. In the onboarding training, we will explain how to set up your development environment, install the required tools, create a fully functional CRUD page. The training will be live and the Zoom application will be used, and we are open to using other online meeting platforms. The language of the training will be English. You can also ask your questions about ABP during the sessions. A convenient time and date will be planned for both parties. To get more information, contact us at info@abp.io.", "AddBasket": "Add to Basket", "SendTrainingRequest": "Send Training Request", - "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* The English version of this document is the most up-to-date and the English version will prevail in any dispute." + "OnlyEnglishVersionOfThisDocumentIsTheRecentAndValid": "* The English version of this document is the most up-to-date and the English version will prevail in any dispute.", + "Pricing_Page_Title": "Plans & Pricing", + "Pricing_Page_Description": "Choose the features and functionality your business needs today. Buy an ABP Commercial license and create unlimited projects.", + "Pricing_Page_HurryUp": "Hurry Up!", + "Pricing_Page_BuyLicense": "Buy a license at 2021 prices until January 16!", + "Pricing_Page_ValidForExistingCustomers": "Also valid for existing customers and license renewals.", + "Pricing_Page_Hint1": "The license price includes a certain number of developer seats. If you have more developers, you can always purchase additional seats.", + "Pricing_Page_Hint2": "You can purchase more developer licenses now or in the future. Licenses are seat based, so you can transfer a seat from a developer to another.", + "Pricing_Page_Hint3": "You can develop unlimited count of different products with your license.", + "Pricing_Page_Hint4": "ABP Suite is a tool to assist your development to improve your productivity. It supports generating CRUD pages and creating new projects.", + "Pricing_Page_Hint5": "You can use all the pre-built modules in your applications.", + "Pricing_Page_Hint6": "You can use all the pre-built themes in your applications.", + "Pricing_Page_Hint7": "A startup template is a Visual Studio solution to make you jump-start to your project. All fundamental modules are added and pre-configured for you.", + "Pricing_Page_Hint8": "Mastering ABP Framework e-book explains how to implement .NET solutions with best practices. It is sold on Amazon.com and you can download the book for free within your license.", + "Pricing_Page_Hint9": "You can download the source-code of any module. You may want to add the source code to your solution to make radical changes or just keep it for yourself for security reasons.", + "Pricing_Page_Hint10": "Licenses are for lifetime. That means you can continue to develop your application forever. Accessing to the latest version and getting support are granted within the license period (1 year unless you renew it).", + "Pricing_Page_Hint11": "No restrictions on deployment! You can deploy to as many servers as you want, including the cloud services or on-premises.", + "Pricing_Page_Hint12": "You can update the modules, themes and tools to the latest version within your active license period. After your license expires, you need to renew it, to continue to get updates for bug fixes, new features and enhancements.", + "Pricing_Page_Hint13": "You can get the premium support for one year (you can renew your license to extend it).", + "Pricing_Page_Hint14": "Team and Business licenses have incident/question count limit. If you buy additional developer licenses, your incident limit increases by {0} (for the Team License) or {1} (for the Business License) per developer.", + "Pricing_Page_Hint15": "Only Enterprise License includes private support. You can send e-mail directly to the ABP Team or ask questions on support.abp.io with private ticket option. The private tickets are not visible to the public.", + "Pricing_Page_Hint16": "You can download the source-code of all ABP themes. You may want to add the source code to your solution to make radical changes or just keep it for yourself for security reasons.", + "Pricing_Page_Testimonial_1": "ABP Commercial allowed SC Ventures to deliver a bank-grade multi-tenant silo-database SaaS platform in 9 months to support the accounts receivable / accounts payable supply chain financing of significant value invoices from multiple integrated anchors. The modularity of ABP made it possible for the team to deliver in record time, pass all VAPT, and deploy the containerized micro-services stack via full CI/CD and pipelines into production.", + "Pricing_Page_Testimonial_2": "We are seeing the value of using ABP Commercial to reduce the overhead of custom development projects. And the team is able to unify the code pattern in different project streams. We see more potential in the framework for us to build new features faster than before. We trust we will be constantly seeing the value of leveraging ABP Commercial.", + "Pricing_Page_Testimonial_3": "We love ABP. We don't have to write everything from scratch. We start from out-of-the-box features and just focus on what we really need to write. Also, ABP is well-architected and the code is high quality with fewer bugs. If we would have to write everything we needed on our own, we might have to spend years. Once more things we like is that the new version, or issue fixing, or improvement come out very soon every other week. We don't wait too long.", + "Pricing_Page_Testimonial_4": "ABP Commercial is a fantastic product would recommend. Commercial products to market for our customers in a single configurable platform. The jump start that the framework and tooling provide any team is worth every cent. ABP Commercial was the best fit for our needs." } } From c73cf21bd9f0d852d3d75e88a27961e4a76acee8 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 17 May 2022 16:59:07 +0800 Subject: [PATCH 33/89] Update npm/packs/core/src/abp.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Halil İbrahim Kalkan --- npm/packs/core/src/abp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/packs/core/src/abp.js b/npm/packs/core/src/abp.js index f715b5004c..b028c013d6 100644 --- a/npm/packs/core/src/abp.js +++ b/npm/packs/core/src/abp.js @@ -777,7 +777,7 @@ var abp = abp || {}; abp.globalFeatures = abp.globalFeatures || {}; - abp.globalFeatures.enabledFeatures = abp.globalFeatures.enabledFeatures || {}; + abp.globalFeatures.enabledFeatures = abp.globalFeatures.enabledFeatures || []; abp.globalFeatures.isEnabled = function(name){ return abp.globalFeatures.enabledFeatures.indexOf(name) != -1; From 58a2bbc6487638e2ace001ba7b032f0a526d3b2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 17 May 2022 14:07:30 +0300 Subject: [PATCH 34/89] Remove unncessary mappings. --- .../MyProjectNameBlazorModule.cs | 9 --------- .../MyProjectNameHttpApiHostModule.cs | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index 86935abcf1..f76c845926 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -83,16 +83,7 @@ public class MyProjectNameBlazorModule : AbpModule options.ProviderOptions.DefaultScopes.Add("phone"); }); - AbpClaimTypes.UserId = OpenIddictConstants.Claims.Subject; - AbpClaimTypes.Role = OpenIddictConstants.Claims.Role; AbpClaimTypes.UserName = OpenIddictConstants.Claims.Name; - AbpClaimTypes.Name = OpenIddictConstants.Claims.GivenName; - AbpClaimTypes.SurName = OpenIddictConstants.Claims.FamilyName; - AbpClaimTypes.PhoneNumber = OpenIddictConstants.Claims.PhoneNumber; - AbpClaimTypes.PhoneNumberVerified = OpenIddictConstants.Claims.PhoneNumberVerified; - AbpClaimTypes.Email = OpenIddictConstants.Claims.Email; - AbpClaimTypes.EmailVerified = OpenIddictConstants.Claims.EmailVerified; - } private static void ConfigureUI(WebAssemblyHostBuilder builder) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 8197e947ba..7696512460 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -28,7 +28,6 @@ using Volo.Abp.Autofac; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.OpenIddict; -using Volo.Abp.OpenIddict.WildcardDomains; using Volo.Abp.Swashbuckle; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.VirtualFileSystem; @@ -162,6 +161,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule { ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; + options.MapInboundClaims = false; options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); From 3bf2f61e886635e4f08d50761606c37f17ac7e16 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Tue, 17 May 2022 15:46:16 +0300 Subject: [PATCH 35/89] Move some localizations to base for abpIo --- .../AbpIoLocalization/Base/Localization/Resources/en.json | 2 ++ .../Commercial/Localization/Resources/en.json | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json index e898619b64..205bc10d05 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json @@ -26,6 +26,8 @@ "Volo.AbpIo.Domain:030009": "User not found!", "Volo.AbpIo.Domain:030010": "To purchase the trial license, you first need to activate your trial license!", "Volo.AbpIo.Domain:030011": "You cannot delete a trial license when it is purchased!", + "Volo.AbpIo.Domain:070000": "The organization name can only contain latin letters, numbers, dots and hyphens!", + "Volo.AbpIo.Domain:070001": "The company name can only contain latin letters, numbers, dots, space and hyphens!", "WantToLearn?": "Want to learn?", "ReadyToGetStarted?": "Ready to get started?", "JoinOurCommunity": "Join our community", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 5a63ea7869..3f949444a0 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -379,8 +379,6 @@ "TaxNoValidationMessage": "TAX/VAT No is too long!", "NotesValidationMessage": "Notes field is too long!", "CheckYourBillingInfo": "You can create your invoice only once! Check your billing information before creating your invoice.", - "Volo.AbpIo.Commercial:030000": "You already used your trial period.", - "Volo.AbpIo.Commercial:030001": "This organization name already exists.", "StartYourFreeTrial": "Start your free trial", "TrialLicenseModelInvalidErrorMessage": "One of the following fields is invalid: Country Name, Company Size, Industry or Purpose Of Usage.", "Trial": "Trial", @@ -490,8 +488,6 @@ "LandingWebsiteExplanation": "A generic landing/public website that can be used for several purposes, like introducing your company, selling your products, etc.", "ABPFrameworkEBook": "E-Book: Mastering ABP Framework", "MasteringAbpFrameworkEBookDescription": "Included within your ABP Commercial license", - "Volo.AbpIo.Domain:070000": "The organization name can only contain latin letters, numbers, dots and hyphens!", - "Volo.AbpIo.Domain:070001": "The company name can only contain latin letters, numbers, dots, space and hyphens!", "FullName": "Full Name", "LicenseTypeNotCorrect": "The license type is not correct!", "Trainings": "Trainings", From b424f5af8ca2cbdc595304593a852aa442ba9864 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 17 May 2022 16:02:35 +0300 Subject: [PATCH 36/89] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 7b232c4873..b3e5a876df 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -96,13 +96,7 @@ Ensure that the `TodoApp.HttpApi.Host` project is the startup project, then run You can explore and test your HTTP API with this UI. If it works, we can run the Angular client application. -First, run the following command to restore the NPM packages; - -````bash -npm install -```` - -It will take some time to install all the packages. Then you can run the application using the following command: +You can run the application using the following command: ````bash npm start From e5da6779abc28fdfa5e7753259fd3f3c776482e8 Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Tue, 17 May 2022 16:19:51 +0300 Subject: [PATCH 37/89] quick grammar fix --- docs/en/Startup-Templates/Application.md | 46 ++++++++++++------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md index 05973c8776..293031a133 100644 --- a/docs/en/Startup-Templates/Application.md +++ b/docs/en/Startup-Templates/Application.md @@ -26,7 +26,7 @@ abp new Acme.BookStore -t app ```` * `Acme.BookStore` is the solution name, like *YourCompany.YourProduct*. You can use single-level, two-level or three-level naming. -* This example specified the template name (`-t` or `--template` option). However, the `app` is already the default template if you don't specify it. +* This example specified the template name (`-t` or `--template` option). However, `app` is already the default template if you didn't specify it. ### Specify the UI Framework @@ -75,7 +75,7 @@ Based on the options you've specified, you will get a slightly different solutio ### Default Structure -If you don't specify any additional options, you will have a solution like shown below: +If you don't specify any additional options, you will have a solution as shown below: ![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-v3.png) @@ -93,7 +93,7 @@ This project contains constants, enums and other objects these are actually a pa A `BookType` enum and a `BookConsts` class (which may have some constant fields for the `Book` entity, like `MaxNameLength`) are good candidates for this project. -* This project has no dependency on other projects in the solution. All other projects depend on this directly or indirectly. +* This project has no dependency on other projects in the solution. All other projects depend on this one directly or indirectly. #### .Domain Project @@ -105,7 +105,7 @@ A `Book` entity, a `BookManager` domain service and an `IBookRepository` interfa #### .Application.Contracts Project -This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It does exist to separate the interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. +This project mainly contains [application service](../Application-Services.md) **interfaces** and [Data Transfer Objects](../Data-Transfer-Objects.md) (DTO) of the application layer. It exists to separate the interface & implementation of the application layer. In this way, the interface project can be shared to the clients as a contract package. An `IBookAppService` interface and a `BookCreationDto` class are good candidates for this project. @@ -130,7 +130,7 @@ This is the integration project for the EF Core. It defines the `DbContext` and #### .DbMigrator Project -This is a console application that simplifies to execute database migrations on development and production environments. When you run this application, it; +This is a console application that simplifies the execution of database migrations on development and production environments. When you run this application, it: * Creates the database if necessary. * Applies the pending database migrations. @@ -140,10 +140,10 @@ This is a console application that simplifies to execute database migrations on Especially, seeding initial data is important at this point. ABP has a modular data seed infrastructure. See [its documentation](../Data-Seeding.md) for more about the data seeding. -While creating database & applying migrations seem only necessary for relational databases, this project comes even if you choose a NoSQL database provider (like MongoDB). In that case, it still seeds initial data which is necessary for the application. +While creating database & applying migrations seem only necessary for relational databases, this project comes even if you choose a NoSQL database provider (like MongoDB). In that case, it still seeds the initial data which is necessary for the application. * Depends on the `.EntityFrameworkCore` project (for EF Core) since it needs to access to the migrations. -* Depends on the `.Application.Contracts` project to be able to access permission definitions, because the initial data seeder grants all permissions for the admin role by default. +* Depends on the `.Application.Contracts` project to be able to access permission definitions, because the initial data seeder grants all permissions to the admin role by default. #### .HttpApi Project @@ -171,15 +171,15 @@ This project contains the User Interface (UI) of the application if you are usin This project contains the main `appsettings.json` file that contains the connection string and other configurations of the application. -* Depends on the `.HttpApi` since the UI layer needs to use APIs and application service interfaces of the solution. +* Depends on the `.HttpApi` project since the UI layer needs to use APIs and the application service interfaces of the solution. > If you check the source code of the `.Web.csproj` file, you will see the references to the `.Application` and the `.EntityFrameworkCore` projects. > -> These references are actually not needed while coding your UI layer, because the UI layer normally doesn't depend on the EF Core or the Application layer's implementation. This startup templates are ready for the tiered deployment, where API layer is hosted in a separate server than the UI layer. +> These references are actually not needed while coding your UI layer, because the UI layer normally doesn't depend on the EF Core or the Application layer's implementation. These startup templates are ready for tiered deployment, where the API layer is hosted on a separate server than the UI layer. > > However, if you don't choose the `--tiered` option, these references will be in the .Web project to be able to host the Web, API and application layers in a single application endpoint. > -> This gives you to the ability to use domain entities & repositories in your presentation layer. However, this is considered as a bad practice according to the DDD. +> This gives you the ability to use domain entities & repositories in your presentation layer. However, this is considered as a bad practice according to DDD. #### Test Projects @@ -199,7 +199,7 @@ Test projects are prepared for integration testing; * It uses SQLite in-memory database for EF Core. For MongoDB, it uses the [Mongo2Go](https://github.com/Mongo2Go/Mongo2Go) library. * Authorization is disabled, so any application service can be easily used in tests. -You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all initialization processes). +You can still create unit tests for your classes which will be harder to write (because you will need to prepare mock/fake objects), but faster to run (because it only tests a single class and skips all the initialization processes). #### How to Run? @@ -215,12 +215,12 @@ If you have selected the ASP.NET Core UI and specified the `--tiered` option, th * Browser runs your UI by executing HTML, CSS & JavaScript. * Web servers host static UI files (CSS, JavaScript, image... etc.) & dynamic components (e.g. Razor pages). It performs HTTP requests to the API server to execute the business logic of the application. -* API Server hosts the HTTP APIs which then use the application & domain layers of the application to perform the business logic. +* The API Server hosts the HTTP APIs which then use the application & domain layers of the application to perform the business logic. * Finally, database server hosts your database. So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiered deployment of the default structure explained before. -> Unless you actually need to such a 4-tiered deployment, it's suggested going with the default structure which is simpler to develop, deploy and maintain. +> Unless you actually need such a 4-tiered deployment, it's suggested to go with the default structure which is simpler to develop, deploy and maintain. The solution structure is shown below: @@ -286,9 +286,9 @@ Angular application module structure: #### AppModule -`AppModule` is the root module of the application. Some of the ABP modules and some essential modules are imported to the `AppModule`. +`AppModule` is the root module of the application. Some of the ABP modules and some essential modules are imported to `AppModule`. -ABP Config modules also have imported to `AppModule` for initially requirements of lazy-loadable ABP modules. +ABP Config modules have also been imported to `AppModule` for initial requirements of the lazy-loadable ABP modules. #### AppRoutingModule @@ -315,16 +315,16 @@ You should add `routes` property in the `data` object to add a link on the menu ``` In the above example; * If the user is not logged in, AuthGuard blocks access and redirects to the login page. -* PermissionGuard checks the user's permission with `requiredPolicy` property of the `routes` object. If the user is not authorized to access the page, the 403 page appears. -* `name` property of `routes` is the menu link label. A localization key can be defined. -* `iconClass` property of `routes` object is the menu link icon class. -* `requiredPolicy` property of `routes` object is the required policy key to access the page. +* PermissionGuard checks the user's permission with the `requiredPolicy` property of the `routes` object. If the user is not authorized to access the page, the 403 page appears. +* The `name` property the of `routes` is the menu link label. A localization key can be defined. +* The `iconClass` property the of `routes` object is the menu link icon class. +* The `requiredPolicy` property the of `routes` object is the required policy key to access the page. After the above `routes` definition, if the user is authorized, the dashboard link will appear on the menu. #### Shared Module -The modules that may be required for all modules have been imported to the `SharedModule`. You should import the `SharedModule` to all modules. +The modules that may be required for all modules have been imported to the `SharedModule`. You should import `SharedModule` to all modules. See the [Sharing Modules](https://angular.io/guide/sharing-ngmodules) document. @@ -338,7 +338,7 @@ Home module is an example lazy-loadable module that loads on the root address of #### Styles -The required style files are added to the `styles` array in the `angular.json`. `AppComponent` loads some style files lazily via `LazyLoadService` after the main bundle is loaded to shorten the first rendering time. +The required style files are added to the `styles` array in `angular.json`. `AppComponent` loads some style files lazily via `LazyLoadService` after the main bundle is loaded to shorten the first rendering time. #### Testing @@ -370,7 +370,7 @@ React Native application folder structure as like below: * `Environment.js` file has the essential configuration of the application. `prod` and `dev` configurations are defined in this file. * [Contexts](https://reactjs.org/docs/context.html) are created in the `src/contexts` folder. * [Higher order components](https://reactjs.org/docs/higher-order-components.html) are created in the `src/hocs` folder. -* [Custom hooks](https://reactjs.org/docs/hooks-custom.html#extracting-a-custom-hook) are created in the `src/hooks`. +* [Custom hooks](https://reactjs.org/docs/hooks-custom.html#extracting-a-custom-hook) are created in `src/hooks`. * [Axios interceptors](https://github.com/axios/axios#interceptors) are created in the `src/interceptors` folder. * Utility functions are exported from `src/utils` folder. @@ -394,7 +394,7 @@ Each screen is used in a navigator in the `src/navigators` folder. [Redux](https://redux.js.org/) is used as a state management library. [Redux Toolkit](https://redux-toolkit.js.org/) library is used as a toolset for efficient Redux development. -Actions, reducers, sagas and selectors are created in the `src/store` folder. Store folder as like below: +Actions, reducers, sagas and selectors are created in the `src/store` folder. Store folder is as below: ![react-native-store-folder](../images/react-native-store-folder.png) From 2081e14598cf5d0ae8bcd7d4110f58406d0a1702 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Tue, 17 May 2022 16:24:54 +0300 Subject: [PATCH 38/89] Update Application.md --- docs/en/Startup-Templates/Application.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/Startup-Templates/Application.md b/docs/en/Startup-Templates/Application.md index 293031a133..a262ef2d88 100644 --- a/docs/en/Startup-Templates/Application.md +++ b/docs/en/Startup-Templates/Application.md @@ -316,9 +316,9 @@ You should add `routes` property in the `data` object to add a link on the menu In the above example; * If the user is not logged in, AuthGuard blocks access and redirects to the login page. * PermissionGuard checks the user's permission with the `requiredPolicy` property of the `routes` object. If the user is not authorized to access the page, the 403 page appears. -* The `name` property the of `routes` is the menu link label. A localization key can be defined. -* The `iconClass` property the of `routes` object is the menu link icon class. -* The `requiredPolicy` property the of `routes` object is the required policy key to access the page. +* The `name` property of `routes` is the menu link label. A localization key can be defined. +* The `iconClass` property of the `routes` object is the menu link icon class. +* The `requiredPolicy` property of the `routes` object is the required policy key to access the page. After the above `routes` definition, if the user is authorized, the dashboard link will appear on the menu. From f4e1c7b86bf769046bfc920b5bc61f3bd9a0a314 Mon Sep 17 00:00:00 2001 From: Cyril-hcj <31679398+Cyril-hcj@users.noreply.github.com> Date: Tue, 17 May 2022 23:24:26 +0800 Subject: [PATCH 39/89] Update Domain-Services.md Duplicate --- docs/zh-Hans/Domain-Services.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/zh-Hans/Domain-Services.md b/docs/zh-Hans/Domain-Services.md index a617aea645..0c61dd2330 100644 --- a/docs/zh-Hans/Domain-Services.md +++ b/docs/zh-Hans/Domain-Services.md @@ -116,7 +116,6 @@ namespace MyProject.Issues ## 应用程序服务与领域服务 -虽然应用服务和领域服务都实现了业务规则,但存在根本的逻辑和形式差异; 虽然 [应用服务](Application-Services.md) 和领域服务都实现了业务规则,但存在根本的逻辑和形式差异: * 应用程序服务实现应用程序的 **用例** (典型 Web 应用程序中的用户交互), 而领域服务实现 **核心的、用例独立的领域逻辑**. From 00fc63e57f48b72ad15745146afdf2570e03d439 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 09:26:09 +0800 Subject: [PATCH 40/89] Update Volo.Abp.Core.Tests.csproj --- framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj b/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj index 0f00d385b2..9f3f838c75 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj +++ b/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj @@ -2,6 +2,7 @@ + net6.0 From 22a40a81037170e6043933fc7a24028d69cf6f14 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 09:26:46 +0800 Subject: [PATCH 41/89] Update Volo.Abp.Core.Tests.csproj --- framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj b/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj index 9f3f838c75..0f00d385b2 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj +++ b/framework/test/Volo.Abp.Core.Tests/Volo.Abp.Core.Tests.csproj @@ -2,7 +2,6 @@ - net6.0 From 48b61f9e623afbd7f2efe3d74fbc1b145a878333 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 18 May 2022 09:56:55 +0800 Subject: [PATCH 42/89] Update Entities.md --- docs/zh-Hans/Entities.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh-Hans/Entities.md b/docs/zh-Hans/Entities.md index 7cd96b2820..8fbf16ddd3 100644 --- a/docs/zh-Hans/Entities.md +++ b/docs/zh-Hans/Entities.md @@ -70,7 +70,7 @@ public class BookAppService : ApplicationService, IBookAppService } ```` -* `BookAppService` 注入图书实体的默认[仓库](Repositories.md),使用`InsertAsync`方法插入 `Book` 到数据库中. +* `BookAppService` 注入图书实体的默认[仓储](Repositories.md),使用`InsertAsync`方法插入 `Book` 到数据库中. * `GuidGenerator`类型是 `IGuidGenerator`,它是在`ApplicationService`基类中定义的属性. ABP将这样常用属性预注入,所以不需要手动[注入](Dependency-Injection.md). * 如果你想遵循DDD最佳实践,请参阅下面的*聚合示例*部分. @@ -373,7 +373,7 @@ public static class IdentityUserExtensions * 对于 [Entity Framework Core](Entity-Framework-Core.md),这是两种类型的配置; * 默认它以 `JSON` 字符串形式存储在 `ExtraProperties` 字段中. 序列化到 `JSON` 和反序列化到 `JSON` 由ABP使用EF Core的[值转换](https://docs.microsoft.com/zh-cn/ef/core/modeling/value-conversions)系统自动完成. - * 如果需要,你可以使用 `ObjectExtensionManager` 为所需的额外属性定义一个单独的数据库字段. 那些使用 `ObjectExtensionManager` 配置的属性继续使用单个 `JSON` 字段. 当你使用预构建的[应用模块](Modules/Index.md)并且想要[扩展模块的实体](Customizing-Application-Modules-Extending-Entities.md). 参阅[EF Core迁移文档](Entity-Framework-Core.md)了解如何使用 `ObjectExtensionManager`. + * 如果需要,你可以使用 `ObjectExtensionManager` 为所需的额外属性定义一个单独的数据库字段. 未使用 `ObjectExtensionManager` 配置的属性继续使用单个 `JSON` 字段. 当你使用预构建的[应用模块](Modules/Index.md)并且想要[扩展模块的实体](Customizing-Application-Modules-Extending-Entities.md). 参阅[EF Core迁移文档](Entity-Framework-Core.md)了解如何使用 `ObjectExtensionManager`. * 对于 [MongoDB](MongoDB.md), 它以 **常规字段** 存储, 因为 MongoDB 天生支持这种 [额外](https://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#supporting-extra-elements) 系统. ### 讨论额外的属性 From 1d859069b9f5e3c4dd562a848343d3e4e0334da4 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 12:36:15 +0800 Subject: [PATCH 43/89] Use `PreferredUsername` instead of `Name` for UserName clasim. --- .../OpenIddict.Demo.Server/OpenIddictServerModule.cs | 10 ++++++++++ .../openiddict/app/OpenIddict.Demo.Server/Program.cs | 7 ------- .../Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs | 2 +- .../AbpDefaultOpenIddictClaimDestinationsProvider.cs | 2 +- .../Controllers/TokenController.ClientCredentials.cs | 6 +++--- .../Abp/OpenIddict/Controllers/UserInfoController.cs | 2 +- .../MyProjectNameBlazorModule.cs | 2 -- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddictServerModule.cs b/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddictServerModule.cs index 3f0b36ed66..616b3ef0c7 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddictServerModule.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddictServerModule.cs @@ -1,7 +1,10 @@ using System.Text; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; +using OpenIddict.Abstractions; using OpenIddict.Demo.Server.EntityFrameworkCore; +using OpenIddict.Server.AspNetCore; +using OpenIddict.Validation.AspNetCore; using Volo.Abp; using Volo.Abp.Account; using Volo.Abp.Account.Web; @@ -107,6 +110,13 @@ public class OpenIddictServerModule : AbpModule public override void ConfigureServices(ServiceConfigurationContext context) { + context.Services.ConfigureApplicationCookie(options => + { + options.ForwardDefaultSelector = ctx => ctx.Request.Path.StartsWithSegments("/api") + ? OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme + : null; + }); + Configure(options => { options.AddDevelopmentEncryptionAndSigningCertificate = false; diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Program.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Program.cs index eb5b1673b2..3bfc26a9a3 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Program.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Program.cs @@ -41,13 +41,6 @@ builder.Services.Configure(options => // options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); // }); -// builder.Services.ConfigureApplicationCookie(options => -// { -// options.ForwardDefaultSelector = ctx => ctx.Request.Path.StartsWithSegments("/api") -// ? OtherScheme -// : null; -// }); - await builder.AddApplicationAsync(); var app = builder.Build(); diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs index 9a2a289d08..77971ff5f6 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs @@ -40,7 +40,7 @@ public class AbpOpenIddictAspNetCoreModule : AbpModule { AbpClaimTypes.UserId = OpenIddictConstants.Claims.Subject; AbpClaimTypes.Role = OpenIddictConstants.Claims.Role; - AbpClaimTypes.UserName = OpenIddictConstants.Claims.Name; + AbpClaimTypes.UserName = OpenIddictConstants.Claims.PreferredUsername; AbpClaimTypes.Name = OpenIddictConstants.Claims.GivenName; AbpClaimTypes.SurName = OpenIddictConstants.Claims.FamilyName; AbpClaimTypes.PhoneNumber = OpenIddictConstants.Claims.PhoneNumber; diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs index 7f54cd81aa..c00339a339 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs @@ -27,7 +27,7 @@ public class AbpDefaultOpenIddictClaimDestinationsProvider : IAbpOpenIddictClaim switch (claim.Type) { - case OpenIddictConstants.Claims.Name: + case OpenIddictConstants.Claims.PreferredUsername: claim.SetDestinations(OpenIddictConstants.Destinations.AccessToken); if (context.Principal.HasScope(OpenIddictConstants.Scopes.Profile)) { diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.ClientCredentials.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.ClientCredentials.cs index 0d0c26166a..21fa7bf1cd 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.ClientCredentials.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.ClientCredentials.cs @@ -26,13 +26,13 @@ public partial class TokenController // will be used to create an id_token, a token or a code. var identity = new ClaimsIdentity( TokenValidationParameters.DefaultAuthenticationType, - OpenIddictConstants.Claims.Name, OpenIddictConstants.Claims.Role); + OpenIddictConstants.Claims.PreferredUsername, OpenIddictConstants.Claims.Role); // Use the client_id as the subject identifier. identity.AddClaim(OpenIddictConstants.Claims.Subject, await ApplicationManager.GetClientIdAsync(application), OpenIddictConstants.Destinations.AccessToken, OpenIddictConstants.Destinations.IdentityToken); - identity.AddClaim(OpenIddictConstants.Claims.Name, await ApplicationManager.GetDisplayNameAsync(application), + identity.AddClaim(OpenIddictConstants.Claims.PreferredUsername, await ApplicationManager.GetDisplayNameAsync(application), OpenIddictConstants.Destinations.AccessToken, OpenIddictConstants.Destinations.IdentityToken); // Note: In the original OAuth 2.0 specification, the client credentials grant @@ -65,7 +65,7 @@ public partial class TokenController // whether they should be included in access tokens, in identity tokens or in both. return claim.Type switch { - OpenIddictConstants.Claims.Name or OpenIddictConstants.Claims.Subject + OpenIddictConstants.Claims.PreferredUsername or OpenIddictConstants.Claims.Subject => ImmutableArray.Create(OpenIddictConstants.Destinations.AccessToken, OpenIddictConstants.Destinations.IdentityToken), diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs index 9655695924..8d1c48760b 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs @@ -40,7 +40,7 @@ public class UserInfoController : AbpOpenIdDictControllerBase if (User.HasScope(OpenIddictConstants.Scopes.Profile)) { claims[AbpClaimTypes.TenantId] = user.TenantId; - claims[OpenIddictConstants.Claims.Name] = user.UserName; + claims[OpenIddictConstants.Claims.PreferredUsername] = user.UserName; claims[OpenIddictConstants.Claims.FamilyName] = user.Surname; } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs index f76c845926..c970430580 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -82,8 +82,6 @@ public class MyProjectNameBlazorModule : AbpModule options.ProviderOptions.DefaultScopes.Add("email"); options.ProviderOptions.DefaultScopes.Add("phone"); }); - - AbpClaimTypes.UserName = OpenIddictConstants.Claims.Name; } private static void ConfigureUI(WebAssemblyHostBuilder builder) From efdbbed1a9716981cbdab0540800f048e1531bc5 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 15:10:02 +0800 Subject: [PATCH 44/89] Add `OpenIddictClaimsPrincipalContributor`. --- ...aultOpenIddictClaimDestinationsProvider.cs | 9 +++++ .../OpenIddictClaimsPrincipalContributor.cs | 35 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs index 7f54cd81aa..a9db913286 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.JsonWebTokens; using OpenIddict.Abstractions; using Volo.Abp.DependencyInjection; using Volo.Abp.Security.Claims; @@ -35,6 +36,14 @@ public class AbpDefaultOpenIddictClaimDestinationsProvider : IAbpOpenIddictClaim } break; + case JwtRegisteredClaimNames.UniqueName: + claim.SetDestinations(OpenIddictConstants.Destinations.AccessToken); + if (context.Principal.HasScope(OpenIddictConstants.Scopes.Profile)) + { + claim.SetDestinations(OpenIddictConstants.Destinations.AccessToken, OpenIddictConstants.Destinations.IdentityToken); + } + break; + case OpenIddictConstants.Claims.Email: claim.SetDestinations(OpenIddictConstants.Destinations.AccessToken); if (context.Principal.HasScope(OpenIddictConstants.Scopes.Email)) diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs new file mode 100644 index 0000000000..9a4c027f97 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs @@ -0,0 +1,35 @@ +using System.Linq; +using System.Security.Claims; +using System.Security.Principal; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.JsonWebTokens; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Volo.Abp.OpenIddict; + +/// +/// https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/1627 +/// https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/05e02b5e0383be40e45c667c12f6667d38e33fcc/src/System.IdentityModel.Tokens.Jwt/ClaimTypeMapping.cs#L52 +/// +public class OpenIddictClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency +{ + public Task ContributeAsync(AbpClaimsPrincipalContributorContext context) + { + var identity = context.ClaimsPrincipal.Identities.FirstOrDefault(); + if (identity != null) + { + var options = context.ServiceProvider.GetRequiredService>().Value; + var usernameClaim = identity.FindFirst(options.ClaimsIdentity.UserNameClaimType); + if (usernameClaim != null) + { + identity.AddIfNotContains(new Claim(JwtRegisteredClaimNames.UniqueName, usernameClaim.Value)); + } + } + + return Task.CompletedTask; + } +} From b9611f8e2c9b1a21df45a50fabcd9caa2ee0c591 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 15:31:14 +0800 Subject: [PATCH 45/89] Add `ConcurrencyStamp` property to `PersonalInfoModel` class. Close #12643 --- .../Pages/Account/AccountManage.razor.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/AccountManage.razor.cs b/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/AccountManage.razor.cs index f794b19672..3cb5acfda3 100644 --- a/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/AccountManage.razor.cs +++ b/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/AccountManage.razor.cs @@ -92,4 +92,6 @@ public class PersonalInfoModel public bool PhoneNumberConfirmed { get; set; } public bool EmailConfirmed { get; set; } + + public string ConcurrencyStamp { get; set; } } From 2d322af5c94983eb7628f2e95f9d1b1fd7d89774 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 18 May 2022 16:54:19 +0800 Subject: [PATCH 46/89] Update packages to latest --- Directory.Build.props | 24 ++++++++++++++----- common.props | 2 +- configureawait.props | 2 +- ...AspNetCore.Authentication.JwtBearer.csproj | 2 +- ...etCore.Authentication.OpenIdConnect.csproj | 2 +- .../Volo.Abp.AspNetCore.Components.Web.csproj | 4 ++-- ...p.AspNetCore.Components.WebAssembly.csproj | 4 ++-- .../Volo.Abp.AspNetCore.Components.csproj | 2 +- ...AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.UI.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.csproj | 4 ++-- .../Volo.Abp.AspNetCore.Serilog.csproj | 2 +- .../Volo.Abp.AspNetCore.TestBase.csproj | 2 +- ...Volo.Abp.Authorization.Abstractions.csproj | 2 +- .../Volo.Abp.Autofac/Volo.Abp.Autofac.csproj | 2 +- .../Volo.Abp.AzureServiceBus.csproj | 2 +- .../Volo.Abp.BlobStoring.Aliyun.csproj | 2 +- .../Volo.Abp.BlobStoring.Aws.csproj | 4 ++-- .../Volo.Abp.BlobStoring.Azure.csproj | 2 +- .../Volo.Abp.BlobStoring.FileSystem.csproj | 2 +- .../Volo.Abp.BlobStoring.Minio.csproj | 2 +- ...Volo.Abp.Caching.StackExchangeRedis.csproj | 2 +- .../Volo.Abp.Caching/Volo.Abp.Caching.csproj | 2 +- .../Volo.Abp.Castle.Core.csproj | 4 ++-- .../Volo.Abp.Cli.Core.csproj | 4 ++-- .../src/Volo.Abp.Cli/Volo.Abp.Cli.csproj | 6 ++--- .../src/Volo.Abp.Core/Volo.Abp.Core.csproj | 14 +++++------ .../Volo.Abp.Dapper/Volo.Abp.Dapper.csproj | 2 +- .../Volo.Abp.DistributedLocking.csproj | 2 +- ...p.EntityFrameworkCore.Oracle.Devart.csproj | 2 +- ...o.Abp.EntityFrameworkCore.SqlServer.csproj | 2 +- ...Volo.Abp.EntityFrameworkCore.Sqlite.csproj | 2 +- .../Volo.Abp.EntityFrameworkCore.csproj | 4 ++-- .../Volo.Abp.EventBus.Rebus.csproj | 2 +- .../Volo.Abp.ExceptionHandling.csproj | 2 +- .../Volo.Abp.FluentValidation.csproj | 2 +- .../Volo.Abp.HangFire.csproj | 2 +- ...tp.Client.IdentityModel.WebAssembly.csproj | 2 +- .../src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj | 2 +- .../src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj | 2 +- .../Volo.Abp.MailKit/Volo.Abp.MailKit.csproj | 2 +- .../Volo.Abp.Minify/Volo.Abp.Minify.csproj | 2 +- .../Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj | 2 +- .../Volo.Abp.Quartz/Volo.Abp.Quartz.csproj | 6 ++--- .../Volo.Abp.RabbitMQ.csproj | 2 +- .../Volo.Abp.Sms.Aliyun.csproj | 2 +- .../Volo.Abp.Swashbuckle.csproj | 2 +- .../Volo.Abp.TextTemplating.Razor.csproj | 4 ++-- .../Volo.Abp.TextTemplating.Scriban.csproj | 2 +- .../Volo.Abp.Timing/Volo.Abp.Timing.csproj | 2 +- .../Volo.Abp.VirtualFileSystem.csproj | 2 +- .../SimpleConsoleDemo.csproj | 2 +- .../Volo.Abp.AspNetCore.Mvc.Tests.csproj | 2 +- .../Volo.Abp.AspNetCore.Serilog.Tests.csproj | 2 +- .../Volo.Abp.BlobStoring.Aliyun.Tests.csproj | 2 +- .../Volo.Abp.Sms.Aliyun.Tests.csproj | 2 +- .../Volo.Abp.VirtualFileSystem.Tests.csproj | 2 +- ...o.Abp.Account.Application.Contracts.csproj | 2 +- .../Volo.Abp.Account.Application.csproj | 2 +- ...Volo.Abp.Account.Web.IdentityServer.csproj | 2 +- .../Volo.Abp.Account.Web.csproj | 2 +- .../Volo.Abp.Account.Application.Tests.csproj | 2 +- .../Volo.Abp.BackgroundJobs.DemoApp.csproj | 2 +- ...roundJobs.EntityFrameworkCore.Tests.csproj | 2 +- ...NetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj | 6 ++--- ...bp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj | 2 +- ....AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj | 2 +- ...Database.Host.ConsoleApp.ConsoleApp.csproj | 6 ++--- ....Database.EntityFrameworkCore.Tests.csproj | 4 ++-- ...BloggingTestApp.EntityFrameworkCore.csproj | 4 ++-- .../Volo.BloggingTestApp.csproj | 2 +- .../Volo.Blogging.Admin.Web.csproj | 2 +- .../Volo.Blogging.Domain.Shared.csproj | 2 +- .../Volo.Blogging.Web.csproj | 2 +- .../Volo.ClientSimulation.Demo.csproj | 2 +- .../Volo.CmsKit.HttpApi.Host.csproj | 10 ++++---- .../Volo.CmsKit.IdentityServer.csproj | 6 ++--- .../Volo.CmsKit.Web.Host.csproj | 6 ++--- .../Volo.CmsKit.Web.Unified.csproj | 4 ++-- .../Volo.CmsKit.Admin.Web.csproj | 2 +- .../Volo.CmsKit.Common.Web.csproj | 2 +- .../Volo.CmsKit.Domain.Shared.csproj | 2 +- .../Volo.CmsKit.Public.Web.csproj | 2 +- .../Volo.CmsKit.Web/Volo.CmsKit.Web.csproj | 2 +- ...lo.CmsKit.EntityFrameworkCore.Tests.csproj | 2 +- .../VoloDocs.EntityFrameworkCore.csproj | 4 ++-- .../docs/app/VoloDocs.Web/VoloDocs.Web.csproj | 2 +- ...lo.Docs.Admin.Application.Contracts.csproj | 2 +- .../Volo.Docs.Admin.Web.csproj | 2 +- .../Volo.Docs.Domain/Volo.Docs.Domain.csproj | 2 +- .../src/Volo.Docs.Web/Volo.Docs.Web.csproj | 2 +- ...Volo.Docs.EntityFrameworkCore.Tests.csproj | 2 +- ...Abp.FeatureManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.FeatureManagement.Web.csproj | 2 +- ...anagement.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.Identity.Domain.Shared.csproj | 2 +- .../Volo.Abp.Identity.Web.csproj | 2 +- .../Volo.Abp.Identity.Domain.Tests.csproj | 2 +- ....Identity.EntityFrameworkCore.Tests.csproj | 2 +- ....PermissionManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.PermissionManagement.Web.csproj | 2 +- ...p.PermissionManagement.Domain.Tests.csproj | 2 +- ...anagement.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.SettingManagement.DemoApp.csproj | 2 +- ...Abp.SettingManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.SettingManagement.Web.csproj | 2 +- ....Abp.TenantManagement.Domain.Shared.csproj | 2 +- .../Volo.Abp.TenantManagement.Web.csproj | 2 +- ...anagement.EntityFrameworkCore.Tests.csproj | 2 +- ...olo.Abp.VirtualFileExplorer.DemoApp.csproj | 4 ++-- .../Volo.Abp.VirtualFileExplorer.Web.csproj | 2 +- ...e.MyProjectName.Blazor.Server.Mongo.csproj | 4 ++-- ...anyName.MyProjectName.Blazor.Server.csproj | 6 ++--- ...ompanyName.MyProjectName.Host.Mongo.csproj | 6 ++--- .../MyCompanyName.MyProjectName.Host.csproj | 8 +++---- ...CompanyName.MyProjectName.Mvc.Mongo.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Mvc.csproj | 6 ++--- ....MyProjectName.Blazor.Server.Tiered.csproj | 4 ++-- ...anyName.MyProjectName.Blazor.Server.csproj | 2 +- .../MyCompanyName.MyProjectName.Blazor.csproj | 4 ++-- ...ompanyName.MyProjectName.DbMigrator.csproj | 4 ++-- ...anyName.MyProjectName.Domain.Shared.csproj | 2 +- ...e.MyProjectName.EntityFrameworkCore.csproj | 2 +- ...panyName.MyProjectName.HttpApi.Host.csproj | 6 ++--- ...e.MyProjectName.HttpApi.HostWithIds.csproj | 2 +- ...nyName.MyProjectName.IdentityServer.csproj | 4 ++-- ...yCompanyName.MyProjectName.Web.Host.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Web.csproj | 2 +- ...ame.MyProjectName.Application.Tests.csproj | 2 +- ...panyName.MyProjectName.Domain.Tests.csproj | 2 +- ...ojectName.EntityFrameworkCore.Tests.csproj | 2 +- ...tName.HttpApi.Client.ConsoleTestApp.csproj | 4 ++-- ...anyName.MyProjectName.MongoDB.Tests.csproj | 2 +- ...yCompanyName.MyProjectName.TestBase.csproj | 6 ++--- ...CompanyName.MyProjectName.Web.Tests.csproj | 4 ++-- .../MyCompanyName.MyProjectName.csproj | 4 ++-- ...mpanyName.MyProjectName.Blazor.Host.csproj | 4 ++-- ...me.MyProjectName.Blazor.Server.Host.csproj | 4 ++-- ...panyName.MyProjectName.HttpApi.Host.csproj | 10 ++++---- ...nyName.MyProjectName.IdentityServer.csproj | 6 ++--- ...yCompanyName.MyProjectName.Web.Host.csproj | 4 ++-- ...mpanyName.MyProjectName.Web.Unified.csproj | 4 ++-- ...anyName.MyProjectName.Domain.Shared.csproj | 2 +- .../MyCompanyName.MyProjectName.Web.csproj | 2 +- ...ame.MyProjectName.Application.Tests.csproj | 2 +- ...panyName.MyProjectName.Domain.Tests.csproj | 2 +- ...ojectName.EntityFrameworkCore.Tests.csproj | 4 ++-- ...tName.HttpApi.Client.ConsoleTestApp.csproj | 2 +- ...anyName.MyProjectName.MongoDB.Tests.csproj | 2 +- ...yCompanyName.MyProjectName.TestBase.csproj | 6 ++--- .../MyCompanyName.MyProjectName.csproj | 2 +- .../DistDemoApp.EfCoreRabbitMq.csproj | 2 +- 152 files changed, 240 insertions(+), 228 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 568d00f5c3..03538ef037 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,14 +1,20 @@ - + + + 6.0.5 + + + 6.0.5 + 6.0.0 - 16.11.0 + 17.2.0 - 4.2.2 + 4.3.0 4.0.3 @@ -20,20 +26,26 @@ 2.4.1 - 2.4.3 + 2.4.5 3.1.3 - 4.0.1 + 4.2.0 + + + 1.20.0 + + + 7.2.3 true - + all runtime; build; native; contentfiles; analyzers diff --git a/common.props b/common.props index fb595041d7..9b2f3c7913 100644 --- a/common.props +++ b/common.props @@ -13,7 +13,7 @@ $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb - + all runtime; build; native; contentfiles; analyzers diff --git a/configureawait.props b/configureawait.props index b0cf9ef298..92f22f85fb 100644 --- a/configureawait.props +++ b/configureawait.props @@ -1,7 +1,7 @@ - + All runtime; build; native; contentfiles; analyzers diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj index 4f77858462..439bdc2c65 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo.Abp.AspNetCore.Authentication.JwtBearer.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj index 6e6b2aa109..d441613119 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj @@ -9,7 +9,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj index c2bff84d6d..f8f4d5702c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo.Abp.AspNetCore.Components.Web.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj index deb83d92ab..8825a88626 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj @@ -21,8 +21,8 @@ - - + + diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj index 628661a184..acd1ff5408 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj @@ -21,7 +21,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj index 27d1a47db9..0fea391a07 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.csproj @@ -26,7 +26,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj index 96dd3f826a..887843eb03 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI/Volo.Abp.AspNetCore.Mvc.UI.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj index 56cb7b4868..9113c4529e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo.Abp.AspNetCore.Mvc.csproj @@ -28,8 +28,8 @@ - - + + diff --git a/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj b/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj index eaf531f8b9..7e9e4f01a9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Serilog/Volo.Abp.AspNetCore.Serilog.csproj @@ -23,7 +23,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj index 58c13a6ec5..b3a7a89ad8 100644 --- a/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj +++ b/framework/src/Volo.Abp.AspNetCore.TestBase/Volo.Abp.AspNetCore.TestBase.csproj @@ -25,7 +25,7 @@ - + diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj b/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj index 0eebcdf77a..f0dd3e965e 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo.Abp.Authorization.Abstractions.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj index 7a103badfc..7ce82c1c9e 100644 --- a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj +++ b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj b/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj index 51cab2b9bf..3c4c82a512 100644 --- a/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj +++ b/framework/src/Volo.Abp.AzureServiceBus/Volo.Abp.AzureServiceBus.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj b/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj index e75ca9f362..c594d29395 100644 --- a/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj b/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj index 94bc8be064..c14651658d 100644 --- a/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Aws/Volo.Abp.BlobStoring.Aws.csproj @@ -17,8 +17,8 @@ - - + + diff --git a/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj b/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj index c2f1f3e44a..e582c986f4 100644 --- a/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Azure/Volo.Abp.BlobStoring.Azure.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj index 8f81808a76..ac4025de2a 100644 --- a/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj +++ b/framework/src/Volo.Abp.BlobStoring.FileSystem/Volo.Abp.BlobStoring.FileSystem.csproj @@ -16,7 +16,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj b/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj index a78b131962..90d58c71f8 100644 --- a/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj index d1faed8f5c..2e36b1cef0 100644 --- a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj +++ b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo.Abp.Caching.StackExchangeRedis.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj b/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj index 4022d38fee..62aebd1056 100644 --- a/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj +++ b/framework/src/Volo.Abp.Caching/Volo.Abp.Caching.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj b/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj index 036144e8c6..5b52e2b9e4 100644 --- a/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj +++ b/framework/src/Volo.Abp.Castle.Core/Volo.Abp.Castle.Core.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj index 460f1c131e..5c83874fa0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj +++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj @@ -16,11 +16,11 @@ - + - + diff --git a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj index de3ed40924..f30216a407 100644 --- a/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj +++ b/framework/src/Volo.Abp.Cli/Volo.Abp.Cli.csproj @@ -15,10 +15,10 @@ - + - - + + diff --git a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj index b0dd6cd872..4e79126174 100644 --- a/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj +++ b/framework/src/Volo.Abp.Core/Volo.Abp.Core.csproj @@ -15,10 +15,10 @@ - + - - + + @@ -26,10 +26,10 @@ - + - - - + + + diff --git a/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj b/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj index 140379599a..63dfccb23e 100644 --- a/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj +++ b/framework/src/Volo.Abp.Dapper/Volo.Abp.Dapper.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj index 17ad2f02a4..fd9b992133 100644 --- a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj +++ b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj index 3bb22e24d8..16c619ffee 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj index 4e7af995e9..cdd059825f 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.SqlServer/Volo.Abp.EntityFrameworkCore.SqlServer.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj index f70f40506f..70cce89a19 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo.Abp.EntityFrameworkCore.Sqlite.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj index 37632a5c7c..d4b9814879 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo.Abp.EntityFrameworkCore.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj b/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj index d946e0a256..38f902c578 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo.Abp.EventBus.Rebus.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj index b1d60e60c7..cc55a077c4 100644 --- a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj index 9389183d6f..4722fac1b0 100644 --- a/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj +++ b/framework/src/Volo.Abp.FluentValidation/Volo.Abp.FluentValidation.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj index 6b598d0edd..387235c911 100644 --- a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj +++ b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj b/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj index a30bf9488f..323d877f05 100644 --- a/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj +++ b/framework/src/Volo.Abp.Http.Client.IdentityModel.WebAssembly/Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj b/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj index 156feea359..762ef89854 100644 --- a/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj +++ b/framework/src/Volo.Abp.Kafka/Volo.Abp.Kafka.csproj @@ -9,7 +9,7 @@ - + diff --git a/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj b/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj index 68651c1c86..dd576e311f 100644 --- a/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj +++ b/framework/src/Volo.Abp.Ldap/Volo.Abp.Ldap.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj b/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj index acea499215..0665aa9cf2 100644 --- a/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj +++ b/framework/src/Volo.Abp.MailKit/Volo.Abp.MailKit.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj index 3b1b302946..e260f450d6 100644 --- a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj +++ b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj @@ -19,7 +19,7 @@ - + diff --git a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj index d72f308510..4a9c323e58 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj +++ b/framework/src/Volo.Abp.MongoDB/Volo.Abp.MongoDB.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj b/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj index ce9131fb35..efa11dc9aa 100644 --- a/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj +++ b/framework/src/Volo.Abp.Quartz/Volo.Abp.Quartz.csproj @@ -15,9 +15,9 @@ - - - + + + diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj b/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj index 7876bdb0b7..98cc95fecb 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj +++ b/framework/src/Volo.Abp.RabbitMQ/Volo.Abp.RabbitMQ.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj b/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj index 039a21d1e2..763e5d1804 100644 --- a/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj +++ b/framework/src/Volo.Abp.Sms.Aliyun/Volo.Abp.Sms.Aliyun.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj b/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj index 79970678d3..8be7bbd01b 100644 --- a/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj +++ b/framework/src/Volo.Abp.Swashbuckle/Volo.Abp.Swashbuckle.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj b/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj index 93d47bc4e9..f098ecc80d 100644 --- a/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj +++ b/framework/src/Volo.Abp.TextTemplating.Razor/Volo.Abp.TextTemplating.Razor.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj b/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj index bd14d4fd21..a6f7c5eb35 100644 --- a/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj +++ b/framework/src/Volo.Abp.TextTemplating.Scriban/Volo.Abp.TextTemplating.Scriban.csproj @@ -13,7 +13,7 @@ - + diff --git a/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj b/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj index 26f61b230c..25c6bddc59 100644 --- a/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj +++ b/framework/src/Volo.Abp.Timing/Volo.Abp.Timing.csproj @@ -25,7 +25,7 @@ - + diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj b/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj index 64425620dc..adba125cd3 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo.Abp.VirtualFileSystem.csproj @@ -17,7 +17,7 @@ - + diff --git a/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj b/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj index e54432fa00..6762cf2e53 100644 --- a/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj +++ b/framework/test/SimpleConsoleDemo/SimpleConsoleDemo.csproj @@ -18,7 +18,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj index 4e1b5e1334..53a9bd3747 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo.Abp.AspNetCore.Mvc.Tests.csproj @@ -20,7 +20,7 @@ - + diff --git a/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj b/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj index 700531119b..18f7107cfd 100644 --- a/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj +++ b/framework/test/Volo.Abp.AspNetCore.Serilog.Tests/Volo.Abp.AspNetCore.Serilog.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj b/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj index e72638578d..b31678d56b 100644 --- a/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj +++ b/framework/test/Volo.Abp.BlobStoring.Aliyun.Tests/Volo.Abp.BlobStoring.Aliyun.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj b/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj index a42ced54a7..df7e4cd390 100644 --- a/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj +++ b/framework/test/Volo.Abp.Sms.Aliyun.Tests/Volo.Abp.Sms.Aliyun.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj index 1ba3e96e1e..4cb884a7ca 100644 --- a/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj +++ b/framework/test/Volo.Abp.VirtualFileSystem.Tests/Volo.Abp.VirtualFileSystem.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj index d6b87b957d..4b5029d234 100644 --- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo.Abp.Account.Application.Contracts.csproj @@ -21,7 +21,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj index 32b27998cc..35f0f2a352 100644 --- a/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj +++ b/modules/account/src/Volo.Abp.Account.Application/Volo.Abp.Account.Application.csproj @@ -25,7 +25,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj index 6a95357f23..c664c3fb8b 100644 --- a/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj +++ b/modules/account/src/Volo.Abp.Account.Web.IdentityServer/Volo.Abp.Account.Web.IdentityServer.csproj @@ -38,7 +38,7 @@ - + diff --git a/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj b/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj index c59ec20c40..322291da3e 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj +++ b/modules/account/src/Volo.Abp.Account.Web/Volo.Abp.Account.Web.csproj @@ -44,7 +44,7 @@ - + diff --git a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj index 939dd86b43..c01aaf95cd 100644 --- a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj +++ b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo.Abp.Account.Application.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj index 46a09dbbe0..f62357c566 100644 --- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj +++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/Volo.Abp.BackgroundJobs.DemoApp.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj index e464c72af2..8f98fa4c39 100644 --- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj +++ b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj index fe3a18f578..ee105e4721 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj @@ -21,12 +21,12 @@ - - + + - + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj index 25ccdc747e..ff2f7ecff9 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.csproj @@ -9,7 +9,7 @@ - + diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj index 490b1f651e..41de32d955 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj b/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj index ef767dab68..de333dc7aa 100644 --- a/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj +++ b/modules/blob-storing-database/host/BlobStoring.Database.Host.ConsoleApp/src/BlobStoring.Database.Host.ConsoleApp.ConsoleApp/BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj @@ -21,12 +21,12 @@ - + - - + + diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj index 905302a06b..a1b9f2730d 100644 --- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj +++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj index 8d47633b28..f1229951df 100644 --- a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Volo.BloggingTestApp.EntityFrameworkCore.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj index 17e68720cb..455a25b131 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj +++ b/modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj b/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj index e6a2f6c2fe..0f3c2f52c7 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj +++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Volo.Blogging.Admin.Web.csproj @@ -24,7 +24,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj index c56b888d38..96c14f8da0 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo.Blogging.Domain.Shared.csproj @@ -21,7 +21,7 @@ - + diff --git a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj index ca504b6800..a05cff2692 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj +++ b/modules/blogging/src/Volo.Blogging.Web/Volo.Blogging.Web.csproj @@ -24,7 +24,7 @@ - + diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj index 47cac805fd..3207233860 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/Volo.ClientSimulation.Demo.csproj @@ -9,7 +9,7 @@ - + diff --git a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj index f72684cfa5..f24a5c17f2 100644 --- a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.csproj @@ -8,13 +8,13 @@ - + - - - - + + + + diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj index 48871c910a..e3f3b0cf3f 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.csproj @@ -8,11 +8,11 @@ - + - - + + diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj index 4432a79f55..be312facab 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.csproj @@ -8,11 +8,11 @@ - + - - + + diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj index 8f49a165cd..38130dc961 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj @@ -8,9 +8,9 @@ - + - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj index 3b925fc97c..e7068a41a8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj @@ -18,7 +18,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj index 95379d4794..1ca9a78b27 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj index 107aa14452..22160272fd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.csproj @@ -12,7 +12,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj index 2dc1fd425c..b4aeb556fe 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj index 4eeb97c9f2..a22da28426 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj index cea6684727..89319b548f 100644 --- a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj +++ b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj index 8c25dd9b31..84dce5e2e4 100644 --- a/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj +++ b/modules/docs/app/VoloDocs.EntityFrameworkCore/VoloDocs.EntityFrameworkCore.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj index e77d6a36ed..3a0ed64889 100644 --- a/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj +++ b/modules/docs/app/VoloDocs.Web/VoloDocs.Web.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj index e7f372dfc6..781dc024c5 100644 --- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo.Docs.Admin.Application.Contracts.csproj @@ -23,7 +23,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj index a523cca13c..1c83977e3a 100644 --- a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj +++ b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj @@ -27,7 +27,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj index 29020e50bc..d8548c9bbc 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj +++ b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj @@ -20,7 +20,7 @@ - + diff --git a/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj b/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj index 1795b0f9b8..43fb1bb9bb 100644 --- a/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj +++ b/modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj @@ -23,7 +23,7 @@ - + diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj index 1c3b5de2a8..2ee496241e 100644 --- a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj +++ b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj @@ -7,7 +7,7 @@ - + diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj index 8b1796e8fb..20e31fe161 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo.Abp.FeatureManagement.Domain.Shared.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj index 838a472ce3..e5c8b3ba52 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj @@ -28,7 +28,7 @@ - + diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj index e998fe73f8..f028c9b9b6 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj index ddd23ab870..fd461ebe66 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj @@ -27,7 +27,7 @@ - + diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj index d0a9c8da05..e3baeb0892 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj +++ b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.csproj @@ -45,7 +45,7 @@ - + diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj index 35ab51d83e..825c31a2eb 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj index 63dc588d03..139ccc9262 100644 --- a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj +++ b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj @@ -20,7 +20,7 @@ - + diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj index 70c8b26f2d..c44c0b326f 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo.Abp.PermissionManagement.Domain.Shared.csproj @@ -25,7 +25,7 @@ - + diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj index 05dffc66ec..bf11efd61d 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj @@ -35,7 +35,7 @@ - + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj index a59678dfe1..9b0cd2f1c0 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo.Abp.PermissionManagement.Domain.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj index dcc9751ff0..034ee303da 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj @@ -17,7 +17,7 @@ - + diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj index 00aa0eb2da..8d5de742c4 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj @@ -12,7 +12,7 @@ - + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj index 38991408d5..f6c3e0a102 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj @@ -21,7 +21,7 @@ - + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj index b802865379..7b77c68f22 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj @@ -23,7 +23,7 @@ - + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj index effe1e51f4..7aa53a7476 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.csproj @@ -25,7 +25,7 @@ - + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj index a93043f4a8..57bcb8be37 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.csproj @@ -39,7 +39,7 @@ - + diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj index 4ece64bd2a..938b36c9e8 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj index 5d3d56720d..e3eccbec46 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj index 27f50e0689..e314e532f9 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj @@ -34,7 +34,7 @@ - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj index 8d0ceeb07a..76f59c8911 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj @@ -9,7 +9,7 @@ - + @@ -75,7 +75,7 @@ - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index c377099e4f..fa14d2b867 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -9,7 +9,7 @@ - + @@ -76,11 +76,11 @@ - + - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj index 1e7ab8d272..e53c4fc5db 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj @@ -7,7 +7,7 @@ - + @@ -69,8 +69,8 @@ - - + + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj index 1d8766fec7..9987e82790 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj @@ -7,7 +7,7 @@ - + @@ -70,12 +70,12 @@ - - + + - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj index 41033c4eab..011eac03ec 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj @@ -7,7 +7,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj index fd0c48af53..ed6d30bac2 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj @@ -7,7 +7,7 @@ - + @@ -73,11 +73,11 @@ - + - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj index dac1ff57ce..34af3519c6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj @@ -15,9 +15,9 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index cfcbea04d4..8425769259 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -15,7 +15,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index 4b76b91ccd..46c90ad4c7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj index 7ee3d93b80..c6c26a1c62 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/MyCompanyName.MyProjectName.DbMigrator.csproj @@ -17,10 +17,10 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 8942c83134..64f7ba05f4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -25,7 +25,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj index 50ebd61a24..9277d952be 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/MyCompanyName.MyProjectName.EntityFrameworkCore.csproj @@ -21,7 +21,7 @@ - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index ea44661a35..800dcbf3da 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -10,10 +10,10 @@ - + - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj index 5fbd48f168..09f3bba747 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -10,7 +10,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index 81d4bcffba..b21f95cf6f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -31,9 +31,9 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index 6eb25ae27f..16a451cda4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -15,9 +15,9 @@ - + - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 976724f276..f83fb9f9f2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -31,7 +31,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index aa6e9dd689..f7c2ea234d 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index 6657fa42f4..c54db160e0 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -12,7 +12,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 2800b17595..7c0d168034 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj index 1840044e4c..66d5efd55e 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj @@ -21,8 +21,8 @@ - - + + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index cba983970a..368d378885 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 2580f1c57e..57ea860a60 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -15,12 +15,12 @@ - - + + - + diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj index 2d98f18334..b9aad6bf1d 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/MyCompanyName.MyProjectName.Web.Tests.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index a2041bf970..2b5cda9a68 100644 --- a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -12,11 +12,11 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj index 3a20fdb153..67219be5b6 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj index 383fb4a1e2..f7f2820dfa 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj @@ -14,9 +14,9 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index e2b1af07db..b48c14ab1e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -10,12 +10,12 @@ - + - - - - + + + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index d91ec3f273..10a79a8593 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -10,10 +10,10 @@ - + - - + + all runtime; build; native; contentfiles; analyzers diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index e1b1e2fccb..491a246ea1 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -10,9 +10,9 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj index aa8fd5fe5f..c807ce3049 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj @@ -10,9 +10,9 @@ - + - + all runtime; build; native; contentfiles; analyzers diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 49016bce6f..d468b62c59 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index d1455cf92b..c6b9ea8d03 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -21,7 +21,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj index 20269aa37b..0dc4ddd733 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Application.Tests/MyCompanyName.MyProjectName.Application.Tests.csproj @@ -10,7 +10,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj index aa03ce2497..b2a8dbed03 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.Domain.Tests/MyCompanyName.MyProjectName.Domain.Tests.csproj @@ -8,7 +8,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj index 995c44cfd9..0d577f1e96 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj index e92149a072..bca4086c54 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp.csproj @@ -22,7 +22,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index 9d62fb7d38..31efe22b92 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -8,7 +8,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj index 9e49ab428f..9af92ffc88 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.TestBase/MyCompanyName.MyProjectName.TestBase.csproj @@ -8,12 +8,12 @@ - - + + - + diff --git a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 6b5352c3e7..bd244a6e9a 100644 --- a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -13,7 +13,7 @@ - + diff --git a/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj b/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj index a3e769e45b..60168258f0 100644 --- a/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj +++ b/test/DistEvents/DistDemoApp.EfCoreRabbitMq/DistDemoApp.EfCoreRabbitMq.csproj @@ -13,7 +13,7 @@ - + runtime; build; native; contentfiles; analyzers compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native From 6acc565a3f42f5bc80e35b565152c8e49da0c429 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 18 May 2022 18:09:11 +0800 Subject: [PATCH 47/89] Upgrade Serilog.Extensions.Hosting --- .../Volo.Abp.SettingManagement.DemoApp.csproj | 2 +- .../MyCompanyName.MyProjectName.csproj | 2 +- .../MyCompanyName.MyProjectName.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj index 8d5de742c4..d844f022ae 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/Volo.Abp.SettingManagement.DemoApp.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index 2b5cda9a68..b79488f83f 100644 --- a/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/console/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -13,7 +13,7 @@ - + diff --git a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj index bd244a6e9a..cead3f8c94 100644 --- a/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj +++ b/templates/wpf/src/MyCompanyName.MyProjectName/MyCompanyName.MyProjectName.csproj @@ -14,7 +14,7 @@ - + From 4cd0738f5c8103810c087c1e8dfbf73701dd3f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 18 May 2022 14:17:05 +0300 Subject: [PATCH 48/89] Added books to the document list --- docs/en/docs-nav.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index ac76c7cee8..2d1348f695 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1313,6 +1313,19 @@ } ] }, + { + "text": "Books", + "items": [ + { + "text": "Mastering ABP Framework", + "path": "https://abp.io/books/mastering-abp-framework" + }, + { + "text": "Implementing Domain Driven Design", + "path": "https://abp.io/books/implementing-domain-driven-design" + } + ] + }, { "text": "Release Information", "items": [ From 9a6f8bdaa1d09567021c7273952c325858eb3f8a Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 21:14:05 +0800 Subject: [PATCH 49/89] Update OpenIddictClaimsPrincipalContributor.cs --- .../OpenIddict/OpenIddictClaimsPrincipalContributor.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs index 9a4c027f97..22df84df23 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/OpenIddictClaimsPrincipalContributor.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Security.Claims; using System.Security.Principal; using System.Threading.Tasks; @@ -6,15 +6,12 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.JsonWebTokens; +using OpenIddict.Abstractions; using Volo.Abp.DependencyInjection; using Volo.Abp.Security.Claims; namespace Volo.Abp.OpenIddict; -/// -/// https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/1627 -/// https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/05e02b5e0383be40e45c667c12f6667d38e33fcc/src/System.IdentityModel.Tokens.Jwt/ClaimTypeMapping.cs#L52 -/// public class OpenIddictClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency { public Task ContributeAsync(AbpClaimsPrincipalContributorContext context) @@ -26,6 +23,7 @@ public class OpenIddictClaimsPrincipalContributor : IAbpClaimsPrincipalContribut var usernameClaim = identity.FindFirst(options.ClaimsIdentity.UserNameClaimType); if (usernameClaim != null) { + identity.AddIfNotContains(new Claim(OpenIddictConstants.Claims.PreferredUsername, usernameClaim.Value)); identity.AddIfNotContains(new Claim(JwtRegisteredClaimNames.UniqueName, usernameClaim.Value)); } } From ca7538c35b93fa396191d32a43fc943baacab74f Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 18 May 2022 21:17:28 +0800 Subject: [PATCH 50/89] Use ephemeral keys during development. --- ...anyName.MyProjectName.Blazor.Server.csproj | 4 +++- .../MyProjectNameBlazorModule.cs | 21 +++++++++++++++--- .../MyProjectNameHttpApiHostModule.cs | 3 --- .../MyProjectNameHttpApiHostModule.cs | 22 ++++--------------- .../MyProjectNameIdentityServerModule.cs | 16 +++----------- 5 files changed, 28 insertions(+), 38 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index cfcbea04d4..442e523f87 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -17,6 +17,8 @@ + + @@ -29,7 +31,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs index 39c3601722..a01ea41953 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Net.Http; using Blazorise.Bootstrap5; using Blazorise.Icons.FontAwesome; using Microsoft.AspNetCore.Builder; @@ -53,7 +52,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server; typeof(AbpSwashbuckleModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), typeof(AbpAspNetCoreComponentsServerBasicThemeModule), typeof(AbpIdentityBlazorServerModule), typeof(AbpTenantManagementBlazorServerModule), @@ -74,6 +73,23 @@ public class MyProjectNameBlazorModule : AbpModule typeof(MyProjectNameBlazorModule).Assembly ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -275,7 +291,6 @@ public class MyProjectNameBlazorModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); app.UseAbpSwaggerUI(options => diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index b08c7c714e..d2dbacc14f 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -103,9 +103,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule options.Authority = configuration["AuthServer:Authority"]; options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); options.Audience = "MyProjectName"; - - options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); - options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 7696512460..9e4f1a31cb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -52,10 +52,9 @@ public class MyProjectNameHttpApiHostModule : AbpModule { PreConfigure(builder => { - //https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption - //https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html - builder.AddSigningKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78"))); - builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); }); PreConfigure(builder => @@ -74,11 +73,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule var configuration = context.Services.GetConfiguration(); var hostingEnvironment = context.Services.GetHostingEnvironment(); - Configure(options => - { - options.AddDevelopmentEncryptionAndSigningCertificate = false; - }); - ConfigureBundles(); ConfigureUrls(configuration); ConfigureConventionalControllers(); @@ -146,11 +140,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) { - Configure(options => - { - options.AddDevelopmentEncryptionAndSigningCertificate = false; - }); - context.Services.AddAuthentication() .AddJwtBearer(options => { @@ -161,11 +150,8 @@ public class MyProjectNameHttpApiHostModule : AbpModule { ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }; - - options.MapInboundClaims = false; - options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); - options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); + options.MapInboundClaims = false; }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index 9f4867d024..c4d9da125a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -1,14 +1,12 @@ using System; using System.IO; using System.Linq; -using System.Text; using Localization.Resources.AbpUi; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Microsoft.IdentityModel.Tokens; using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.Localization; using MyCompanyName.MyProjectName.MultiTenancy; @@ -30,8 +28,6 @@ using Volo.Abp.Caching; using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.Localization; using Volo.Abp.Modularity; -using Volo.Abp.OpenIddict; -using Volo.Abp.OpenIddict.WildcardDomains; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.UI; using Volo.Abp.VirtualFileSystem; @@ -54,10 +50,9 @@ public class MyProjectNameIdentityServerModule : AbpModule { PreConfigure(builder => { - //https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption - //https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html - builder.AddSigningKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78"))); - builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); }); PreConfigure(builder => @@ -76,11 +71,6 @@ public class MyProjectNameIdentityServerModule : AbpModule var hostingEnvironment = context.Services.GetHostingEnvironment(); var configuration = context.Services.GetConfiguration(); - Configure(options => - { - options.AddDevelopmentEncryptionAndSigningCertificate = false; - }); - Configure(options => { options.Resources From 871c72894bd432d8ee13f81a38c7de72ed4951de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 18 May 2022 17:50:02 +0300 Subject: [PATCH 51/89] Added Discord Badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c8526a9daa..2c06ebc5be 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ [![NuGet (with prereleases)](https://img.shields.io/nuget/vpre/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) [![MyGet (nightly builds)](https://img.shields.io/myget/abp-nightly/vpre/Volo.Abp.svg?style=flat-square)](https://docs.abp.io/en/abp/latest/Nightly-Builds) [![NuGet Download](https://img.shields.io/nuget/dt/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) +![Discord](https://img.shields.io/discord/951497912645476422?label=Discord) ABP Framework is a complete **infrastructure** based on the **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**. Check out https://abp.io From 9ec78a763a332e17122efbd6c55b0a9568723883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 18 May 2022 17:53:43 +0300 Subject: [PATCH 52/89] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c06ebc5be..676398b72e 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ [![NuGet (with prereleases)](https://img.shields.io/nuget/vpre/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) [![MyGet (nightly builds)](https://img.shields.io/myget/abp-nightly/vpre/Volo.Abp.svg?style=flat-square)](https://docs.abp.io/en/abp/latest/Nightly-Builds) [![NuGet Download](https://img.shields.io/nuget/dt/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) -![Discord](https://img.shields.io/discord/951497912645476422?label=Discord) + +[![ABP Discord server](https://img.shields.io/discord/951497912645476422?label=Discord)](https://discord.gg/abp) ABP Framework is a complete **infrastructure** based on the **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**. Check out https://abp.io From f01f534293d0cbcc9864b23c1b6879fe0f4c1863 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 May 2022 10:43:27 +0800 Subject: [PATCH 53/89] Check `ReturnUrl` not null. --- .../Pages/Account/Manage.cshtml.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs index 746992822c..d669ec41a1 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs @@ -34,11 +34,14 @@ public class ManageModel : AccountPageModel await contributor.ConfigureAsync(ProfileManagementPageCreationContext); } - if (!Url.IsLocalUrl(ReturnUrl) && - !ReturnUrl.StartsWith(UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase).RemovePostFix("/")) && - !AppUrlProvider.IsRedirectAllowedUrl(ReturnUrl)) + if (ReturnUrl != null) { - ReturnUrl = null; + if (!Url.IsLocalUrl(ReturnUrl) && + !ReturnUrl.StartsWith(UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase).RemovePostFix("/")) && + !AppUrlProvider.IsRedirectAllowedUrl(ReturnUrl)) + { + ReturnUrl = null; + } } return Page(); From a86187393554d4b73617a2a698a5440e3b3bfa30 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 May 2022 13:24:35 +0800 Subject: [PATCH 54/89] Install OpenIddict to the app-nolayers & module. --- .../src/environments/environment.prod.ts | 3 +- .../angular/src/environments/environment.ts | 3 +- ...e.MyProjectName.Blazor.Server.Mongo.csproj | 8 +- .../MyProjectNameModule.cs | 28 +- .../Data/MyProjectNameDbContext.cs | 4 +- ....cs => 20220519051356_Initial.Designer.cs} | 1036 +++-------------- ...8_Initial.cs => 20220519051356_Initial.cs} | 652 ++--------- .../MyProjectNameDbContextModelSnapshot.cs | 1034 +++------------- ...anyName.MyProjectName.Blazor.Server.csproj | 8 +- .../MyProjectNameModule.cs | 28 +- .../Data/IdentityServerDataSeedContributor.cs | 271 ----- .../Data/OpenIddictDataSeedContributor.cs | 347 ++++++ ...ompanyName.MyProjectName.Host.Mongo.csproj | 8 +- .../MyProjectNameModule.cs | 28 +- .../appsettings.json | 4 +- .../Data/IdentityServerDataSeedContributor.cs | 271 ----- .../Data/MyProjectNameDbContext.cs | 4 +- .../Data/OpenIddictDataSeedContributor.cs | 347 ++++++ .../20220519051355_Initial.Designer.cs} | 1036 +++-------------- .../Migrations/20220519051355_Initial.cs} | 652 ++--------- .../MyProjectNameDbContextModelSnapshot.cs | 1034 +++------------- .../MyCompanyName.MyProjectName.Host.csproj | 8 +- .../MyProjectNameModule.cs | 28 +- .../appsettings.json | 4 +- ...CompanyName.MyProjectName.Mvc.Mongo.csproj | 8 +- .../MyProjectNameModule.cs | 29 +- .../Data/MyProjectNameDbContext.cs | 4 +- .../20220519051401_Initial.Designer.cs} | 1036 +++-------------- .../Migrations/20220519051401_Initial.cs} | 652 ++--------- .../MyProjectNameDbContextModelSnapshot.cs | 1034 +++------------- .../MyCompanyName.MyProjectName.Mvc.csproj | 8 +- .../MyProjectNameModule.cs | 28 +- .../src/environments/environment.prod.ts | 3 +- .../src/environments/environment.prod.ts | 3 +- .../dev-app/src/environments/environment.ts | 5 +- .../MyCompanyName.MyProjectName.abpmdl.json | 6 +- .../MyCompanyName.MyProjectName.sln | 2 +- .../MyProjectNameHostMenuContributor.cs | 4 +- ...me.MyProjectName.Blazor.Server.Host.csproj | 4 +- .../MyProjectNameBlazorHostModule.cs | 20 +- .../IdentityServerDataSeedContributor.cs | 323 ----- .../Dockerfile | 4 +- .../OpenIddictHostMigrationsDbContext.cs} | 8 +- ...enIddictHostMigrationsDbContextFactory.cs} | 8 +- .../FodyWeavers.xml | 0 .../FodyWeavers.xsd | 0 .../20220519020825_Initial.Designer.cs} | 1036 +++-------------- .../Migrations/20220519020825_Initial.cs} | 650 ++--------- ...ctHostMigrationsDbContextModelSnapshot.cs} | 1036 +++-------------- ...e.MyProjectName.IdentityServer.abppkg.json | 0 ...mpanyName.MyProjectName.OpenIddict.csproj} | 6 +- .../MyProjectNameOpenIddictModule.cs} | 32 +- .../OpenIddictDataSeedContributor.cs | 352 ++++++ .../Pages/Index.cshtml | 0 .../Pages/Index.cshtml.cs | 0 .../Pages/_ViewImports.cshtml | 0 .../Program.cs | 2 +- .../Properties/launchSettings.json | 6 +- .../abp.resourcemapping.js | 0 .../appsettings.json | 4 +- .../package.json | 2 +- .../tempkey.rsa | 0 .../yarn.lock | 0 .../MyProjectNameWebHostModule.cs | 3 +- .../appsettings.json | 3 +- .../ClientDemoService.cs | 2 - 66 files changed, 3183 insertions(+), 9986 deletions(-) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20220119015238_Initial.Designer.cs => 20220519051356_Initial.Designer.cs} (64%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20220119015238_Initial.cs => 20220519051356_Initial.cs} (60%) delete mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/IdentityServerDataSeedContributor.cs create mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs delete mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/IdentityServerDataSeedContributor.cs create mode 100644 templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs rename templates/app-nolayers/aspnet-core/{MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.Designer.cs => MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.Designer.cs} (64%) rename templates/{module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.cs => app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.cs} (60%) rename templates/app-nolayers/aspnet-core/{MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.Designer.cs => MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.Designer.cs} (64%) rename templates/app-nolayers/aspnet-core/{MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.cs => MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.cs} (60%) delete mode 100644 templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/Dockerfile (84%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs => MyCompanyName.MyProjectName.OpenIddict/EntityFrameworkCore/OpenIddictHostMigrationsDbContext.cs} (74%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContextFactory.cs => MyCompanyName.MyProjectName.OpenIddict/EntityFrameworkCore/OpenIddictHostMigrationsDbContextFactory.cs} (62%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/FodyWeavers.xml (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/FodyWeavers.xsd (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.Designer.cs => MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.Designer.cs} (64%) rename templates/{app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.cs => module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.cs} (60%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs => MyCompanyName.MyProjectName.OpenIddict/Migrations/OpenIddictHostMigrationsDbContextModelSnapshot.cs} (64%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/MyCompanyName.MyProjectName.IdentityServer.abppkg.json (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj => MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.OpenIddict.csproj} (93%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs => MyCompanyName.MyProjectName.OpenIddict/MyProjectNameOpenIddictModule.cs} (90%) create mode 100644 templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/Pages/Index.cshtml (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/Pages/Index.cshtml.cs (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/Pages/_ViewImports.cshtml (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/Program.cs (94%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/Properties/launchSettings.json (89%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/abp.resourcemapping.js (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/appsettings.json (96%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/package.json (78%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/tempkey.rsa (100%) rename templates/module/aspnet-core/host/{MyCompanyName.MyProjectName.IdentityServer => MyCompanyName.MyProjectName.OpenIddict}/yarn.lock (100%) diff --git a/templates/app-nolayers/angular/src/environments/environment.prod.ts b/templates/app-nolayers/angular/src/environments/environment.prod.ts index ba01a49280..72f54fa857 100644 --- a/templates/app-nolayers/angular/src/environments/environment.prod.ts +++ b/templates/app-nolayers/angular/src/environments/environment.prod.ts @@ -10,9 +10,10 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44305', + issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/app-nolayers/angular/src/environments/environment.ts b/templates/app-nolayers/angular/src/environments/environment.ts index 96f84eea43..fcc4e89a07 100644 --- a/templates/app-nolayers/angular/src/environments/environment.ts +++ b/templates/app-nolayers/angular/src/environments/environment.ts @@ -10,9 +10,10 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44305', + issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj index 8d0ceeb07a..5342b0cb5a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj @@ -11,6 +11,8 @@ + + @@ -25,7 +27,7 @@ - + @@ -33,12 +35,12 @@ - + - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs index 0fb12feed2..c987e5dff6 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs @@ -27,15 +27,15 @@ using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.Identity; using Volo.Abp.Identity.Blazor.Server; using Volo.Abp.Identity.MongoDB; -using Volo.Abp.IdentityServer.MongoDB; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict.MongoDB; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.PermissionManagement.HttpApi; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.Blazor.Server; using Volo.Abp.SettingManagement.MongoDB; @@ -65,15 +65,15 @@ namespace MyCompanyName.MyProjectName; // Account module packages typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), // Identity module packages typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityMongoDbModule), - typeof(AbpIdentityServerMongoDbModule), + typeof(AbpOpenIddictMongoDbModule), typeof(AbpIdentityBlazorServerModule), // Audit logging module packages @@ -116,6 +116,23 @@ public class MyProjectNameModule : AbpModule typeof(MyProjectNameModule).Assembly ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -329,7 +346,6 @@ public class MyProjectNameModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Data/MyProjectNameDbContext.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Data/MyProjectNameDbContext.cs index 6265e8ebba..8ae0662ece 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Data/MyProjectNameDbContext.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Data/MyProjectNameDbContext.cs @@ -3,7 +3,7 @@ using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; @@ -27,7 +27,7 @@ public class MyProjectNameDbContext : AbpDbContext builder.ConfigureSettingManagement(); builder.ConfigureAuditLogging(); builder.ConfigureIdentity(); - builder.ConfigureIdentityServer(); + builder.ConfigureOpenIddict(); builder.ConfigureFeatureManagement(); builder.ConfigureTenantManagement(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220119015238_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220519051356_Initial.Designer.cs similarity index 64% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220119015238_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220519051356_Initial.Designer.cs index 606c549e29..423841ae21 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220119015238_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220519051356_Initial.Designer.cs @@ -10,10 +10,10 @@ using Volo.Abp.EntityFrameworkCore; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20220119015238_Initial")] + [Migration("20220519051356_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -931,322 +931,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1254,8 +950,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1273,36 +970,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1317,284 +994,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1602,56 +1035,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1680,18 +1126,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1712,51 +1156,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2018,157 +1525,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2215,52 +1587,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220119015238_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220519051356_Initial.cs similarity index 60% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220119015238_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220519051356_Initial.cs index 61dd143293..906d908cb4 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220119015238_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20220519051356_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations { public partial class Initial : Migration { @@ -256,16 +256,21 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResources", + name: "OpenIddictApplications", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - AllowedAccessTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -278,130 +283,21 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerApiResources", x => x.Id); + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); }); migrationBuilder.CreateTable( - name: "IdentityServerApiScopes", + name: "OpenIddictScopes", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Enabled = table.Column(type: "bit", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClients", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ClientName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - ClientUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - LogoUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - ProtocolType = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - RequireClientSecret = table.Column(type: "bit", nullable: false), - RequireConsent = table.Column(type: "bit", nullable: false), - AllowRememberConsent = table.Column(type: "bit", nullable: false), - AlwaysIncludeUserClaimsInIdToken = table.Column(type: "bit", nullable: false), - RequirePkce = table.Column(type: "bit", nullable: false), - AllowPlainTextPkce = table.Column(type: "bit", nullable: false), - RequireRequestObject = table.Column(type: "bit", nullable: false), - AllowAccessTokensViaBrowser = table.Column(type: "bit", nullable: false), - FrontChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - FrontChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - BackChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - BackChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - AllowOfflineAccess = table.Column(type: "bit", nullable: false), - IdentityTokenLifetime = table.Column(type: "int", nullable: false), - AllowedIdentityTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - AccessTokenLifetime = table.Column(type: "int", nullable: false), - AuthorizationCodeLifetime = table.Column(type: "int", nullable: false), - ConsentLifetime = table.Column(type: "int", nullable: true), - AbsoluteRefreshTokenLifetime = table.Column(type: "int", nullable: false), - SlidingRefreshTokenLifetime = table.Column(type: "int", nullable: false), - RefreshTokenUsage = table.Column(type: "int", nullable: false), - UpdateAccessTokenClaimsOnRefresh = table.Column(type: "bit", nullable: false), - RefreshTokenExpiration = table.Column(type: "int", nullable: false), - AccessTokenType = table.Column(type: "int", nullable: false), - EnableLocalLogin = table.Column(type: "bit", nullable: false), - IncludeJwtId = table.Column(type: "bit", nullable: false), - AlwaysSendClientClaims = table.Column(type: "bit", nullable: false), - ClientClaimsPrefix = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - PairWiseSubjectSalt = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - UserSsoLifetime = table.Column(type: "int", nullable: true), - UserCodeType = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - DeviceCodeLifetime = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClients", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerDeviceFlowCodes", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - DeviceCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - UserCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: false), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerDeviceFlowCodes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResources", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -414,30 +310,7 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResources", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerPersistedGrants", - columns: table => new - { - Key = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - Expiration = table.Column(type: "datetime2", nullable: true), - ConsumedTime = table.Column(type: "datetime2", nullable: true), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - Id = table.Column(type: "uniqueidentifier", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerPersistedGrants", x => x.Key); + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); }); migrationBuilder.CreateTable( @@ -673,320 +546,35 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceClaims", x => new { x.ApiResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceClaims_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceProperties", + name: "OpenIddictAuthorizations", columns: table => new { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceProperties", x => new { x.ApiResourceId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceProperties_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceScopes", - columns: table => new - { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceScopes", x => new { x.ApiResourceId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceScopes_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceSecrets", x => new { x.ApiResourceId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceSecrets_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeClaims", x => new { x.ApiScopeId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeClaims_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeProperties", - columns: table => new - { - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeProperties", x => new { x.ApiScopeId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeProperties_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientClaims", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientClaims", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientClaims_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientCorsOrigins", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Origin = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientCorsOrigins", x => new { x.ClientId, x.Origin }); - table.ForeignKey( - name: "FK_IdentityServerClientCorsOrigins_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientGrantTypes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - GrantType = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientGrantTypes", x => new { x.ClientId, x.GrantType }); - table.ForeignKey( - name: "FK_IdentityServerClientGrantTypes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientIdPRestrictions", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Provider = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientIdPRestrictions", x => new { x.ClientId, x.Provider }); - table.ForeignKey( - name: "FK_IdentityServerClientIdPRestrictions_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientPostLogoutRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - PostLogoutRedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientPostLogoutRedirectUris", x => new { x.ClientId, x.PostLogoutRedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientPostLogoutRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientProperties", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientProperties", x => new { x.ClientId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientProperties_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - RedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientRedirectUris", x => new { x.ClientId, x.RedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientScopes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientScopes", x => new { x.ClientId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerClientScopes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientSecrets", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientSecrets_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerIdentityResourceClaims", x => new { x.IdentityResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerIdentityResourceClaims_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceProperties", - columns: table => new - { - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResourceProperties", x => new { x.IdentityResourceId, x.Key, x.Value }); + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); table.ForeignKey( - name: "FK_IdentityServerIdentityResourceProperties_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); }); migrationBuilder.CreateTable( @@ -1012,6 +600,47 @@ namespace MyCompanyName.MyProjectName.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + migrationBuilder.CreateIndex( name: "IX_AbpAuditLogActions_AuditLogId", table: "AbpAuditLogActions", @@ -1166,40 +795,34 @@ namespace MyCompanyName.MyProjectName.Migrations column: "UserName"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerClients_ClientId", - table: "IdentityServerClients", + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", column: "ClientId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_DeviceCode", - table: "IdentityServerDeviceFlowCodes", - column: "DeviceCode", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_Expiration", - table: "IdentityServerDeviceFlowCodes", - column: "Expiration"); + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_UserCode", - table: "IdentityServerDeviceFlowCodes", - column: "UserCode"); + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_Expiration", - table: "IdentityServerPersistedGrants", - column: "Expiration"); + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_ClientId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "ClientId", "Type" }); + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_SessionId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "SessionId", "Type" }); + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -1253,61 +876,10 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUserTokens"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceClaims"); + name: "OpenIddictScopes"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerClientCorsOrigins"); - - migrationBuilder.DropTable( - name: "IdentityServerClientGrantTypes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientIdPRestrictions"); - - migrationBuilder.DropTable( - name: "IdentityServerClientPostLogoutRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerDeviceFlowCodes"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerPersistedGrants"); + name: "OpenIddictTokens"); migrationBuilder.DropTable( name: "AbpEntityChanges"); @@ -1325,19 +897,13 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUsers"); migrationBuilder.DropTable( - name: "IdentityServerApiResources"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopes"); + name: "OpenIddictAuthorizations"); migrationBuilder.DropTable( - name: "IdentityServerClients"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResources"); + name: "AbpAuditLogs"); migrationBuilder.DropTable( - name: "AbpAuditLogs"); + name: "OpenIddictApplications"); } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index af4ba29c12..cbb2af9f96 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -9,7 +9,7 @@ using Volo.Abp.EntityFrameworkCore; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations { [DbContext(typeof(MyProjectNameDbContext))] partial class MyProjectNameDbContextModelSnapshot : ModelSnapshot @@ -929,322 +929,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1252,8 +948,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1271,36 +968,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1315,284 +992,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1600,56 +1033,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1678,18 +1124,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1710,51 +1154,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2016,157 +1523,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2213,52 +1585,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index c377099e4f..cb65eb4055 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -11,6 +11,8 @@ + + @@ -26,7 +28,7 @@ - + @@ -34,12 +36,12 @@ - + - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs index 9567786a99..b9c8dca8f0 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs @@ -28,15 +28,15 @@ using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.Blazor.Server; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.HttpApi; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.Blazor.Server; using Volo.Abp.SettingManagement.EntityFrameworkCore; @@ -66,15 +66,15 @@ namespace MyCompanyName.MyProjectName; // Account module packages typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), // Identity module packages typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityServerEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), typeof(AbpIdentityBlazorServerModule), // Audit logging module packages @@ -117,6 +117,23 @@ public class MyProjectNameModule : AbpModule typeof(MyProjectNameModule).Assembly ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -337,7 +354,6 @@ public class MyProjectNameModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/IdentityServerDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/IdentityServerDataSeedContributor.cs deleted file mode 100644 index 401134aa1b..0000000000 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/IdentityServerDataSeedContributor.cs +++ /dev/null @@ -1,271 +0,0 @@ -using IdentityServer4.Models; -using Volo.Abp.Authorization.Permissions; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Guids; -using Volo.Abp.IdentityServer.ApiResources; -using Volo.Abp.IdentityServer.ApiScopes; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.IdentityServer.IdentityResources; -using Volo.Abp.MultiTenancy; -using Volo.Abp.PermissionManagement; -using Volo.Abp.Uow; -using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; -using ApiScope = Volo.Abp.IdentityServer.ApiScopes.ApiScope; -using Client = Volo.Abp.IdentityServer.Clients.Client; - -namespace MyCompanyName.MyProjectName.Data; - -public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly IApiResourceRepository _apiResourceRepository; - private readonly IApiScopeRepository _apiScopeRepository; - private readonly IClientRepository _clientRepository; - private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; - private readonly IGuidGenerator _guidGenerator; - private readonly IPermissionDataSeeder _permissionDataSeeder; - private readonly IConfiguration _configuration; - private readonly ICurrentTenant _currentTenant; - - public IdentityServerDataSeedContributor( - IClientRepository clientRepository, - IApiResourceRepository apiResourceRepository, - IApiScopeRepository apiScopeRepository, - IIdentityResourceDataSeeder identityResourceDataSeeder, - IGuidGenerator guidGenerator, - IPermissionDataSeeder permissionDataSeeder, - IConfiguration configuration, - ICurrentTenant currentTenant) - { - _clientRepository = clientRepository; - _apiResourceRepository = apiResourceRepository; - _apiScopeRepository = apiScopeRepository; - _identityResourceDataSeeder = identityResourceDataSeeder; - _guidGenerator = guidGenerator; - _permissionDataSeeder = permissionDataSeeder; - _configuration = configuration; - _currentTenant = currentTenant; - } - - [UnitOfWork] - public virtual async Task SeedAsync(DataSeedContext context) - { - using (_currentTenant.Change(context?.TenantId)) - { - await _identityResourceDataSeeder.CreateStandardResourcesAsync(); - await CreateApiResourcesAsync(); - await CreateApiScopesAsync(); - await CreateClientsAsync(); - } - } - - private async Task CreateApiScopesAsync() - { - await CreateApiScopeAsync("MyProjectName"); - } - - private async Task CreateApiResourcesAsync() - { - var commonApiUserClaims = new[] {"email", "email_verified", "name", "phone_number", "phone_number_verified", "role"}; - await CreateApiResourceAsync("MyProjectName", commonApiUserClaims); - } - - private async Task CreateApiResourceAsync(string name, IEnumerable claims) - { - var apiResource = await _apiResourceRepository.FindByNameAsync(name); - if (apiResource == null) - { - apiResource = await _apiResourceRepository.InsertAsync( - new ApiResource( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - foreach (var claim in claims) - { - if (apiResource.FindClaim(claim) == null) - { - apiResource.AddUserClaim(claim); - } - } - - return await _apiResourceRepository.UpdateAsync(apiResource); - } - - private async Task CreateApiScopeAsync(string name) - { - var apiScope = await _apiScopeRepository.FindByNameAsync(name); - if (apiScope == null) - { - apiScope = await _apiScopeRepository.InsertAsync( - new ApiScope( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - return apiScope; - } - - private async Task CreateClientsAsync() - { - var commonScopes = new[] - { - "email", - "openid", - "profile", - "role", - "phone", - "address", - "MyProjectName" - }; - - var configurationSection = _configuration.GetSection("IdentityServer:Clients"); - - // Angular Client - var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; - if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); - - await CreateClientAsync( - name: consoleAndAngularClientId, - scopes: commonScopes, - grantTypes: new[] { "password", "client_credentials", "authorization_code" }, - secret: (configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*").Sha256(), - requireClientSecret: false, - redirectUri: webClientRootUrl, - postLogoutRedirectUri: webClientRootUrl, - corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } - ); - } - - // Swagger Client - var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; - if (!swaggerClientId.IsNullOrWhiteSpace()) - { - var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); - - await CreateClientAsync( - name: swaggerClientId, - scopes: commonScopes, - grantTypes: new[] { "authorization_code" }, - secret: configurationSection["MyProjectName_Swagger:ClientSecret"]?.Sha256(), - requireClientSecret: false, - redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", - corsOrigins: new[] { swaggerRootUrl.RemovePostFix("/") } - ); - } - } - - private async Task CreateClientAsync( - string name, - IEnumerable scopes, - IEnumerable grantTypes, - string secret = null, - string redirectUri = null, - string postLogoutRedirectUri = null, - string frontChannelLogoutUri = null, - bool requireClientSecret = true, - bool requirePkce = false, - IEnumerable permissions = null, - IEnumerable corsOrigins = null) - { - var client = await _clientRepository.FindByClientIdAsync(name); - if (client == null) - { - client = await _clientRepository.InsertAsync( - new Client( - _guidGenerator.Create(), - name - ) - { - ClientName = name, - ProtocolType = "oidc", - Description = name, - AlwaysIncludeUserClaimsInIdToken = true, - AllowOfflineAccess = true, - AbsoluteRefreshTokenLifetime = 31536000, //365 days - AccessTokenLifetime = 31536000, //365 days - AuthorizationCodeLifetime = 300, - IdentityTokenLifetime = 300, - RequireConsent = false, - FrontChannelLogoutUri = frontChannelLogoutUri, - RequireClientSecret = requireClientSecret, - RequirePkce = requirePkce - }, - autoSave: true - ); - } - - foreach (var scope in scopes) - { - if (client.FindScope(scope) == null) - { - client.AddScope(scope); - } - } - - foreach (var grantType in grantTypes) - { - if (client.FindGrantType(grantType) == null) - { - client.AddGrantType(grantType); - } - } - - if (!secret.IsNullOrEmpty()) - { - if (client.FindSecret(secret) == null) - { - client.AddSecret(secret); - } - } - - if (redirectUri != null) - { - if (client.FindRedirectUri(redirectUri) == null) - { - client.AddRedirectUri(redirectUri); - } - } - - if (postLogoutRedirectUri != null) - { - if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) - { - client.AddPostLogoutRedirectUri(postLogoutRedirectUri); - } - } - - if (permissions != null) - { - await _permissionDataSeeder.SeedAsync( - ClientPermissionValueProvider.ProviderName, - name, - permissions, - null - ); - } - - if (corsOrigins != null) - { - foreach (var origin in corsOrigins) - { - if (!origin.IsNullOrWhiteSpace() && client.FindCorsOrigin(origin) == null) - { - client.AddCorsOrigin(origin); - } - } - } - - return await _clientRepository.UpdateAsync(client); - } -} diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs new file mode 100644 index 0000000000..a6d77e1755 --- /dev/null +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs @@ -0,0 +1,347 @@ +using JetBrains.Annotations; +using Microsoft.Extensions.Localization; +using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace MyCompanyName.MyProjectName.Data; + +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IConfiguration _configuration; + private readonly IOpenIddictApplicationManager _applicationManager; + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; + + public OpenIddictDataSeedContributor( + IConfiguration configuration, + IOpenIddictApplicationManager applicationManager, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l) + { + _configuration = configuration; + _applicationManager = applicationManager; + _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _scopeManager.FindByNameAsync("MyProjectName") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor + { + Name = "MyProjectName", + DisplayName = "MyProjectName API", + Resources = + { + "MyProjectName" + } + }); + } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "MyProjectName" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); + + //Web Client + var webClientId = configurationSection["MyProjectName_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); + + /* MyProjectName_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + await CreateApplicationAsync( + name: webClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Web Application", + secret: null, + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{webClientRootUrl}signin-oidc", + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + name: consoleAndAngularClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Console Test / Angular Application", + secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken + }, + scopes: commonScopes, + redirectUri: webClientRootUrl, + postLogoutRedirectUri: webClientRootUrl + ); + } + + // Blazor Client + var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; + if (!blazorClientId.IsNullOrWhiteSpace()) + { + var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: blazorClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: null, + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + }, + scopes: commonScopes, + redirectUri: $"{blazorRootUrl}/authentication/login-callback", + postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" + ); + } + + // Swagger Client + var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: swaggerClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + }, + scopes: commonScopes, + redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html" + ); + } + } + + private async Task CreateApplicationAsync( + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string secret, + List grantTypes, + List scopes, + string redirectUri = null, + string postLogoutRedirectUri = null, + List permissions = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + if (!string.IsNullOrEmpty(name) && await _applicationManager.FindByClientIdAsync(name) != null) + { + return; + //throw new BusinessException(L["TheClientIdentifierIsAlreadyTakenByAnotherApplication"]); + } + + var client = await _applicationManager.FindByClientIdAsync(name); + if (client == null) + { + var application = new OpenIddictApplicationDescriptor + { + ClientId = name, + Type = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new [] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All(grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); + } + } + + if (!redirectUri.IsNullOrWhiteSpace() || !postLogoutRedirectUri.IsNullOrWhiteSpace()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); + } + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + } + + var buildInScopes = new [] + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (redirectUri != null) + { + if (!redirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + } + + if (postLogoutRedirectUri != null) + { + if (!postLogoutRedirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + await _applicationManager.CreateAsync(application); + } + } + +} diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj index 1e7ab8d272..250007fc03 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj @@ -9,6 +9,8 @@ + + @@ -24,7 +26,7 @@ - + @@ -32,11 +34,11 @@ - + - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs index f8d6fd1d67..6a9474af7b 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs @@ -24,16 +24,16 @@ using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.Identity; using Volo.Abp.Identity.MongoDB; -using Volo.Abp.IdentityServer.MongoDB; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.MongoDB; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.PermissionManagement.HttpApi; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.MongoDB; using Volo.Abp.Swashbuckle; @@ -61,15 +61,15 @@ namespace MyCompanyName.MyProjectName; // Account module packages typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), // Identity module packages typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityMongoDbModule), - typeof(AbpIdentityServerMongoDbModule), + typeof(AbpOpenIddictMongoDbModule), // Audit logging module packages typeof(AbpAuditLoggingMongoDbModule), @@ -107,6 +107,23 @@ public class MyProjectNameModule : AbpModule typeof(MyProjectNameResource) ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -332,7 +349,6 @@ public class MyProjectNameModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json index 66ddc446d1..4963ccdc3b 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json @@ -20,8 +20,8 @@ "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" }, - "IdentityServer": { - "Clients": { + "OpenIddict": { + "Applications": { "MyProjectName_App": { "ClientId": "MyProjectName_App", "ClientSecret": "1q2w3e*", diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/IdentityServerDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/IdentityServerDataSeedContributor.cs deleted file mode 100644 index 401134aa1b..0000000000 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/IdentityServerDataSeedContributor.cs +++ /dev/null @@ -1,271 +0,0 @@ -using IdentityServer4.Models; -using Volo.Abp.Authorization.Permissions; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Guids; -using Volo.Abp.IdentityServer.ApiResources; -using Volo.Abp.IdentityServer.ApiScopes; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.IdentityServer.IdentityResources; -using Volo.Abp.MultiTenancy; -using Volo.Abp.PermissionManagement; -using Volo.Abp.Uow; -using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; -using ApiScope = Volo.Abp.IdentityServer.ApiScopes.ApiScope; -using Client = Volo.Abp.IdentityServer.Clients.Client; - -namespace MyCompanyName.MyProjectName.Data; - -public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly IApiResourceRepository _apiResourceRepository; - private readonly IApiScopeRepository _apiScopeRepository; - private readonly IClientRepository _clientRepository; - private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; - private readonly IGuidGenerator _guidGenerator; - private readonly IPermissionDataSeeder _permissionDataSeeder; - private readonly IConfiguration _configuration; - private readonly ICurrentTenant _currentTenant; - - public IdentityServerDataSeedContributor( - IClientRepository clientRepository, - IApiResourceRepository apiResourceRepository, - IApiScopeRepository apiScopeRepository, - IIdentityResourceDataSeeder identityResourceDataSeeder, - IGuidGenerator guidGenerator, - IPermissionDataSeeder permissionDataSeeder, - IConfiguration configuration, - ICurrentTenant currentTenant) - { - _clientRepository = clientRepository; - _apiResourceRepository = apiResourceRepository; - _apiScopeRepository = apiScopeRepository; - _identityResourceDataSeeder = identityResourceDataSeeder; - _guidGenerator = guidGenerator; - _permissionDataSeeder = permissionDataSeeder; - _configuration = configuration; - _currentTenant = currentTenant; - } - - [UnitOfWork] - public virtual async Task SeedAsync(DataSeedContext context) - { - using (_currentTenant.Change(context?.TenantId)) - { - await _identityResourceDataSeeder.CreateStandardResourcesAsync(); - await CreateApiResourcesAsync(); - await CreateApiScopesAsync(); - await CreateClientsAsync(); - } - } - - private async Task CreateApiScopesAsync() - { - await CreateApiScopeAsync("MyProjectName"); - } - - private async Task CreateApiResourcesAsync() - { - var commonApiUserClaims = new[] {"email", "email_verified", "name", "phone_number", "phone_number_verified", "role"}; - await CreateApiResourceAsync("MyProjectName", commonApiUserClaims); - } - - private async Task CreateApiResourceAsync(string name, IEnumerable claims) - { - var apiResource = await _apiResourceRepository.FindByNameAsync(name); - if (apiResource == null) - { - apiResource = await _apiResourceRepository.InsertAsync( - new ApiResource( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - foreach (var claim in claims) - { - if (apiResource.FindClaim(claim) == null) - { - apiResource.AddUserClaim(claim); - } - } - - return await _apiResourceRepository.UpdateAsync(apiResource); - } - - private async Task CreateApiScopeAsync(string name) - { - var apiScope = await _apiScopeRepository.FindByNameAsync(name); - if (apiScope == null) - { - apiScope = await _apiScopeRepository.InsertAsync( - new ApiScope( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - return apiScope; - } - - private async Task CreateClientsAsync() - { - var commonScopes = new[] - { - "email", - "openid", - "profile", - "role", - "phone", - "address", - "MyProjectName" - }; - - var configurationSection = _configuration.GetSection("IdentityServer:Clients"); - - // Angular Client - var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; - if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); - - await CreateClientAsync( - name: consoleAndAngularClientId, - scopes: commonScopes, - grantTypes: new[] { "password", "client_credentials", "authorization_code" }, - secret: (configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*").Sha256(), - requireClientSecret: false, - redirectUri: webClientRootUrl, - postLogoutRedirectUri: webClientRootUrl, - corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } - ); - } - - // Swagger Client - var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; - if (!swaggerClientId.IsNullOrWhiteSpace()) - { - var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); - - await CreateClientAsync( - name: swaggerClientId, - scopes: commonScopes, - grantTypes: new[] { "authorization_code" }, - secret: configurationSection["MyProjectName_Swagger:ClientSecret"]?.Sha256(), - requireClientSecret: false, - redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", - corsOrigins: new[] { swaggerRootUrl.RemovePostFix("/") } - ); - } - } - - private async Task CreateClientAsync( - string name, - IEnumerable scopes, - IEnumerable grantTypes, - string secret = null, - string redirectUri = null, - string postLogoutRedirectUri = null, - string frontChannelLogoutUri = null, - bool requireClientSecret = true, - bool requirePkce = false, - IEnumerable permissions = null, - IEnumerable corsOrigins = null) - { - var client = await _clientRepository.FindByClientIdAsync(name); - if (client == null) - { - client = await _clientRepository.InsertAsync( - new Client( - _guidGenerator.Create(), - name - ) - { - ClientName = name, - ProtocolType = "oidc", - Description = name, - AlwaysIncludeUserClaimsInIdToken = true, - AllowOfflineAccess = true, - AbsoluteRefreshTokenLifetime = 31536000, //365 days - AccessTokenLifetime = 31536000, //365 days - AuthorizationCodeLifetime = 300, - IdentityTokenLifetime = 300, - RequireConsent = false, - FrontChannelLogoutUri = frontChannelLogoutUri, - RequireClientSecret = requireClientSecret, - RequirePkce = requirePkce - }, - autoSave: true - ); - } - - foreach (var scope in scopes) - { - if (client.FindScope(scope) == null) - { - client.AddScope(scope); - } - } - - foreach (var grantType in grantTypes) - { - if (client.FindGrantType(grantType) == null) - { - client.AddGrantType(grantType); - } - } - - if (!secret.IsNullOrEmpty()) - { - if (client.FindSecret(secret) == null) - { - client.AddSecret(secret); - } - } - - if (redirectUri != null) - { - if (client.FindRedirectUri(redirectUri) == null) - { - client.AddRedirectUri(redirectUri); - } - } - - if (postLogoutRedirectUri != null) - { - if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) - { - client.AddPostLogoutRedirectUri(postLogoutRedirectUri); - } - } - - if (permissions != null) - { - await _permissionDataSeeder.SeedAsync( - ClientPermissionValueProvider.ProviderName, - name, - permissions, - null - ); - } - - if (corsOrigins != null) - { - foreach (var origin in corsOrigins) - { - if (!origin.IsNullOrWhiteSpace() && client.FindCorsOrigin(origin) == null) - { - client.AddCorsOrigin(origin); - } - } - } - - return await _clientRepository.UpdateAsync(client); - } -} diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/MyProjectNameDbContext.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/MyProjectNameDbContext.cs index 6265e8ebba..8ae0662ece 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/MyProjectNameDbContext.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/MyProjectNameDbContext.cs @@ -3,7 +3,7 @@ using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; @@ -27,7 +27,7 @@ public class MyProjectNameDbContext : AbpDbContext builder.ConfigureSettingManagement(); builder.ConfigureAuditLogging(); builder.ConfigureIdentity(); - builder.ConfigureIdentityServer(); + builder.ConfigureOpenIddict(); builder.ConfigureFeatureManagement(); builder.ConfigureTenantManagement(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs new file mode 100644 index 0000000000..a6d77e1755 --- /dev/null +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs @@ -0,0 +1,347 @@ +using JetBrains.Annotations; +using Microsoft.Extensions.Localization; +using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace MyCompanyName.MyProjectName.Data; + +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IConfiguration _configuration; + private readonly IOpenIddictApplicationManager _applicationManager; + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; + + public OpenIddictDataSeedContributor( + IConfiguration configuration, + IOpenIddictApplicationManager applicationManager, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l) + { + _configuration = configuration; + _applicationManager = applicationManager; + _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _scopeManager.FindByNameAsync("MyProjectName") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor + { + Name = "MyProjectName", + DisplayName = "MyProjectName API", + Resources = + { + "MyProjectName" + } + }); + } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "MyProjectName" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); + + //Web Client + var webClientId = configurationSection["MyProjectName_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); + + /* MyProjectName_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + await CreateApplicationAsync( + name: webClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Web Application", + secret: null, + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{webClientRootUrl}signin-oidc", + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + name: consoleAndAngularClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Console Test / Angular Application", + secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken + }, + scopes: commonScopes, + redirectUri: webClientRootUrl, + postLogoutRedirectUri: webClientRootUrl + ); + } + + // Blazor Client + var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; + if (!blazorClientId.IsNullOrWhiteSpace()) + { + var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: blazorClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: null, + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + }, + scopes: commonScopes, + redirectUri: $"{blazorRootUrl}/authentication/login-callback", + postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" + ); + } + + // Swagger Client + var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: swaggerClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + }, + scopes: commonScopes, + redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html" + ); + } + } + + private async Task CreateApplicationAsync( + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string secret, + List grantTypes, + List scopes, + string redirectUri = null, + string postLogoutRedirectUri = null, + List permissions = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + if (!string.IsNullOrEmpty(name) && await _applicationManager.FindByClientIdAsync(name) != null) + { + return; + //throw new BusinessException(L["TheClientIdentifierIsAlreadyTakenByAnotherApplication"]); + } + + var client = await _applicationManager.FindByClientIdAsync(name); + if (client == null) + { + var application = new OpenIddictApplicationDescriptor + { + ClientId = name, + Type = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new [] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All(grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); + } + } + + if (!redirectUri.IsNullOrWhiteSpace() || !postLogoutRedirectUri.IsNullOrWhiteSpace()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); + } + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + } + + var buildInScopes = new [] + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (redirectUri != null) + { + if (!redirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + } + + if (postLogoutRedirectUri != null) + { + if (!postLogoutRedirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + await _applicationManager.CreateAsync(application); + } + } + +} diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.Designer.cs similarity index 64% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.Designer.cs index 606c549e29..17e18cfdaf 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.Designer.cs @@ -10,10 +10,10 @@ using Volo.Abp.EntityFrameworkCore; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Host.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20220119015238_Initial")] + [Migration("20220519051355_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -931,322 +931,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1254,8 +950,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1273,36 +970,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1317,284 +994,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1602,56 +1035,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1680,18 +1126,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1712,51 +1156,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2018,157 +1525,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2215,52 +1587,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.cs similarity index 60% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.cs index 61dd143293..bddc83db55 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220519051355_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Host.Migrations { public partial class Initial : Migration { @@ -256,16 +256,21 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResources", + name: "OpenIddictApplications", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - AllowedAccessTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -278,130 +283,21 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerApiResources", x => x.Id); + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); }); migrationBuilder.CreateTable( - name: "IdentityServerApiScopes", + name: "OpenIddictScopes", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Enabled = table.Column(type: "bit", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClients", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ClientName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - ClientUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - LogoUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - ProtocolType = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - RequireClientSecret = table.Column(type: "bit", nullable: false), - RequireConsent = table.Column(type: "bit", nullable: false), - AllowRememberConsent = table.Column(type: "bit", nullable: false), - AlwaysIncludeUserClaimsInIdToken = table.Column(type: "bit", nullable: false), - RequirePkce = table.Column(type: "bit", nullable: false), - AllowPlainTextPkce = table.Column(type: "bit", nullable: false), - RequireRequestObject = table.Column(type: "bit", nullable: false), - AllowAccessTokensViaBrowser = table.Column(type: "bit", nullable: false), - FrontChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - FrontChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - BackChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - BackChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - AllowOfflineAccess = table.Column(type: "bit", nullable: false), - IdentityTokenLifetime = table.Column(type: "int", nullable: false), - AllowedIdentityTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - AccessTokenLifetime = table.Column(type: "int", nullable: false), - AuthorizationCodeLifetime = table.Column(type: "int", nullable: false), - ConsentLifetime = table.Column(type: "int", nullable: true), - AbsoluteRefreshTokenLifetime = table.Column(type: "int", nullable: false), - SlidingRefreshTokenLifetime = table.Column(type: "int", nullable: false), - RefreshTokenUsage = table.Column(type: "int", nullable: false), - UpdateAccessTokenClaimsOnRefresh = table.Column(type: "bit", nullable: false), - RefreshTokenExpiration = table.Column(type: "int", nullable: false), - AccessTokenType = table.Column(type: "int", nullable: false), - EnableLocalLogin = table.Column(type: "bit", nullable: false), - IncludeJwtId = table.Column(type: "bit", nullable: false), - AlwaysSendClientClaims = table.Column(type: "bit", nullable: false), - ClientClaimsPrefix = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - PairWiseSubjectSalt = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - UserSsoLifetime = table.Column(type: "int", nullable: true), - UserCodeType = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - DeviceCodeLifetime = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClients", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerDeviceFlowCodes", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - DeviceCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - UserCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: false), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerDeviceFlowCodes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResources", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -414,30 +310,7 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResources", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerPersistedGrants", - columns: table => new - { - Key = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - Expiration = table.Column(type: "datetime2", nullable: true), - ConsumedTime = table.Column(type: "datetime2", nullable: true), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - Id = table.Column(type: "uniqueidentifier", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerPersistedGrants", x => x.Key); + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); }); migrationBuilder.CreateTable( @@ -673,320 +546,35 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceClaims", x => new { x.ApiResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceClaims_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceProperties", + name: "OpenIddictAuthorizations", columns: table => new { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceProperties", x => new { x.ApiResourceId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceProperties_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceScopes", - columns: table => new - { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceScopes", x => new { x.ApiResourceId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceScopes_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceSecrets", x => new { x.ApiResourceId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceSecrets_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeClaims", x => new { x.ApiScopeId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeClaims_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeProperties", - columns: table => new - { - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeProperties", x => new { x.ApiScopeId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeProperties_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientClaims", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientClaims", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientClaims_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientCorsOrigins", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Origin = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientCorsOrigins", x => new { x.ClientId, x.Origin }); - table.ForeignKey( - name: "FK_IdentityServerClientCorsOrigins_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientGrantTypes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - GrantType = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientGrantTypes", x => new { x.ClientId, x.GrantType }); - table.ForeignKey( - name: "FK_IdentityServerClientGrantTypes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientIdPRestrictions", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Provider = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientIdPRestrictions", x => new { x.ClientId, x.Provider }); - table.ForeignKey( - name: "FK_IdentityServerClientIdPRestrictions_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientPostLogoutRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - PostLogoutRedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientPostLogoutRedirectUris", x => new { x.ClientId, x.PostLogoutRedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientPostLogoutRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientProperties", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientProperties", x => new { x.ClientId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientProperties_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - RedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientRedirectUris", x => new { x.ClientId, x.RedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientScopes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientScopes", x => new { x.ClientId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerClientScopes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientSecrets", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientSecrets_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerIdentityResourceClaims", x => new { x.IdentityResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerIdentityResourceClaims_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceProperties", - columns: table => new - { - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResourceProperties", x => new { x.IdentityResourceId, x.Key, x.Value }); + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); table.ForeignKey( - name: "FK_IdentityServerIdentityResourceProperties_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); }); migrationBuilder.CreateTable( @@ -1012,6 +600,47 @@ namespace MyCompanyName.MyProjectName.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + migrationBuilder.CreateIndex( name: "IX_AbpAuditLogActions_AuditLogId", table: "AbpAuditLogActions", @@ -1166,40 +795,34 @@ namespace MyCompanyName.MyProjectName.Migrations column: "UserName"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerClients_ClientId", - table: "IdentityServerClients", + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", column: "ClientId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_DeviceCode", - table: "IdentityServerDeviceFlowCodes", - column: "DeviceCode", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_Expiration", - table: "IdentityServerDeviceFlowCodes", - column: "Expiration"); + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_UserCode", - table: "IdentityServerDeviceFlowCodes", - column: "UserCode"); + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_Expiration", - table: "IdentityServerPersistedGrants", - column: "Expiration"); + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_ClientId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "ClientId", "Type" }); + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_SessionId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "SessionId", "Type" }); + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -1253,61 +876,10 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUserTokens"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceClaims"); + name: "OpenIddictScopes"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerClientCorsOrigins"); - - migrationBuilder.DropTable( - name: "IdentityServerClientGrantTypes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientIdPRestrictions"); - - migrationBuilder.DropTable( - name: "IdentityServerClientPostLogoutRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerDeviceFlowCodes"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerPersistedGrants"); + name: "OpenIddictTokens"); migrationBuilder.DropTable( name: "AbpEntityChanges"); @@ -1325,19 +897,13 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUsers"); migrationBuilder.DropTable( - name: "IdentityServerApiResources"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopes"); + name: "OpenIddictAuthorizations"); migrationBuilder.DropTable( - name: "IdentityServerClients"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResources"); + name: "AbpAuditLogs"); migrationBuilder.DropTable( - name: "AbpAuditLogs"); + name: "OpenIddictApplications"); } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs index af4ba29c12..de96183c79 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -9,7 +9,7 @@ using Volo.Abp.EntityFrameworkCore; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Host.Migrations { [DbContext(typeof(MyProjectNameDbContext))] partial class MyProjectNameDbContextModelSnapshot : ModelSnapshot @@ -929,322 +929,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1252,8 +948,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1271,36 +968,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1315,284 +992,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1600,56 +1033,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1678,18 +1124,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1710,51 +1154,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2016,157 +1523,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2213,52 +1585,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj index 1d8766fec7..8b5ccfd1b2 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj @@ -9,6 +9,8 @@ + + @@ -25,7 +27,7 @@ - + @@ -33,11 +35,11 @@ - + - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs index 24eef29cb3..bc3a0eea8e 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs @@ -26,16 +26,16 @@ using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.HttpApi; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.Swashbuckle; @@ -63,15 +63,15 @@ namespace MyCompanyName.MyProjectName; // Account module packages typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), // Identity module packages typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityServerEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), // Audit logging module packages typeof(AbpAuditLoggingEntityFrameworkCoreModule), @@ -109,6 +109,23 @@ public class MyProjectNameModule : AbpModule typeof(MyProjectNameResource) ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -341,7 +358,6 @@ public class MyProjectNameModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json index f5cf04e16a..1e71e6c510 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json @@ -20,8 +20,8 @@ "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" }, - "IdentityServer": { - "Clients": { + "OpenIddict": { + "Applications": { "MyProjectName_App": { "ClientId": "MyProjectName_App", "ClientSecret": "1q2w3e*", diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj index 41033c4eab..0f841e6d14 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj @@ -9,6 +9,8 @@ + + @@ -23,7 +25,7 @@ - + @@ -31,12 +33,12 @@ - + - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs index 0fc9f27f87..7a0d97014a 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs @@ -16,22 +16,21 @@ using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.AuditLogging.MongoDB; using Volo.Abp.Autofac; using Volo.Abp.AutoMapper; -using Volo.Abp.MongoDB; using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.Identity; using Volo.Abp.Identity.MongoDB; using Volo.Abp.Identity.Web; -using Volo.Abp.IdentityServer.MongoDB; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.MongoDB; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.PermissionManagement.HttpApi; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.MongoDB; using Volo.Abp.SettingManagement.Web; @@ -60,15 +59,15 @@ namespace MyCompanyName.MyProjectName; // Account module packages typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), // Identity module packages typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityMongoDbModule), - typeof(AbpIdentityServerMongoDbModule), + typeof(AbpOpenIddictMongoDbModule), typeof(AbpIdentityWebModule), // Audit logging module packages @@ -110,6 +109,23 @@ public class MyProjectNameModule : AbpModule typeof(MyProjectNameResource) ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -306,7 +322,6 @@ public class MyProjectNameModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Data/MyProjectNameDbContext.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Data/MyProjectNameDbContext.cs index 6265e8ebba..8ae0662ece 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Data/MyProjectNameDbContext.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Data/MyProjectNameDbContext.cs @@ -3,7 +3,7 @@ using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; @@ -27,7 +27,7 @@ public class MyProjectNameDbContext : AbpDbContext builder.ConfigureSettingManagement(); builder.ConfigureAuditLogging(); builder.ConfigureIdentity(); - builder.ConfigureIdentityServer(); + builder.ConfigureOpenIddict(); builder.ConfigureFeatureManagement(); builder.ConfigureTenantManagement(); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.Designer.cs similarity index 64% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.Designer.cs index 606c549e29..c0a1035988 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.Designer.cs @@ -10,10 +10,10 @@ using Volo.Abp.EntityFrameworkCore; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Mvc.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20220119015238_Initial")] + [Migration("20220519051401_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -931,322 +931,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1254,8 +950,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1273,36 +970,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1317,284 +994,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1602,56 +1035,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1680,18 +1126,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1712,51 +1156,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2018,157 +1525,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2215,52 +1587,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.cs similarity index 60% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.cs index 61dd143293..012a5de1ad 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20220119015238_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220519051401_Initial.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Mvc.Migrations { public partial class Initial : Migration { @@ -256,16 +256,21 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResources", + name: "OpenIddictApplications", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - AllowedAccessTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -278,130 +283,21 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerApiResources", x => x.Id); + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); }); migrationBuilder.CreateTable( - name: "IdentityServerApiScopes", + name: "OpenIddictScopes", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Enabled = table.Column(type: "bit", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClients", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ClientName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - ClientUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - LogoUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - ProtocolType = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - RequireClientSecret = table.Column(type: "bit", nullable: false), - RequireConsent = table.Column(type: "bit", nullable: false), - AllowRememberConsent = table.Column(type: "bit", nullable: false), - AlwaysIncludeUserClaimsInIdToken = table.Column(type: "bit", nullable: false), - RequirePkce = table.Column(type: "bit", nullable: false), - AllowPlainTextPkce = table.Column(type: "bit", nullable: false), - RequireRequestObject = table.Column(type: "bit", nullable: false), - AllowAccessTokensViaBrowser = table.Column(type: "bit", nullable: false), - FrontChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - FrontChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - BackChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - BackChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - AllowOfflineAccess = table.Column(type: "bit", nullable: false), - IdentityTokenLifetime = table.Column(type: "int", nullable: false), - AllowedIdentityTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - AccessTokenLifetime = table.Column(type: "int", nullable: false), - AuthorizationCodeLifetime = table.Column(type: "int", nullable: false), - ConsentLifetime = table.Column(type: "int", nullable: true), - AbsoluteRefreshTokenLifetime = table.Column(type: "int", nullable: false), - SlidingRefreshTokenLifetime = table.Column(type: "int", nullable: false), - RefreshTokenUsage = table.Column(type: "int", nullable: false), - UpdateAccessTokenClaimsOnRefresh = table.Column(type: "bit", nullable: false), - RefreshTokenExpiration = table.Column(type: "int", nullable: false), - AccessTokenType = table.Column(type: "int", nullable: false), - EnableLocalLogin = table.Column(type: "bit", nullable: false), - IncludeJwtId = table.Column(type: "bit", nullable: false), - AlwaysSendClientClaims = table.Column(type: "bit", nullable: false), - ClientClaimsPrefix = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - PairWiseSubjectSalt = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - UserSsoLifetime = table.Column(type: "int", nullable: true), - UserCodeType = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - DeviceCodeLifetime = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClients", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerDeviceFlowCodes", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - DeviceCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - UserCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: false), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerDeviceFlowCodes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResources", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -414,30 +310,7 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResources", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerPersistedGrants", - columns: table => new - { - Key = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - Expiration = table.Column(type: "datetime2", nullable: true), - ConsumedTime = table.Column(type: "datetime2", nullable: true), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - Id = table.Column(type: "uniqueidentifier", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerPersistedGrants", x => x.Key); + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); }); migrationBuilder.CreateTable( @@ -673,320 +546,35 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceClaims", x => new { x.ApiResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceClaims_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceProperties", + name: "OpenIddictAuthorizations", columns: table => new { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceProperties", x => new { x.ApiResourceId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceProperties_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceScopes", - columns: table => new - { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceScopes", x => new { x.ApiResourceId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceScopes_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceSecrets", x => new { x.ApiResourceId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceSecrets_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeClaims", x => new { x.ApiScopeId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeClaims_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeProperties", - columns: table => new - { - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeProperties", x => new { x.ApiScopeId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeProperties_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientClaims", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientClaims", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientClaims_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientCorsOrigins", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Origin = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientCorsOrigins", x => new { x.ClientId, x.Origin }); - table.ForeignKey( - name: "FK_IdentityServerClientCorsOrigins_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientGrantTypes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - GrantType = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientGrantTypes", x => new { x.ClientId, x.GrantType }); - table.ForeignKey( - name: "FK_IdentityServerClientGrantTypes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientIdPRestrictions", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Provider = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientIdPRestrictions", x => new { x.ClientId, x.Provider }); - table.ForeignKey( - name: "FK_IdentityServerClientIdPRestrictions_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientPostLogoutRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - PostLogoutRedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientPostLogoutRedirectUris", x => new { x.ClientId, x.PostLogoutRedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientPostLogoutRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientProperties", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientProperties", x => new { x.ClientId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientProperties_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - RedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientRedirectUris", x => new { x.ClientId, x.RedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientScopes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientScopes", x => new { x.ClientId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerClientScopes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientSecrets", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientSecrets_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerIdentityResourceClaims", x => new { x.IdentityResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerIdentityResourceClaims_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceProperties", - columns: table => new - { - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResourceProperties", x => new { x.IdentityResourceId, x.Key, x.Value }); + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); table.ForeignKey( - name: "FK_IdentityServerIdentityResourceProperties_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); }); migrationBuilder.CreateTable( @@ -1012,6 +600,47 @@ namespace MyCompanyName.MyProjectName.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + migrationBuilder.CreateIndex( name: "IX_AbpAuditLogActions_AuditLogId", table: "AbpAuditLogActions", @@ -1166,40 +795,34 @@ namespace MyCompanyName.MyProjectName.Migrations column: "UserName"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerClients_ClientId", - table: "IdentityServerClients", + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", column: "ClientId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_DeviceCode", - table: "IdentityServerDeviceFlowCodes", - column: "DeviceCode", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_Expiration", - table: "IdentityServerDeviceFlowCodes", - column: "Expiration"); + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_UserCode", - table: "IdentityServerDeviceFlowCodes", - column: "UserCode"); + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_Expiration", - table: "IdentityServerPersistedGrants", - column: "Expiration"); + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_ClientId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "ClientId", "Type" }); + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_SessionId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "SessionId", "Type" }); + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -1253,61 +876,10 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUserTokens"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceClaims"); + name: "OpenIddictScopes"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerClientCorsOrigins"); - - migrationBuilder.DropTable( - name: "IdentityServerClientGrantTypes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientIdPRestrictions"); - - migrationBuilder.DropTable( - name: "IdentityServerClientPostLogoutRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerDeviceFlowCodes"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerPersistedGrants"); + name: "OpenIddictTokens"); migrationBuilder.DropTable( name: "AbpEntityChanges"); @@ -1325,19 +897,13 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUsers"); migrationBuilder.DropTable( - name: "IdentityServerApiResources"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopes"); + name: "OpenIddictAuthorizations"); migrationBuilder.DropTable( - name: "IdentityServerClients"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResources"); + name: "AbpAuditLogs"); migrationBuilder.DropTable( - name: "AbpAuditLogs"); + name: "OpenIddictApplications"); } } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs index af4ba29c12..6366763ca2 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -9,7 +9,7 @@ using Volo.Abp.EntityFrameworkCore; #nullable disable -namespace MyCompanyName.MyProjectName.Migrations +namespace MyCompanyName.MyProjectName.Mvc.Migrations { [DbContext(typeof(MyProjectNameDbContext))] partial class MyProjectNameDbContextModelSnapshot : ModelSnapshot @@ -929,322 +929,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1252,8 +948,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1271,36 +968,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1315,284 +992,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1600,56 +1033,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1678,18 +1124,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1710,51 +1154,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2016,157 +1523,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2213,52 +1585,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj index fd0c48af53..221b244cf2 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj @@ -9,6 +9,8 @@ + + @@ -24,7 +26,7 @@ - + @@ -32,12 +34,12 @@ - + - + diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs index f9725d589d..7f7a7a4da9 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs @@ -23,16 +23,16 @@ using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Identity.Web; -using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.HttpApi; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.PermissionManagement.IdentityServer; +using Volo.Abp.PermissionManagement.OpenIddict; using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.Web; @@ -61,15 +61,15 @@ namespace MyCompanyName.MyProjectName; // Account module packages typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), // Identity module packages typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementDomainIdentityServerModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityServerEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), typeof(AbpIdentityWebModule), // Audit logging module packages @@ -111,6 +111,23 @@ public class MyProjectNameModule : AbpModule typeof(MyProjectNameResource) ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -314,7 +331,6 @@ public class MyProjectNameModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); diff --git a/templates/app/angular/src/environments/environment.prod.ts b/templates/app/angular/src/environments/environment.prod.ts index ba01a49280..72f54fa857 100644 --- a/templates/app/angular/src/environments/environment.prod.ts +++ b/templates/app/angular/src/environments/environment.prod.ts @@ -10,9 +10,10 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44305', + issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts b/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts index d6600f0c17..9b2631c7f1 100644 --- a/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts +++ b/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts @@ -10,9 +10,10 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44301', + issuer: 'https://localhost:44301/', redirectUri: baseUrl, clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/module/angular/projects/dev-app/src/environments/environment.ts b/templates/module/angular/projects/dev-app/src/environments/environment.ts index 5d7e2a9fc6..14b5fd33b9 100644 --- a/templates/module/angular/projects/dev-app/src/environments/environment.ts +++ b/templates/module/angular/projects/dev-app/src/environments/environment.ts @@ -10,11 +10,12 @@ export const environment = { logoUrl: '', }, oAuthConfig: { - issuer: 'https://localhost:44301', + issuer: 'https://localhost:44301/', redirectUri: baseUrl, clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', responseType: 'code', - scope: 'offline_access MyProjectName role email openid profile', + scope: 'offline_access MyProjectName', requireHttps: true }, apis: { diff --git a/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json b/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json index da22f33234..e4494445e7 100644 --- a/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json +++ b/templates/module/aspnet-core/MyCompanyName.MyProjectName.abpmdl.json @@ -75,8 +75,8 @@ "path": "host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.abppkg.json", "folder": "host" }, - "MyCompanyName.MyProjectName.IdentityServer": { - "path": "host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json", + "MyCompanyName.MyProjectName.OpenIddict": { + "path": "host/MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.OpenIddict.abppkg.json", "folder": "host" }, "MyCompanyName.MyProjectName.Host.Shared": { @@ -108,4 +108,4 @@ "folder": "host" } } -} \ No newline at end of file +} diff --git a/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln b/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln index 6541e3d020..9425670ee3 100644 --- a/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln +++ b/templates/module/aspnet-core/MyCompanyName.MyProjectName.sln @@ -43,7 +43,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Web.Host", "host\MyCompanyName.MyProjectName.Web.Host\MyCompanyName.MyProjectName.Web.Host.csproj", "{73513786-B6C6-4A21-89C5-0FBDD0A46107}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.IdentityServer", "host\MyCompanyName.MyProjectName.IdentityServer\MyCompanyName.MyProjectName.IdentityServer.csproj", "{690203F4-3CD5-4569-88D9-EE831EEA5F5F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.OpenIddict", "host\MyCompanyName.MyProjectName.OpenIddict\MyCompanyName.MyProjectName.OpenIddict.csproj", "{690203F4-3CD5-4569-88D9-EE831EEA5F5F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyCompanyName.MyProjectName.Host.Shared", "host\MyCompanyName.MyProjectName.Host.Shared\MyCompanyName.MyProjectName.Host.Shared.csproj", "{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB}" EndProject diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameHostMenuContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameHostMenuContributor.cs index c2527a0371..29337dc2cd 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameHostMenuContributor.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyProjectNameHostMenuContributor.cs @@ -27,12 +27,12 @@ public class MyProjectNameHostMenuContributor : IMenuContributor { var accountStringLocalizer = context.GetLocalizer(); - var identityServerUrl = _configuration["AuthServer:Authority"] ?? ""; + var openIddictUrl = _configuration["AuthServer:Authority"] ?? ""; context.Menu.AddItem(new ApplicationMenuItem( "Account.Manage", accountStringLocalizer["ManageYourProfile"], - $"{identityServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", + $"{openIddictUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", icon: "fa fa-cog", order: 1000, null).RequireAuthenticated()); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj index 383fb4a1e2..154105cfc7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj @@ -17,6 +17,8 @@ + + @@ -29,7 +31,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs index cb44a1a683..7dce65bbdb 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyProjectNameBlazorHostModule.cs @@ -64,7 +64,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Host; typeof(AbpSwashbuckleModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), typeof(AbpAccountApplicationModule), typeof(AbpAspNetCoreComponentsServerBasicThemeModule), typeof(AbpIdentityApplicationModule), @@ -99,6 +99,23 @@ public class MyProjectNameBlazorHostModule : AbpModule typeof(MyProjectNameBlazorHostModule).Assembly ); }); + + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -244,7 +261,6 @@ public class MyProjectNameBlazorHostModule : AbpModule } app.UseUnitOfWork(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); app.UseAbpSwaggerUI(options => diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs deleted file mode 100644 index 6f8bbf0d69..0000000000 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs +++ /dev/null @@ -1,323 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using IdentityServer4.Models; -using Microsoft.Extensions.Configuration; -using Volo.Abp.Authorization.Permissions; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Guids; -using Volo.Abp.IdentityServer.ApiResources; -using Volo.Abp.IdentityServer.ApiScopes; -using Volo.Abp.IdentityServer.Clients; -using Volo.Abp.IdentityServer.IdentityResources; -using Volo.Abp.MultiTenancy; -using Volo.Abp.PermissionManagement; -using Volo.Abp.Uow; -using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; -using ApiScope = Volo.Abp.IdentityServer.ApiScopes.ApiScope; -using Client = Volo.Abp.IdentityServer.Clients.Client; - -namespace MyCompanyName.MyProjectName.IdentityServer; - -public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly IApiResourceRepository _apiResourceRepository; - private readonly IApiScopeRepository _apiScopeRepository; - private readonly IClientRepository _clientRepository; - private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; - private readonly IGuidGenerator _guidGenerator; - private readonly IPermissionDataSeeder _permissionDataSeeder; - private readonly IConfiguration _configuration; - private readonly ICurrentTenant _currentTenant; - - public IdentityServerDataSeedContributor( - IClientRepository clientRepository, - IApiResourceRepository apiResourceRepository, - IApiScopeRepository apiScopeRepository, - IIdentityResourceDataSeeder identityResourceDataSeeder, - IGuidGenerator guidGenerator, - IPermissionDataSeeder permissionDataSeeder, - IConfiguration configuration, - ICurrentTenant currentTenant) - { - _clientRepository = clientRepository; - _apiResourceRepository = apiResourceRepository; - _apiScopeRepository = apiScopeRepository; - _identityResourceDataSeeder = identityResourceDataSeeder; - _guidGenerator = guidGenerator; - _permissionDataSeeder = permissionDataSeeder; - _configuration = configuration; - _currentTenant = currentTenant; - } - - [UnitOfWork] - public virtual async Task SeedAsync(DataSeedContext context) - { - using (_currentTenant.Change(context?.TenantId)) - { - await _identityResourceDataSeeder.CreateStandardResourcesAsync(); - await CreateApiResourcesAsync(); - await CreateApiScopesAsync(); - await CreateClientsAsync(); - } - } - - private async Task CreateApiScopesAsync() - { - await CreateApiScopeAsync("MyProjectName"); - } - - private async Task CreateApiResourcesAsync() - { - var commonApiUserClaims = new[] - { - "email", - "email_verified", - "name", - "phone_number", - "phone_number_verified", - "role" - }; - - await CreateApiResourceAsync("MyProjectName", commonApiUserClaims); - } - - private async Task CreateApiResourceAsync(string name, IEnumerable claims) - { - var apiResource = await _apiResourceRepository.FindByNameAsync(name); - if (apiResource == null) - { - apiResource = await _apiResourceRepository.InsertAsync( - new ApiResource( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - foreach (var claim in claims) - { - if (apiResource.FindClaim(claim) == null) - { - apiResource.AddUserClaim(claim); - } - } - - return await _apiResourceRepository.UpdateAsync(apiResource); - } - - private async Task CreateApiScopeAsync(string name) - { - var apiScope = await _apiScopeRepository.FindByNameAsync(name); - if (apiScope == null) - { - apiScope = await _apiScopeRepository.InsertAsync( - new ApiScope( - _guidGenerator.Create(), - name, - name + " API" - ), - autoSave: true - ); - } - - return apiScope; - } - - private async Task CreateClientsAsync() - { - var commonScopes = new[] - { - "email", - "openid", - "profile", - "role", - "phone", - "address", - "MyProjectName" - }; - - var configurationSection = _configuration.GetSection("IdentityServer:Clients"); - - //Web Client - var webClientId = configurationSection["MyProjectName_Web:ClientId"]; - if (!webClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); - - /* MyProjectName_Web client is only needed if you created a tiered - * solution. Otherwise, you can delete this client. */ - - await CreateClientAsync( - name: webClientId, - scopes: commonScopes, - grantTypes: new[] { "hybrid" }, - secret: (configurationSection["MyProjectName_Web:ClientSecret"] ?? "1q2w3e*").Sha256(), - redirectUri: $"{webClientRootUrl}signin-oidc", - postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc", - frontChannelLogoutUri: $"{webClientRootUrl}Account/FrontChannelLogout", - corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } - ); - } - - //Console Test / Angular Client - var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; - if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); - - await CreateClientAsync( - name: consoleAndAngularClientId, - scopes: commonScopes, - grantTypes: new[] { "password", "client_credentials", "authorization_code" }, - secret: (configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*").Sha256(), - requireClientSecret: false, - redirectUri: webClientRootUrl, - postLogoutRedirectUri: webClientRootUrl, - corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } - ); - } - - // Blazor Client - var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; - if (!blazorClientId.IsNullOrWhiteSpace()) - { - var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); - - await CreateClientAsync( - name: blazorClientId, - scopes: commonScopes, - grantTypes: new[] { "authorization_code" }, - secret: configurationSection["MyProjectName_Blazor:ClientSecret"]?.Sha256(), - requireClientSecret: false, - redirectUri: $"{blazorRootUrl}/authentication/login-callback", - postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback", - corsOrigins: new[] { blazorRootUrl.RemovePostFix("/") } - ); - } - - // Swagger Client - var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; - if (!swaggerClientId.IsNullOrWhiteSpace()) - { - var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); - - await CreateClientAsync( - name: swaggerClientId, - scopes: commonScopes, - grantTypes: new[] { "authorization_code" }, - secret: configurationSection["MyProjectName_Swagger:ClientSecret"]?.Sha256(), - requireClientSecret: false, - redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", - corsOrigins: new[] { swaggerRootUrl.RemovePostFix("/") } - ); - } - } - - private async Task CreateClientAsync( - string name, - IEnumerable scopes, - IEnumerable grantTypes, - string secret = null, - string redirectUri = null, - string postLogoutRedirectUri = null, - string frontChannelLogoutUri = null, - bool requireClientSecret = true, - bool requirePkce = false, - IEnumerable permissions = null, - IEnumerable corsOrigins = null) - { - var client = await _clientRepository.FindByClientIdAsync(name); - if (client == null) - { - client = await _clientRepository.InsertAsync( - new Client( - _guidGenerator.Create(), - name - ) - { - ClientName = name, - ProtocolType = "oidc", - Description = name, - AlwaysIncludeUserClaimsInIdToken = true, - AllowOfflineAccess = true, - AbsoluteRefreshTokenLifetime = 31536000, //365 days - AccessTokenLifetime = 31536000, //365 days - AuthorizationCodeLifetime = 300, - IdentityTokenLifetime = 300, - RequireConsent = false, - FrontChannelLogoutUri = frontChannelLogoutUri, - RequireClientSecret = requireClientSecret, - RequirePkce = requirePkce - }, - autoSave: true - ); - } - - foreach (var scope in scopes) - { - if (client.FindScope(scope) == null) - { - client.AddScope(scope); - } - } - - foreach (var grantType in grantTypes) - { - if (client.FindGrantType(grantType) == null) - { - client.AddGrantType(grantType); - } - } - - if (!secret.IsNullOrEmpty()) - { - if (client.FindSecret(secret) == null) - { - client.AddSecret(secret); - } - } - - if (redirectUri != null) - { - if (client.FindRedirectUri(redirectUri) == null) - { - client.AddRedirectUri(redirectUri); - } - } - - if (postLogoutRedirectUri != null) - { - if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) - { - client.AddPostLogoutRedirectUri(postLogoutRedirectUri); - } - } - - if (permissions != null) - { - await _permissionDataSeeder.SeedAsync( - ClientPermissionValueProvider.ProviderName, - name, - permissions, - null - ); - } - - if (corsOrigins != null) - { - foreach (var origin in corsOrigins) - { - if (!origin.IsNullOrWhiteSpace() && client.FindCorsOrigin(origin) == null) - { - client.AddCorsOrigin(origin); - } - } - } - - return await _clientRepository.UpdateAsync(client); - } -} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Dockerfile b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Dockerfile similarity index 84% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Dockerfile rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Dockerfile index 8d0d75895a..4c68c2673c 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Dockerfile +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Dockerfile @@ -5,7 +5,7 @@ EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build WORKDIR /src COPY . . -WORKDIR /src/templates/service/host/MyCompanyName.MyProjectName.IdentityServer +WORKDIR /src/templates/service/host/MyCompanyName.MyProjectName.OpenIddict RUN dotnet restore -nowarn:msb3202,nu1503 RUN dotnet build --no-restore -c Release -o /app @@ -15,4 +15,4 @@ RUN dotnet publish --no-restore -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . -ENTRYPOINT ["dotnet", "MyCompanyName.MyProjectName.IdentityServer.dll"] +ENTRYPOINT ["dotnet", "MyCompanyName.MyProjectName.OpenIddict.dll"] diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/EntityFrameworkCore/OpenIddictHostMigrationsDbContext.cs similarity index 74% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/EntityFrameworkCore/OpenIddictHostMigrationsDbContext.cs index 3b04ddd4bb..06125bf4fd 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/EntityFrameworkCore/IdentityServerHostMigrationsDbContext.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/EntityFrameworkCore/OpenIddictHostMigrationsDbContext.cs @@ -3,16 +3,16 @@ using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.TenantManagement.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.EntityFrameworkCore; -public class IdentityServerHostMigrationsDbContext : AbpDbContext +public class OpenIddictHostMigrationsDbContext : AbpDbContext { - public IdentityServerHostMigrationsDbContext(DbContextOptions options) + public OpenIddictHostMigrationsDbContext(DbContextOptions options) : base(options) { @@ -26,7 +26,7 @@ public class IdentityServerHostMigrationsDbContext : AbpDbContext +public class OpenIddictHostMigrationsDbContextFactory : IDesignTimeDbContextFactory { - public IdentityServerHostMigrationsDbContext CreateDbContext(string[] args) + public OpenIddictHostMigrationsDbContext CreateDbContext(string[] args) { var configuration = BuildConfiguration(); - var builder = new DbContextOptionsBuilder() + var builder = new DbContextOptionsBuilder() .UseSqlServer(configuration.GetConnectionString("Default")); - return new IdentityServerHostMigrationsDbContext(builder.Options); + return new OpenIddictHostMigrationsDbContext(builder.Options); } private static IConfigurationRoot BuildConfiguration() diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/FodyWeavers.xml b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/FodyWeavers.xml similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/FodyWeavers.xml rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/FodyWeavers.xml diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/FodyWeavers.xsd b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/FodyWeavers.xsd similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/FodyWeavers.xsd rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/FodyWeavers.xsd diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.Designer.cs similarity index 64% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.Designer.cs index 11ca83b86d..8452458e3e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/20211124020400_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.Designer.cs @@ -12,8 +12,8 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { - [DbContext(typeof(IdentityServerHostMigrationsDbContext))] - [Migration("20211124020400_Initial")] + [DbContext(typeof(OpenIddictHostMigrationsDbContext))] + [Migration("20220519020825_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -931,322 +931,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1254,8 +950,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1273,36 +970,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1317,284 +994,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1602,56 +1035,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1680,18 +1126,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1712,51 +1156,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2018,157 +1525,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2215,52 +1587,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.cs similarity index 60% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.cs index 61dd143293..4a83874cba 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20220119015238_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/20220519020825_Initial.cs @@ -256,16 +256,21 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResources", + name: "OpenIddictApplications", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - AllowedAccessTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -278,130 +283,21 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerApiResources", x => x.Id); + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); }); migrationBuilder.CreateTable( - name: "IdentityServerApiScopes", + name: "OpenIddictScopes", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - Enabled = table.Column(type: "bit", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClients", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ClientName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - ClientUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - LogoUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - ProtocolType = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - RequireClientSecret = table.Column(type: "bit", nullable: false), - RequireConsent = table.Column(type: "bit", nullable: false), - AllowRememberConsent = table.Column(type: "bit", nullable: false), - AlwaysIncludeUserClaimsInIdToken = table.Column(type: "bit", nullable: false), - RequirePkce = table.Column(type: "bit", nullable: false), - AllowPlainTextPkce = table.Column(type: "bit", nullable: false), - RequireRequestObject = table.Column(type: "bit", nullable: false), - AllowAccessTokensViaBrowser = table.Column(type: "bit", nullable: false), - FrontChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - FrontChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - BackChannelLogoutUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - BackChannelLogoutSessionRequired = table.Column(type: "bit", nullable: false), - AllowOfflineAccess = table.Column(type: "bit", nullable: false), - IdentityTokenLifetime = table.Column(type: "int", nullable: false), - AllowedIdentityTokenSigningAlgorithms = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - AccessTokenLifetime = table.Column(type: "int", nullable: false), - AuthorizationCodeLifetime = table.Column(type: "int", nullable: false), - ConsentLifetime = table.Column(type: "int", nullable: true), - AbsoluteRefreshTokenLifetime = table.Column(type: "int", nullable: false), - SlidingRefreshTokenLifetime = table.Column(type: "int", nullable: false), - RefreshTokenUsage = table.Column(type: "int", nullable: false), - UpdateAccessTokenClaimsOnRefresh = table.Column(type: "bit", nullable: false), - RefreshTokenExpiration = table.Column(type: "int", nullable: false), - AccessTokenType = table.Column(type: "int", nullable: false), - EnableLocalLogin = table.Column(type: "bit", nullable: false), - IncludeJwtId = table.Column(type: "bit", nullable: false), - AlwaysSendClientClaims = table.Column(type: "bit", nullable: false), - ClientClaimsPrefix = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - PairWiseSubjectSalt = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - UserSsoLifetime = table.Column(type: "int", nullable: true), - UserCodeType = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - DeviceCodeLifetime = table.Column(type: "int", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true), - LastModificationTime = table.Column(type: "datetime2", nullable: true), - LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), - IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), - DeleterId = table.Column(type: "uniqueidentifier", nullable: true), - DeletionTime = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClients", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerDeviceFlowCodes", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - DeviceCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - UserCode = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: false), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - CreatorId = table.Column(type: "uniqueidentifier", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerDeviceFlowCodes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResources", - columns: table => new - { - Id = table.Column(type: "uniqueidentifier", nullable: false), - Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - DisplayName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Enabled = table.Column(type: "bit", nullable: false), - Required = table.Column(type: "bit", nullable: false), - Emphasize = table.Column(type: "bit", nullable: false), - ShowInDiscoveryDocument = table.Column(type: "bit", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), CreationTime = table.Column(type: "datetime2", nullable: false), @@ -414,30 +310,7 @@ namespace MyCompanyName.MyProjectName.Migrations }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResources", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerPersistedGrants", - columns: table => new - { - Key = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), - SubjectId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - SessionId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), - ClientId = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - Description = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), - CreationTime = table.Column(type: "datetime2", nullable: false), - Expiration = table.Column(type: "datetime2", nullable: true), - ConsumedTime = table.Column(type: "datetime2", nullable: true), - Data = table.Column(type: "nvarchar(max)", maxLength: 50000, nullable: false), - Id = table.Column(type: "uniqueidentifier", nullable: false), - ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), - ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerPersistedGrants", x => x.Key); + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); }); migrationBuilder.CreateTable( @@ -673,320 +546,35 @@ namespace MyCompanyName.MyProjectName.Migrations }); migrationBuilder.CreateTable( - name: "IdentityServerApiResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceClaims", x => new { x.ApiResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceClaims_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceProperties", + name: "OpenIddictAuthorizations", columns: table => new { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceProperties", x => new { x.ApiResourceId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceProperties_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceScopes", - columns: table => new - { - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceScopes", x => new { x.ApiResourceId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceScopes_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiResourceSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ApiResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(1000)", maxLength: 1000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiResourceSecrets", x => new { x.ApiResourceId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiResourceSecrets_IdentityServerApiResources_ApiResourceId", - column: x => x.ApiResourceId, - principalTable: "IdentityServerApiResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeClaims", x => new { x.ApiScopeId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeClaims_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerApiScopeProperties", - columns: table => new - { - ApiScopeId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerApiScopeProperties", x => new { x.ApiScopeId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerApiScopeProperties_IdentityServerApiScopes_ApiScopeId", - column: x => x.ApiScopeId, - principalTable: "IdentityServerApiScopes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientClaims", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientClaims", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientClaims_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientCorsOrigins", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Origin = table.Column(type: "nvarchar(150)", maxLength: 150, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientCorsOrigins", x => new { x.ClientId, x.Origin }); - table.ForeignKey( - name: "FK_IdentityServerClientCorsOrigins_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientGrantTypes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - GrantType = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientGrantTypes", x => new { x.ClientId, x.GrantType }); - table.ForeignKey( - name: "FK_IdentityServerClientGrantTypes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientIdPRestrictions", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Provider = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientIdPRestrictions", x => new { x.ClientId, x.Provider }); - table.ForeignKey( - name: "FK_IdentityServerClientIdPRestrictions_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientPostLogoutRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - PostLogoutRedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientPostLogoutRedirectUris", x => new { x.ClientId, x.PostLogoutRedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientPostLogoutRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientProperties", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientProperties", x => new { x.ClientId, x.Key, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientProperties_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientRedirectUris", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - RedirectUri = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientRedirectUris", x => new { x.ClientId, x.RedirectUri }); - table.ForeignKey( - name: "FK_IdentityServerClientRedirectUris_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientScopes", - columns: table => new - { - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Scope = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientScopes", x => new { x.ClientId, x.Scope }); - table.ForeignKey( - name: "FK_IdentityServerClientScopes_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerClientSecrets", - columns: table => new - { - Type = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(4000)", maxLength: 4000, nullable: false), - ClientId = table.Column(type: "uniqueidentifier", nullable: false), - Description = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), - Expiration = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerClientSecrets", x => new { x.ClientId, x.Type, x.Value }); - table.ForeignKey( - name: "FK_IdentityServerClientSecrets_IdentityServerClients_ClientId", - column: x => x.ClientId, - principalTable: "IdentityServerClients", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceClaims", - columns: table => new - { - Type = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_IdentityServerIdentityResourceClaims", x => new { x.IdentityResourceId, x.Type }); - table.ForeignKey( - name: "FK_IdentityServerIdentityResourceClaims_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "IdentityServerIdentityResourceProperties", - columns: table => new - { - IdentityResourceId = table.Column(type: "uniqueidentifier", nullable: false), - Key = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false), - Value = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: false) + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) }, constraints: table => { - table.PrimaryKey("PK_IdentityServerIdentityResourceProperties", x => new { x.IdentityResourceId, x.Key, x.Value }); + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); table.ForeignKey( - name: "FK_IdentityServerIdentityResourceProperties_IdentityServerIdentityResources_IdentityResourceId", - column: x => x.IdentityResourceId, - principalTable: "IdentityServerIdentityResources", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); }); migrationBuilder.CreateTable( @@ -1012,6 +600,47 @@ namespace MyCompanyName.MyProjectName.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + migrationBuilder.CreateIndex( name: "IX_AbpAuditLogActions_AuditLogId", table: "AbpAuditLogActions", @@ -1166,40 +795,34 @@ namespace MyCompanyName.MyProjectName.Migrations column: "UserName"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerClients_ClientId", - table: "IdentityServerClients", + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", column: "ClientId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_DeviceCode", - table: "IdentityServerDeviceFlowCodes", - column: "DeviceCode", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_Expiration", - table: "IdentityServerDeviceFlowCodes", - column: "Expiration"); + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerDeviceFlowCodes_UserCode", - table: "IdentityServerDeviceFlowCodes", - column: "UserCode"); + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_Expiration", - table: "IdentityServerPersistedGrants", - column: "Expiration"); + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_ClientId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "ClientId", "Type" }); + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); migrationBuilder.CreateIndex( - name: "IX_IdentityServerPersistedGrants_SubjectId_SessionId_Type", - table: "IdentityServerPersistedGrants", - columns: new[] { "SubjectId", "SessionId", "Type" }); + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -1253,61 +876,10 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUserTokens"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceClaims"); + name: "OpenIddictScopes"); migrationBuilder.DropTable( - name: "IdentityServerApiResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerApiResourceSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopeProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerClientCorsOrigins"); - - migrationBuilder.DropTable( - name: "IdentityServerClientGrantTypes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientIdPRestrictions"); - - migrationBuilder.DropTable( - name: "IdentityServerClientPostLogoutRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerClientRedirectUris"); - - migrationBuilder.DropTable( - name: "IdentityServerClientScopes"); - - migrationBuilder.DropTable( - name: "IdentityServerClientSecrets"); - - migrationBuilder.DropTable( - name: "IdentityServerDeviceFlowCodes"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceClaims"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResourceProperties"); - - migrationBuilder.DropTable( - name: "IdentityServerPersistedGrants"); + name: "OpenIddictTokens"); migrationBuilder.DropTable( name: "AbpEntityChanges"); @@ -1325,19 +897,13 @@ namespace MyCompanyName.MyProjectName.Migrations name: "AbpUsers"); migrationBuilder.DropTable( - name: "IdentityServerApiResources"); - - migrationBuilder.DropTable( - name: "IdentityServerApiScopes"); + name: "OpenIddictAuthorizations"); migrationBuilder.DropTable( - name: "IdentityServerClients"); - - migrationBuilder.DropTable( - name: "IdentityServerIdentityResources"); + name: "AbpAuditLogs"); migrationBuilder.DropTable( - name: "AbpAuditLogs"); + name: "OpenIddictApplications"); } } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/OpenIddictHostMigrationsDbContextModelSnapshot.cs similarity index 64% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/OpenIddictHostMigrationsDbContextModelSnapshot.cs index 1fdc81f268..039c291174 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Migrations/IdentityServerHostMigrationsDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Migrations/OpenIddictHostMigrationsDbContextModelSnapshot.cs @@ -11,8 +11,8 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { - [DbContext(typeof(IdentityServerHostMigrationsDbContext))] - partial class IdentityServerHostMigrationsDbContextModelSnapshot : ModelSnapshot + [DbContext(typeof(OpenIddictHostMigrationsDbContext))] + partial class OpenIddictHostMigrationsDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { @@ -929,322 +929,18 @@ namespace MyCompanyName.MyProjectName.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("AllowedAccessTokenSigningAlgorithms") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiResources", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Type"); - - b.ToTable("IdentityServerApiResourceClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiResourceId", "Key", "Value"); - - b.ToTable("IdentityServerApiResourceProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiResourceId", "Scope"); - - b.ToTable("IdentityServerApiResourceScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.Property("ApiResourceId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ApiResourceId", "Type", "Value"); - - b.ToTable("IdentityServerApiResourceSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Emphasize") - .HasColumnType("bit"); - - b.Property("Enabled") - .HasColumnType("bit"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); - - b.HasKey("Id"); - - b.ToTable("IdentityServerApiScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ApiScopeId", "Type"); - - b.ToTable("IdentityServerApiScopeClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.Property("ApiScopeId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ApiScopeId", "Key", "Value"); - - b.ToTable("IdentityServerApiScopeProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AbsoluteRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenLifetime") - .HasColumnType("int"); - - b.Property("AccessTokenType") - .HasColumnType("int"); - - b.Property("AllowAccessTokensViaBrowser") - .HasColumnType("bit"); - - b.Property("AllowOfflineAccess") - .HasColumnType("bit"); - - b.Property("AllowPlainTextPkce") - .HasColumnType("bit"); - - b.Property("AllowRememberConsent") - .HasColumnType("bit"); - - b.Property("AllowedIdentityTokenSigningAlgorithms") + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); - b.Property("AlwaysIncludeUserClaimsInIdToken") - .HasColumnType("bit"); - - b.Property("AlwaysSendClientClaims") - .HasColumnType("bit"); - - b.Property("AuthorizationCodeLifetime") - .HasColumnType("int"); - - b.Property("BackChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("BackChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("ClientClaimsPrefix") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ClientUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1252,8 +948,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsentLifetime") - .HasColumnType("int"); + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.Property("CreationTime") .HasColumnType("datetime2") @@ -1271,36 +968,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("datetime2") .HasColumnName("DeletionTime"); - b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); - - b.Property("DeviceCodeLifetime") - .HasColumnType("int"); - - b.Property("EnableLocalLogin") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("FrontChannelLogoutSessionRequired") - .HasColumnType("bit"); - - b.Property("FrontChannelLogoutUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("IdentityTokenLifetime") - .HasColumnType("int"); - - b.Property("IncludeJwtId") - .HasColumnType("bit"); - b.Property("IsDeleted") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -1315,284 +992,40 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); - b.Property("LogoUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("PairWiseSubjectSalt") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ProtocolType") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("RefreshTokenExpiration") - .HasColumnType("int"); - - b.Property("RefreshTokenUsage") - .HasColumnType("int"); - - b.Property("RequireClientSecret") - .HasColumnType("bit"); - - b.Property("RequireConsent") - .HasColumnType("bit"); - - b.Property("RequirePkce") - .HasColumnType("bit"); - - b.Property("RequireRequestObject") - .HasColumnType("bit"); - - b.Property("SlidingRefreshTokenLifetime") - .HasColumnType("int"); - - b.Property("UpdateAccessTokenClaimsOnRefresh") - .HasColumnType("bit"); - - b.Property("UserCodeType") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("UserSsoLifetime") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("IdentityServerClients", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Origin") - .HasMaxLength(150) - .HasColumnType("nvarchar(150)"); - - b.HasKey("ClientId", "Origin"); - - b.ToTable("IdentityServerClientCorsOrigins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("GrantType") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.HasKey("ClientId", "GrantType"); - - b.ToTable("IdentityServerClientGrantTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Provider") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Provider"); - - b.ToTable("IdentityServerClientIdPRestrictions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("PostLogoutRedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "PostLogoutRedirectUri"); - - b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "Key", "Value"); - - b.ToTable("IdentityServerClientProperties", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("RedirectUri") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.HasKey("ClientId", "RedirectUri"); - - b.ToTable("IdentityServerClientRedirectUris", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Scope") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.HasKey("ClientId", "Scope"); - - b.ToTable("IdentityServerClientScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => - { - b.Property("ClientId") - .HasColumnType("uniqueidentifier"); - - b.Property("Type") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); - - b.Property("Value") - .HasMaxLength(4000) - .HasColumnType("nvarchar(4000)"); - - b.Property("Description") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); - - b.Property("Expiration") - .HasColumnType("datetime2"); - - b.HasKey("ClientId", "Type", "Value"); - - b.ToTable("IdentityServerClientSecrets", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) + b.Property("Permissions") .HasColumnType("nvarchar(max)"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("DeviceCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Expiration") - .IsRequired() - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("UserCode") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); - b.HasKey("Id"); + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); - b.HasIndex("DeviceCode") - .IsUnique(); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("Expiration"); + b.HasKey("Id"); - b.HasIndex("UserCode"); + b.HasIndex("ClientId"); - b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + b.ToTable("OpenIddictApplications", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.Property("Key") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); - b.Property("ClientId") - .IsRequired() - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() @@ -1600,56 +1033,69 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); - b.Property("ConsumedTime") + b.Property("CreationDate") .HasColumnType("datetime2"); b.Property("CreationTime") - .HasColumnType("datetime2"); + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Data") - .IsRequired() - .HasMaxLength(50000) - .HasColumnType("nvarchar(max)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); - b.Property("Description") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); - b.Property("Expiration") - .HasColumnType("datetime2"); + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); - b.Property("Id") - .HasColumnType("uniqueidentifier"); + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); - b.Property("SessionId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); - b.Property("SubjectId") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); - b.Property("Type") - .IsRequired() + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); - b.HasKey("Key"); + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); - b.HasIndex("Expiration"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasIndex("SubjectId", "ClientId", "Type"); + b.HasKey("Id"); - b.HasIndex("SubjectId", "SessionId", "Type"); + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerPersistedGrants", (string)null); + b.ToTable("OpenIddictAuthorizations", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -1678,18 +1124,16 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("DeletionTime"); b.Property("Description") - .HasMaxLength(1000) - .HasColumnType("nvarchar(1000)"); + .HasColumnType("nvarchar(max)"); - b.Property("DisplayName") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); - b.Property("Emphasize") - .HasColumnType("bit"); + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); - b.Property("Enabled") - .HasColumnType("bit"); + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") @@ -1710,51 +1154,114 @@ namespace MyCompanyName.MyProjectName.Migrations .HasColumnName("LastModifierId"); b.Property("Name") - .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); - b.Property("Required") - .HasColumnType("bit"); + b.Property("Properties") + .HasColumnType("nvarchar(max)"); - b.Property("ShowInDiscoveryDocument") - .HasColumnType("bit"); + b.Property("Resources") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); - b.ToTable("IdentityServerIdentityResources", (string)null); + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.Property("IdentityResourceId") + b.Property("Id") + .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("Type") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); - b.HasKey("IdentityResourceId", "Type"); + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); - b.ToTable("IdentityServerIdentityResourceClaims", (string)null); - }); + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.Property("IdentityResourceId") - .HasColumnType("uniqueidentifier"); + b.Property("CreationDate") + .HasColumnType("datetime2"); - b.Property("Key") - .HasMaxLength(250) - .HasColumnType("nvarchar(250)"); + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); - b.Property("Value") - .HasMaxLength(2000) - .HasColumnType("nvarchar(2000)"); + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); - b.HasKey("IdentityResourceId", "Key", "Value"); + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + b.ToTable("OpenIddictTokens", (string)null); }); modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => @@ -2016,157 +1523,22 @@ namespace MyCompanyName.MyProjectName.Migrations .IsRequired(); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("UserClaims") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Properties") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Scopes") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) - .WithMany("Secrets") - .HasForeignKey("ApiResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("UserClaims") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) - .WithMany("Properties") - .HasForeignKey("ApiScopeId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Claims") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedCorsOrigins") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedGrantTypes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("IdentityProviderRestrictions") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("PostLogoutRedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("Properties") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("RedirectUris") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => - { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("AllowedScopes") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => { - b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) - .WithMany("ClientSecrets") - .HasForeignKey("ClientId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("UserClaims") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => - { - b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) - .WithMany("Properties") - .HasForeignKey("IdentityResourceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); }); modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => @@ -2213,52 +1585,6 @@ namespace MyCompanyName.MyProjectName.Migrations b.Navigation("Roles"); }); - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => - { - b.Navigation("Properties"); - - b.Navigation("Scopes"); - - b.Navigation("Secrets"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => - { - b.Navigation("AllowedCorsOrigins"); - - b.Navigation("AllowedGrantTypes"); - - b.Navigation("AllowedScopes"); - - b.Navigation("Claims"); - - b.Navigation("ClientSecrets"); - - b.Navigation("IdentityProviderRestrictions"); - - b.Navigation("PostLogoutRedirectUris"); - - b.Navigation("Properties"); - - b.Navigation("RedirectUris"); - }); - - modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => - { - b.Navigation("Properties"); - - b.Navigation("UserClaims"); - }); - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => { b.Navigation("ConnectionStrings"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.IdentityServer.abppkg.json similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.abppkg.json rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.IdentityServer.abppkg.json diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.OpenIddict.csproj similarity index 93% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.OpenIddict.csproj index d91ec3f273..1ebde0f69b 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyCompanyName.MyProjectName.OpenIddict.csproj @@ -12,6 +12,8 @@ + + all @@ -26,14 +28,14 @@ - + - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyProjectNameOpenIddictModule.cs similarity index 90% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyProjectNameOpenIddictModule.cs index eb854d3bc1..28fa20b2d9 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/MyProjectNameOpenIddictModule.cs @@ -4,14 +4,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.DataProtection; -using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using MyCompanyName.MyProjectName.MultiTenancy; using StackExchange.Redis; using Microsoft.OpenApi.Models; -using Swashbuckle.AspNetCore.Swagger; using Volo.Abp; using Volo.Abp.Account; using Volo.Abp.Account.Web; @@ -34,10 +32,10 @@ using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Identity; using Volo.Abp.Identity.EntityFrameworkCore; -using Volo.Abp.IdentityServer.EntityFrameworkCore; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.HttpApi; @@ -47,13 +45,12 @@ using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.Swashbuckle; using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement.EntityFrameworkCore; -using Volo.Abp.Threading; using Volo.Abp.UI.Navigation.Urls; namespace MyCompanyName.MyProjectName; [DependsOn( - typeof(AbpAccountWebIdentityServerModule), + typeof(AbpAccountWebOpenIddictModule), typeof(AbpAccountApplicationModule), typeof(AbpAccountHttpApiModule), typeof(AbpAspNetCoreMvcUiMultiTenancyModule), @@ -66,7 +63,7 @@ namespace MyCompanyName.MyProjectName; typeof(AbpIdentityEntityFrameworkCoreModule), typeof(AbpIdentityApplicationModule), typeof(AbpIdentityHttpApiModule), - typeof(AbpIdentityServerEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementApplicationModule), @@ -85,8 +82,28 @@ namespace MyCompanyName.MyProjectName; typeof(AbpAspNetCoreSerilogModule), typeof(AbpSwashbuckleModule) )] -public class MyProjectNameIdentityServerModule : AbpModule +public class MyProjectNameOpenIddictModule : AbpModule { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(builder => + { + // https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption + // In production, it is recommended to use two RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. + builder.DisableAccessTokenEncryption(); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("MyProjectName"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + } + public override void ConfigureServices(ServiceConfigurationContext context) { var hostingEnvironment = context.Services.GetHostingEnvironment(); @@ -217,7 +234,6 @@ public class MyProjectNameIdentityServerModule : AbpModule } app.UseAbpRequestLocalization(); - app.UseIdentityServer(); app.UseAuthorization(); app.UseSwagger(); app.UseAbpSwaggerUI(options => diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs new file mode 100644 index 0000000000..2d599f2a34 --- /dev/null +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs @@ -0,0 +1,352 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using JetBrains.Annotations; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Localization; +using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace MyCompanyName.MyProjectName.OpenIddict; + +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IConfiguration _configuration; + private readonly IOpenIddictApplicationManager _applicationManager; + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; + + public OpenIddictDataSeedContributor( + IConfiguration configuration, + IOpenIddictApplicationManager applicationManager, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l) + { + _configuration = configuration; + _applicationManager = applicationManager; + _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _scopeManager.FindByNameAsync("MyProjectName") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor + { + Name = "MyProjectName", + DisplayName = "MyProjectName API", + Resources = + { + "MyProjectName" + } + }); + } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "MyProjectName" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); + + //Web Client + var webClientId = configurationSection["MyProjectName_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); + + /* MyProjectName_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + await CreateApplicationAsync( + name: webClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Web Application", + secret: null, + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{webClientRootUrl}signin-oidc", + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + name: consoleAndAngularClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Console Test / Angular Application", + secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken + }, + scopes: commonScopes, + redirectUri: webClientRootUrl, + postLogoutRedirectUri: webClientRootUrl + ); + } + + // Blazor Client + var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; + if (!blazorClientId.IsNullOrWhiteSpace()) + { + var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: blazorClientId, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: null, + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + }, + scopes: commonScopes, + redirectUri: $"{blazorRootUrl}/authentication/login-callback", + postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" + ); + } + + // Swagger Client + var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); + + await CreateApplicationAsync( + name: swaggerClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + grantTypes: new List + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + }, + scopes: commonScopes, + redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html" + ); + } + } + + private async Task CreateApplicationAsync( + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string secret, + List grantTypes, + List scopes, + string redirectUri = null, + string postLogoutRedirectUri = null, + List permissions = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + if (!string.IsNullOrEmpty(name) && await _applicationManager.FindByClientIdAsync(name) != null) + { + return; + //throw new BusinessException(L["TheClientIdentifierIsAlreadyTakenByAnotherApplication"]); + } + + var client = await _applicationManager.FindByClientIdAsync(name); + if (client == null) + { + var application = new OpenIddictApplicationDescriptor + { + ClientId = name, + Type = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new [] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All(grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); + } + } + + if (!redirectUri.IsNullOrWhiteSpace() || !postLogoutRedirectUri.IsNullOrWhiteSpace()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); + } + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + } + + var buildInScopes = new [] + { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (redirectUri != null) + { + if (!redirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + } + + if (postLogoutRedirectUri != null) + { + if (!postLogoutRedirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + await _applicationManager.CreateAsync(application); + } + } + +} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Pages/Index.cshtml similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Pages/Index.cshtml diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Pages/Index.cshtml.cs similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Pages/Index.cshtml.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Pages/Index.cshtml.cs diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Pages/_ViewImports.cshtml b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Pages/_ViewImports.cshtml similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Pages/_ViewImports.cshtml rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Pages/_ViewImports.cshtml diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Program.cs similarity index 94% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Program.cs index 89fa523a4d..5ca2be7d6a 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Program.cs @@ -32,7 +32,7 @@ public class Program builder.Host.AddAppSettingsSecretsJson() .UseAutofac() .UseSerilog(); - await builder.AddApplicationAsync(); + await builder.AddApplicationAsync(); var app = builder.Build(); await app.InitializeApplicationAsync(); await app.RunAsync(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Properties/launchSettings.json similarity index 89% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Properties/launchSettings.json index 96994edbe8..8417fad529 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Properties/launchSettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/Properties/launchSettings.json @@ -1,6 +1,6 @@ { "iisSettings": { - "windowsAuthentication": false, + "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "https://localhost:44301", @@ -15,7 +15,7 @@ "ASPNETCORE_ENVIRONMENT": "Development" } }, - "IdentityServerHost": { + "OpenIddictHost": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "https://localhost:44301", @@ -24,4 +24,4 @@ } } } -} \ No newline at end of file +} diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/abp.resourcemapping.js b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/abp.resourcemapping.js similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/abp.resourcemapping.js rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/abp.resourcemapping.js diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json similarity index 96% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json index c2dd8c9bc2..d0452799ca 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json @@ -15,8 +15,8 @@ "RequireHttpsMetadata": "false", "ApiName": "MyProjectName" }, - "IdentityServer": { - "Clients": { + "OpenIddict": { + "Applications": { "MyProjectName_Web": { "ClientId": "MyProjectName_Web", "RootUrl": "https://localhost:44302/" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/package.json similarity index 78% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/package.json index c5c6513e13..0996fb0840 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/package.json @@ -1,6 +1,6 @@ { "version": "1.0.0", - "name": "my-app-identityserver", + "name": "my-app-openiddict", "private": true, "dependencies": { "@abp/aspnetcore.mvc.ui.theme.basic": "^5.3.0-rc.1" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/tempkey.rsa similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/tempkey.rsa diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/yarn.lock similarity index 100% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/yarn.lock diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs index 874e5a9eb5..f6139d1eb8 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebHostModule.cs @@ -158,12 +158,11 @@ public class MyProjectNameWebHostModule : AbpModule options.ResponseType = OpenIdConnectResponseType.CodeIdToken; options.ClientId = configuration["AuthServer:ClientId"]; - options.ClientSecret = configuration["AuthServer:ClientSecret"]; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; - options.Scope.Add("role"); + options.Scope.Add("roles"); options.Scope.Add("email"); options.Scope.Add("phone"); options.Scope.Add("MyProjectName"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json index eb949080df..9aa64d47b7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/appsettings.json @@ -16,7 +16,6 @@ "AuthServer": { "Authority": "https://localhost:44301/", "RequireHttpsMetadata": "false", - "ClientId": "MyProjectName_Web", - "ClientSecret": "1q2w3e*" + "ClientId": "MyProjectName_Web" } } diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs index 5081d8be6c..8290b2df36 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs @@ -93,8 +93,6 @@ public class ClientDemoService : ITransientDependency } /* Shows how to use HttpClient to perform a request to the HTTP API. - * It obtains access token using IdentityServer's API. See its documentation: - * https://identityserver4.readthedocs.io/en/latest/quickstarts/2_resource_owner_passwords.html */ private async Task TestAllManuallyAsync() { From c3a94fc9f9eecda8f78a4c466d1ebccaefc6b73e Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 May 2022 13:26:05 +0800 Subject: [PATCH 55/89] Update `OpenIddictDataSeedContributor`. --- .../Data/OpenIddictDataSeedContributor.cs | 50 +------------------ .../Data/OpenIddictDataSeedContributor.cs | 50 +------------------ .../OpenIddictDataSeedContributor.cs | 1 - .../OpenIddictDataSeedContributor.cs | 1 - 4 files changed, 2 insertions(+), 100 deletions(-) diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs index a6d77e1755..6a70c47c28 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs @@ -72,32 +72,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var configurationSection = _configuration.GetSection("OpenIddict:Applications"); - //Web Client - var webClientId = configurationSection["MyProjectName_Web:ClientId"]; - if (!webClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); - - /* MyProjectName_Web client is only needed if you created a tiered - * solution. Otherwise, you can delete this client. */ - await CreateApplicationAsync( - name: webClientId, - type: OpenIddictConstants.ClientTypes.Public, - consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Web Application", - secret: null, - grantTypes: new List //Hybrid flow - { - OpenIddictConstants.GrantTypes.AuthorizationCode, - OpenIddictConstants.GrantTypes.Implicit - }, - scopes: commonScopes, - redirectUri: $"{webClientRootUrl}signin-oidc", - postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" - ); - } - - //Console Test / Angular Client + //Angular Client var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) { @@ -121,28 +96,6 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep ); } - // Blazor Client - var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; - if (!blazorClientId.IsNullOrWhiteSpace()) - { - var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); - - await CreateApplicationAsync( - name: blazorClientId, - type: OpenIddictConstants.ClientTypes.Public, - consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Blazor Application", - secret: null, - grantTypes: new List - { - OpenIddictConstants.GrantTypes.AuthorizationCode, - }, - scopes: commonScopes, - redirectUri: $"{blazorRootUrl}/authentication/login-callback", - postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" - ); - } - // Swagger Client var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; if (!swaggerClientId.IsNullOrWhiteSpace()) @@ -343,5 +296,4 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await _applicationManager.CreateAsync(application); } } - } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs index a6d77e1755..6a70c47c28 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs @@ -72,32 +72,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var configurationSection = _configuration.GetSection("OpenIddict:Applications"); - //Web Client - var webClientId = configurationSection["MyProjectName_Web:ClientId"]; - if (!webClientId.IsNullOrWhiteSpace()) - { - var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); - - /* MyProjectName_Web client is only needed if you created a tiered - * solution. Otherwise, you can delete this client. */ - await CreateApplicationAsync( - name: webClientId, - type: OpenIddictConstants.ClientTypes.Public, - consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Web Application", - secret: null, - grantTypes: new List //Hybrid flow - { - OpenIddictConstants.GrantTypes.AuthorizationCode, - OpenIddictConstants.GrantTypes.Implicit - }, - scopes: commonScopes, - redirectUri: $"{webClientRootUrl}signin-oidc", - postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" - ); - } - - //Console Test / Angular Client + //Angular Client var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) { @@ -121,28 +96,6 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep ); } - // Blazor Client - var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; - if (!blazorClientId.IsNullOrWhiteSpace()) - { - var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); - - await CreateApplicationAsync( - name: blazorClientId, - type: OpenIddictConstants.ClientTypes.Public, - consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Blazor Application", - secret: null, - grantTypes: new List - { - OpenIddictConstants.GrantTypes.AuthorizationCode, - }, - scopes: commonScopes, - redirectUri: $"{blazorRootUrl}/authentication/login-callback", - postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" - ); - } - // Swagger Client var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; if (!swaggerClientId.IsNullOrWhiteSpace()) @@ -343,5 +296,4 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await _applicationManager.CreateAsync(application); } } - } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index 621d45a77d..693f5a6def 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -348,5 +348,4 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await _applicationManager.CreateAsync(application); } } - } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs index 2d599f2a34..28e20347f7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs @@ -348,5 +348,4 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await _applicationManager.CreateAsync(application); } } - } From 82b02ab08b8f5d4846bc0eb3e712d1f0127069c1 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 May 2022 16:41:02 +0800 Subject: [PATCH 56/89] Refactor `OpenIddictDataSeedContributor` --- .../src/environments/environment.prod.ts | 1 - .../angular/src/environments/environment.ts | 1 - .../Data/OpenIddictDataSeedContributor.cs | 12 +++--- .../appsettings.json | 5 +-- .../Data/OpenIddictDataSeedContributor.cs | 12 +++--- .../appsettings.json | 5 +-- .../src/environments/environment.prod.ts | 1 - .../angular/src/environments/environment.ts | 1 - .../MyProjectNameBlazorModule.cs | 2 +- .../appsettings.json | 7 ++-- .../tempkey.rsa | 13 ------- .../OpenIddictDataSeedContributor.cs | 37 +++++++++++++++---- .../MyProjectNameHttpApiHostModule.cs | 1 - .../appsettings.json | 3 +- .../tempkey.rsa | 1 - .../MyProjectNameHttpApiHostModule.cs | 1 - .../appsettings.json | 3 +- .../tempkey.rsa | 1 - .../tempkey.rsa | 1 - .../MyProjectNameWebModule.cs | 1 + .../appsettings.json | 3 +- .../tempkey.rsa | 1 - .../appsettings.json | 3 +- .../src/environments/environment.prod.ts | 1 - .../dev-app/src/environments/environment.ts | 1 - .../MyProjectNameHttpApiHostModule.cs | 1 - .../OpenIddictDataSeedContributor.cs | 14 +++---- .../appsettings.json | 7 ++-- .../tempkey.rsa | 1 - 29 files changed, 64 insertions(+), 77 deletions(-) delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/tempkey.rsa delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa delete mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/tempkey.rsa delete mode 100644 templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/tempkey.rsa diff --git a/templates/app-nolayers/angular/src/environments/environment.prod.ts b/templates/app-nolayers/angular/src/environments/environment.prod.ts index 72f54fa857..e6cc007d52 100644 --- a/templates/app-nolayers/angular/src/environments/environment.prod.ts +++ b/templates/app-nolayers/angular/src/environments/environment.prod.ts @@ -13,7 +13,6 @@ export const environment = { issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', - dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/app-nolayers/angular/src/environments/environment.ts b/templates/app-nolayers/angular/src/environments/environment.ts index fcc4e89a07..04dc6e89f3 100644 --- a/templates/app-nolayers/angular/src/environments/environment.ts +++ b/templates/app-nolayers/angular/src/environments/environment.ts @@ -13,7 +13,6 @@ export const environment = { issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', - dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs index 6a70c47c28..c7e2925aa5 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs @@ -72,17 +72,17 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var configurationSection = _configuration.GetSection("OpenIddict:Applications"); - //Angular Client + //Console Test / Angular Client var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) { var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); await CreateApplicationAsync( name: consoleAndAngularClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Console Test / Angular Application", - secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, @@ -104,10 +104,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: swaggerClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Blazor Application", - secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + displayName: "Swagger Application", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json index 4963ccdc3b..44ecad963d 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/appsettings.json @@ -14,8 +14,7 @@ "AuthServer": { "Authority": "https://localhost:44305", "RequireHttpsMetadata": "false", - "SwaggerClientId": "MyProjectName_Swagger", - "SwaggerClientSecret": "1q2w3e*" + "SwaggerClientId": "MyProjectName_Swagger" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" @@ -24,12 +23,10 @@ "Applications": { "MyProjectName_App": { "ClientId": "MyProjectName_App", - "ClientSecret": "1q2w3e*", "RootUrl": "http://localhost:4200" }, "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", - "ClientSecret": "1q2w3e*", "RootUrl": "https://localhost:44305" } } diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs index 6a70c47c28..c7e2925aa5 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs @@ -72,17 +72,17 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var configurationSection = _configuration.GetSection("OpenIddict:Applications"); - //Angular Client + //Console Test / Angular Client var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) { var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); await CreateApplicationAsync( name: consoleAndAngularClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Console Test / Angular Application", - secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, @@ -104,10 +104,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: swaggerClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Blazor Application", - secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + displayName: "Swagger Application", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json index 1e71e6c510..42175b355e 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/appsettings.json @@ -14,8 +14,7 @@ "AuthServer": { "Authority": "https://localhost:44305", "RequireHttpsMetadata": "false", - "SwaggerClientId": "MyProjectName_Swagger", - "SwaggerClientSecret": "1q2w3e*" + "SwaggerClientId": "MyProjectName_Swagger" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" @@ -24,12 +23,10 @@ "Applications": { "MyProjectName_App": { "ClientId": "MyProjectName_App", - "ClientSecret": "1q2w3e*", "RootUrl": "http://localhost:4200" }, "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", - "ClientSecret": "1q2w3e*", "RootUrl": "https://localhost:44305" } } diff --git a/templates/app/angular/src/environments/environment.prod.ts b/templates/app/angular/src/environments/environment.prod.ts index 72f54fa857..e6cc007d52 100644 --- a/templates/app/angular/src/environments/environment.prod.ts +++ b/templates/app/angular/src/environments/environment.prod.ts @@ -13,7 +13,6 @@ export const environment = { issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', - dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/app/angular/src/environments/environment.ts b/templates/app/angular/src/environments/environment.ts index fcc4e89a07..04dc6e89f3 100644 --- a/templates/app/angular/src/environments/environment.ts +++ b/templates/app/angular/src/environments/environment.ts @@ -13,7 +13,6 @@ export const environment = { issuer: 'https://localhost:44305/', redirectUri: baseUrl, clientId: 'MyProjectName_App', - dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true, diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs index 6d6adeeb64..fef72d5efe 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs @@ -173,7 +173,7 @@ public class MyProjectNameBlazorModule : AbpModule options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; - options.Scope.Add("role"); + options.Scope.Add("roles"); options.Scope.Add("email"); options.Scope.Add("phone"); options.Scope.Add("MyProjectName"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json index b3c3ee52e0..609b76c5d5 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json @@ -6,15 +6,15 @@ "Applications": { "MyProjectName_Web": { "ClientId": "MyProjectName_Web", - "RootUrl": "https://localhost:44302/" + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44302" }, "MyProjectName_Blazor": { "ClientId": "MyProjectName_Blazor", - "RootUrl": "https://localhost:44307/" + "RootUrl": "https://localhost:44307" }, "MyProjectName_App": { "ClientId": "MyProjectName_App", - "ClientSecret": "1q2w3e*", "RootUrl": "http://localhost:4200" }, "MyProjectName_BlazorServerTiered": { @@ -24,7 +24,6 @@ }, "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", - "ClientSecret": "1q2w3e*", "RootUrl": "https://localhost:44305" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/tempkey.rsa deleted file mode 100644 index 494c2013e3..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/tempkey.rsa +++ /dev/null @@ -1,13 +0,0 @@ -{ - "KeyId": "f788zGVUZh9H-HbWL1S-Mg", - "Parameters": { - "D": "F19hbC5PLO872DszGiJnVoU55ee7XGXmNf0KEKndJ/uGBv5lWklXA0QF80h1ytWXde0jV5isQPB1t7mPhRQlDoDTkywLi1CeOgBPbxzHEfLjZZ5c4olfeX0IJX9BDqgUntY0H1a/+Om/eDu4OZUz3EIJFFZBgz46YZSyTT6ZDvAEdpC/o66sNJmxvJIp+8zVoVDSqBUzxmc+oEamXLg7r2jdymxJMxau1kQFxEGLOrJnNxGsEe8UrYA3qSsm8m/Xg4uOh7RYgnuEEt88+KTvRq+CAMWhN3YNLtOJ3NmXowwE7e1Ma+jih9+UVfxZn14P5+SOJbQ2bYV2sCV+2vBiCQ==", - "DP": "oPiGO/qdOQfFEAS9fMInQnsrNylIZVpDYEVoDJ6/jQfE/IpuwxGcmsaGvCob3SKxZiJRLCWpwJYo1hCh/JOSVGWMkVyELky56nbbkkV5ymKLSGZ4JoetdQs+GchnPdR+k2P9Ij1Kjk13ylubN3htzNhcBASJpOfSEv5pPVzGKX0=", - "DQ": "z6imxLABHkyftbfUUtpeOlPanEHgpuIjmUdp3T1Ju1jziE63UEhuj0GPAXOF17uYxixwYE8JhOJ7+TyIK9oZeI3zH2OzJqQh8f5PCQ/E+0ULXZDeNV/ShDLCTufu3Fis9Rt64uTp/H/l21oMQ79jc0ysa8DTz1ReJLRc5qjL41U=", - "Exponent": "AQAB", - "InverseQ": "ieZcvSt5XYukKJKhXpv5Dm/1RD7iH88cZnhLSTEVTMoOUHoYWmApY5pNLGahbfjA9bxnkBWDYex/i7wE9uNNY5CsA6ovUaQLVJDt3kHvR9W+9QtN8D6jjG2TuRbbOdEg4RqhfjUaDfDIgTJX2Wxc8U98FOvOyGw1HzwUPFZKecM=", - "Modulus": "vk4z1Bmtmbo+gxITcY+FIlXzcO2wTOGlOXK5GMYj/6PUMFt7lbqkc72AkPsrAo5/JE8LYLhWj7fzSKbjvtowHCz5m2t+FlUYmuiKpvvnJsTqvQrckNlbZ1nm071q5PhP3Dar/OksfBhPtAX+c3+NjDnM/w53ccJJNaBDO/s9JYoN7vH5n6ed1pMSK71hmg4MPsxChcnc1f1PpnG2mqyJ253+GEUbj/kRyeBSmCCr9aadov2ZzxIKVaFNagJEHOzanQmorSLpP25GfOHCuy27Zkef94V/qU9elzjbH4uIKslVGx5T6H99TYh0sUGu11NytYJa5WNAZWow95CzurC2vw==", - "P": "4GMCQy+XTNzR5TsgFcdAZv2K6TcQR13fHVvPoxQp/b32V5YUJOBFEUAtqociy5ro4+KzpXP5WPSk1ZtznGKuNZyLq8gTnhpB3rwd0sdo4zxKnQ5nu+n1UhlhWNxg5A9V5TaciUAyPrHWJfLoYTQWygNTgJELQH5zZXi2ihC2uiU=", - "Q": "2R36pamnLAJggkPJxiW5qH6HizZ+bkQVg0BBftMLzkAM8Y9CwTW75GRUzGEJFpMckkw0GZSYb1Uwl3DVUpkcQ8LZ91IPYdPpDlYUshhIxl184M55pnO14besKxJtMZ64zhHKVAR2pBMO0n6W4/1iBXkkQqyPViJxdfvXPJMBbhM=" - } -} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index 693f5a6def..125a029e1c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -87,10 +87,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep * solution. Otherwise, you can delete this client. */ await CreateApplicationAsync( name: webClientId, - type: OpenIddictConstants.ClientTypes.Public, + type: OpenIddictConstants.ClientTypes.Confidential, consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Web Application", - secret: null, + secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", grantTypes: new List //Hybrid flow { OpenIddictConstants.GrantTypes.AuthorizationCode, @@ -109,10 +109,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); await CreateApplicationAsync( name: consoleAndAngularClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Console Test / Angular Application", - secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, @@ -148,6 +148,29 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep ); } + // Blazor Server Tiered Client + var blazorServerTieredClientId = configurationSection["MyProjectName_BlazorServerTiered:ClientId"]; + if (!blazorServerTieredClientId.IsNullOrWhiteSpace()) + { + var blazorServerTieredRootUrl = configurationSection["MyProjectName_BlazorServerTiered:RootUrl"].EnsureEndsWith('/'); + + await CreateApplicationAsync( + name: blazorServerTieredClientId, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Server Application", + secret: configurationSection["MyProjectName_BlazorServerTiered:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{blazorServerTieredRootUrl}signin-oidc", + postLogoutRedirectUri: $"{blazorServerTieredRootUrl}signout-callback-oidc" + ); + } + // Swagger Client var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; if (!swaggerClientId.IsNullOrWhiteSpace()) @@ -156,10 +179,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: swaggerClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Blazor Application", - secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + displayName: "Swagger Application", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index d2dbacc14f..c649e666be 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -214,7 +214,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule var configuration = context.GetConfiguration(); options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); - options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); options.OAuthScopes("MyProjectName"); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json index 33a3d0140a..4b7a8f4029 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json @@ -11,8 +11,7 @@ "AuthServer": { "Authority": "https://localhost:44301", "RequireHttpsMetadata": "true", - "SwaggerClientId": "MyProjectName_Swagger", - "SwaggerClientSecret": "1q2w3e*" + "SwaggerClientId": "MyProjectName_Swagger" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa deleted file mode 100644 index ed0defa5a8..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/tempkey.rsa +++ /dev/null @@ -1 +0,0 @@ -{"KeyId":"600caa200caf5d805eba9f06ace9e236","Parameters":{"D":"KCNDHA96eimN+UqchSKocgYITGflaAIwxzCS5KqSTkYAFliPthQx7LySuLor4F1+uLvwnh3ZocyI3y43GZu+eVHD256sxdV8/UsQz1HC23RRFqcUiAZjze8K5VMVStrBOxaa/Ds1U9/bpuNE7jZdcgFIEHsdZtCACqwtlE4nlIs1/GLiokqjBOESgxJMy9WUeDbWcvoo+YdwgKf5jt6AZHOYSS+TokLL+Y7TEfGMXe3jZD9VtSMkBSM8wGB89zNGR0FZB9maCG/BCoRJqxdYRyeb4FFXJclQtK3DexyDVqlNZQaNKVHu0tVAnVNKKcd7Iex8gA+5DNqqucUA7C/F6Q==","DP":"fr9iaNb1W4YZ/NJ56+N3SCeDQYuKobq1qeaQWmHlQsOHKoHhNZJQZ5x0M9PQilou16AwVlNGCJncMwxsSUxXn6itG0LcBnvfMeo2v3xKcij1BtFR9qfXecwEn2nnhI3mpXtZxyCdP3NIYUp9qViLJUjGJqrbQk+OIAGRQd2rRe0=","DQ":"o1umLkDodtwvpCsDguQYSjd3iob+WHNmfe/9HyjADmUehP8b9SpUgcrb+QF301J8YmQMnYZKWW5rEwKOtwsWNswgXfMnXeWerlZmz0tj9y38YczS70liU0vETsRefhrRCaXHraMvneqYNNedhsrCNalWK+DNwcixi4L59vA8ofs=","Exponent":"AQAB","InverseQ":"btd1nwwxl/E3ryfDi2bN12TuVDvv7yoPvryIlLgu+FiLpe4vaA1omDLliQBcl7oeyA563HBUop4D5oE7si+jD64N8XgFz37dD3KqUokeQ4lrTSSOePT1K+nWIl30sqDd7YE4auz4CvSjm2wXmN31+CXW1hp3YWN2972yrUt+R5U=","Modulus":"uwMB6reAVtm/Cq0BRPZ0ozBq6g3wDh2kzqFKBf8I7u8d9p7i5ExLSrOWPupHwPr/IW1VUn2TKHrJ8OnyYhznKIRxqlxj0U3D2GXijz5kfFOoHK+mlfKaDMqweRoS0UzEz58kMlgwUoDraUj6dTHTPCVPo3TqA2ImRw50j6D+jobFrY5321EFvlirZViMPDAgB8Ca7wGCqNBcCxvIPYw1O6WZmcVmjG7umelD3XjcUIQlEbIyAmi/3gXAo7NdPmgOamla6bnSWsy429HfsNpXyCfPBzV3QS3ubpTekWPoPcOVZbWwVPYtFQbhRh8PmWATRx0cV6oePZNZGxGeJl8WYQ==","P":"wplelBfVmiOPmr6iUxtOgIzuvwSqvP6Rqmh8dhaGDiJjU8OqZ0tZhuh0G+xnMLPIHb2fMeg0dqZMJZ5iXaIi1QycYn/JKz1i4cUonJ6IIQeKKf67tvzn/BY0V0N8rJw8hVfzou+/5sRBCbiHtJ2KIN1YJQuWGFFfrZJOJzc95ss=","Q":"9gTGKoDiOdrY8kqIXJ2nMhoeNryAH4q3EUrROJ7simqc28oYlGx24Sco/wOoeB2xxrdcF5JYOlyJ7H2YY/huLvJISaw/wHLPskiKiYQ78tuNwW0ip+5ceB1dSToHcEe3sR30+OeTh0Z4ZKoqthKziFGIt3EhEgiGq1gjZuWB5gM="}} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 9e4f1a31cb..e994c60a67 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -259,7 +259,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule var configuration = context.ServiceProvider.GetRequiredService(); c.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); - c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); c.OAuthScopes("MyProjectName"); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json index c0918002d5..3fc189b8ae 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json @@ -11,8 +11,7 @@ "AuthServer": { "Authority": "https://localhost:44305", "RequireHttpsMetadata": "false", - "SwaggerClientId": "MyProjectName_Swagger", - "SwaggerClientSecret": "1q2w3e*" + "SwaggerClientId": "MyProjectName_Swagger" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa deleted file mode 100644 index f19e3e7dd8..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/tempkey.rsa +++ /dev/null @@ -1 +0,0 @@ -{"KeyId":"5eb863b25811a7099f9bc925c0fdf680","Parameters":{"D":"gqn7NAeMkug4twJJHFz/qPseDzQCx7R+6Maj649xrG4vPsMANV9mfR78Er2SuHUS0ZihM2MQEILI5Sf41Uuubv8swCNSE3Dw7GQrBIbTAJ7BZKbQMVgtGkMDtHrtri6d9cOi3EOTSJINICk9r80M49oBMOZihEKascfBSIUYVQvWLEMYfryEiDeFUPbobr10OxF5tZ1unvEKgZe190BdNKWQuFhJelcgsZumjEYNsOz5DHrK73WLhfTy01DmsTKx8i1XVnLtq6W89MqAhMZP9QO9Vj8lR0ANnmdOsY6hJfwUbXiI36t4V9rAZvXR5ESorjb4mnXzT6QPuOfy1fbdSQ==","DP":"ItYIpEqw6aDjDc/swDifUe0Dq6yl4yim3UyQ4B9NBPQR5M6b7D3vbCnvwql4zJK4s+0N4lRViBtkF+20Td1yc2v8S+THCYZCVxCf2e9Q7Ff/sKecJ9/JmdzHkztCfs0xb+4X3CPEQP+JIYtMGmwOLQgE5XgmUYKr0ahZDhYTCwE=","DQ":"v35mgxfyF/nwnWwWlR9cF3mg0v7SyPfKkwdxGaVnGH6G8nPWpPlO+zueflA5QDXEwGtk/1k3PAzI/OLUwJiKBubx/UMhsqt5+/bKTrFDNHxLANCvGNZggMZIzFZBYRucuXRZbiBe5qpCkKkniUct7w6jd/V1mnsESiJZ7btcxU0=","Exponent":"AQAB","InverseQ":"Vbg2a+wtaYvhTV8AzqJsVvaz0kfC4HFbmwEgA8+BAbS3GEoS3RHFSfB3DHndpnNihIg72DctDNLmV2GMMiTu18uyI+7AUaYNR836fByxptfyhPtSQfw4kINZ3V0GWKJGzzZ5NAOct4/FpRl8xliHetayCfUIuK9jwk0z9i6V6bA=","Modulus":"xlzmN1sBi2V1971MsPD5MTND9dAGncIzYqxa3H+9jx1mNDivY6JgKijUWm5a3D2Y1UPMB3kx6qUf3iH6pZHjq5bk938qRhxrPy9muW55U03HTiW4V5/ga0+OqXj5Tj4lz+29OiQHPErxLRgfXT+WBgrGb75ElzkHajKpJnPgzAZuarlUCwupJNQlav/crwOFrgkhGsnaOW13M8htiSLZozw5lxkbhYIei7YTTQZ3l6rVH1dPL8CvzRJJOTwbnU8k0sUmWiuOhrLzuinlr6uuOTocAVgbj943/witVFtN5B0yhetxEVgFCwxRDTOO1EKVHFtCiAyZBUOlK4gwZ+SbGQ==","P":"7dFfbAkZSdx/ieSMYJHoY1DKC4dLg80RObEEmuJ72MaVJLTtFuBPoRpYOrMUNuupIyPjZZsW8fHRlPRhKW7xFv+Q2aDudh1UaJzFZs3xYKoiXTU/j0B3TB3nrifVLMqsS+8kHOWOojwA4dMjI6GCYCpKmYVvMOE1cuJrQ9EYxoM=","Q":"1YdN8mLchLVoTEwD34Pi3T2U7EjjBDgDCzhjl7x5FBG73TyKMz1n7/KXkXcJ2rqIAsnLqCWpYUeRcWl+IQEQxFKoMwkvmQ33lRkOE0SBZ+FnUAMivRyxOD5qM9z4ccqx0ga4ZRgb1lR85f7VYtMSfIosOuSFxWAbV1e29utxhTM="}} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa deleted file mode 100644 index f3b32de233..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa +++ /dev/null @@ -1 +0,0 @@ -{"KeyId":"ac0d2edf3c04d13cd95cc41b9b33ab03","Parameters":{"D":"FFymEWbX3XBT5YnTngOKwtz3XKsyaQbyDvvw9jbmkdvLKUmrb1hkmylqVYwU/3G1u79rrD8AZXJDoYVLegyZymK/iNeePMLI4i5vScF7PdQXn/g6CvQ8j3J60YYyfDWuxjBH8nCEUIfQIv14BpcH6CWi1BVZUbnbWcpe2ji8D5I3FHOZpvksQztst5eE836ODdN9jgk35kgrdUQ14MEFHA6m6fAzvFI1csFxD3Kwej4rI8RYZ0WYLkndz9ID88+v9VxqI8+wN6wR6tIOR510uT1FI5wONBVBUzgeZ6cCEpg0jC9tgqcP03gMDpmE7vKp34ExxH/iOWyhQ0gAxHOVlQ==","DP":"qSQfNZvEkepgY12d+uwTbRoOp+0g1CBiMU9kqyoIB56hAUnzENSCDzunjLRrvDLFPgXiUcoccskyVRnKKOGPOqPE6VjgzBrdLgA/hBf8hPg0GnTVoPyLxR9G6GsGUKsAYVn8G7cnK5wXzK4jCjsflkfxCzFfdASJ/+sa5QPWZMM=","DQ":"u+56T1+rhMvlurid9kBS2Ypfm4vOiNAXLD9kGz2wx8Ob0yYlWo55kn11qPs6Ej9bnQIY3N+TY2tXMamfhAhntoHaKrFjOpCmlHZ0GAeQOJVuWSlFvu/NBoxfjZzcUCNua22oJjy++wSdkkLLGEqau62byaQoSSqUxUzwL36RexM=","Exponent":"AQAB","InverseQ":"E+uq9g6D5LjUk+M7gtt0srnT8duwu8P83AgFqjtGOnSCy71omSboxb4zC9bGq/WaEFauFBwqxbkXwFyXuYNfIelfmSERulU9jgf0+KH6QmFdtjrJ5UO7VArqET1WUquwiDvOyO8udCxi8RRAiM5G3dTzIs5JTalGhlKEZSAgPtQ=","Modulus":"rgHACxzqvuE72RF/NdDTLsIEy3F/n6P4lkgrER60FU8uRNwSmAMRxvxYOaE3Ot/krRYcw2+MP8ewR1VBXywXVT1zuACA3SacMHJYmZQ2UkuwsD9bmpjvqoMhR/hjsI74jTzKpclHtEu7D7WYDZaIPAEIs/8+5H/z1mXVfgACaeaQt3C0OhwXSOPPDP71VKGfoFucXYED1keZ0PKxYAlhiHOe7cnSlfJseujwD2Rhyq8mUhe6aEMTYBjuruWgpfvnSOARAqu5vwzK35KpAirHwa1DJSZyanNMFdlLkVNKWUKEqd6PwRneiHacmaaDF6oQQstuSbf9cuJeSMbKh7WVQQ==","P":"0CJDit2NHk0Z1bN5ZVIYZRUYbrAI2bEOafAKqfffcA/Os7yXsY14Ye4pSpDxfdZGcPGRL04HPkJsogFtyI7k4ujrvsC66I5cg45+BhBMM0zyLJ7LZkD2HGwX2+a/xrXhhIIOnGWWy2zzW3dkayRhi1bR9krfTA5uBw1LX9qZ3Yc=","Q":"1gZITAaB+r0+PgOfyDCeVzSnTyQuKSkgbUkIgQP9jQZa6edrbAXogdJipxmUTrW7JaxifG1z9ubK+TOqhjZHqT4gd8U8Bh7jCBizZNVe60pez1OtNGpEOW2N+ZrXBSMNcV8PFaMg/B+fcaX+i7NWpTqmztR/V0DGXmD+XosuaPc="}} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs index 3dbf6227b8..493abc7eb5 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs @@ -148,6 +148,7 @@ public class MyProjectNameWebModule : AbpModule options.ResponseType = OpenIdConnectResponseType.CodeIdToken; options.ClientId = configuration["AuthServer:ClientId"]; + options.ClientSecret = configuration["AuthServer:ClientSecret"]; options.UsePkce = true; options.SaveTokens = true; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json index 0d2d376016..c89186b748 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/appsettings.json @@ -13,7 +13,8 @@ "AuthServer": { "Authority": "https://localhost:44301", "RequireHttpsMetadata": "true", - "ClientId": "MyProjectName_Web" + "ClientId": "MyProjectName_Web", + "ClientSecret": "1q2w3e*" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/tempkey.rsa b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/tempkey.rsa deleted file mode 100644 index f3b32de233..0000000000 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/tempkey.rsa +++ /dev/null @@ -1 +0,0 @@ -{"KeyId":"ac0d2edf3c04d13cd95cc41b9b33ab03","Parameters":{"D":"FFymEWbX3XBT5YnTngOKwtz3XKsyaQbyDvvw9jbmkdvLKUmrb1hkmylqVYwU/3G1u79rrD8AZXJDoYVLegyZymK/iNeePMLI4i5vScF7PdQXn/g6CvQ8j3J60YYyfDWuxjBH8nCEUIfQIv14BpcH6CWi1BVZUbnbWcpe2ji8D5I3FHOZpvksQztst5eE836ODdN9jgk35kgrdUQ14MEFHA6m6fAzvFI1csFxD3Kwej4rI8RYZ0WYLkndz9ID88+v9VxqI8+wN6wR6tIOR510uT1FI5wONBVBUzgeZ6cCEpg0jC9tgqcP03gMDpmE7vKp34ExxH/iOWyhQ0gAxHOVlQ==","DP":"qSQfNZvEkepgY12d+uwTbRoOp+0g1CBiMU9kqyoIB56hAUnzENSCDzunjLRrvDLFPgXiUcoccskyVRnKKOGPOqPE6VjgzBrdLgA/hBf8hPg0GnTVoPyLxR9G6GsGUKsAYVn8G7cnK5wXzK4jCjsflkfxCzFfdASJ/+sa5QPWZMM=","DQ":"u+56T1+rhMvlurid9kBS2Ypfm4vOiNAXLD9kGz2wx8Ob0yYlWo55kn11qPs6Ej9bnQIY3N+TY2tXMamfhAhntoHaKrFjOpCmlHZ0GAeQOJVuWSlFvu/NBoxfjZzcUCNua22oJjy++wSdkkLLGEqau62byaQoSSqUxUzwL36RexM=","Exponent":"AQAB","InverseQ":"E+uq9g6D5LjUk+M7gtt0srnT8duwu8P83AgFqjtGOnSCy71omSboxb4zC9bGq/WaEFauFBwqxbkXwFyXuYNfIelfmSERulU9jgf0+KH6QmFdtjrJ5UO7VArqET1WUquwiDvOyO8udCxi8RRAiM5G3dTzIs5JTalGhlKEZSAgPtQ=","Modulus":"rgHACxzqvuE72RF/NdDTLsIEy3F/n6P4lkgrER60FU8uRNwSmAMRxvxYOaE3Ot/krRYcw2+MP8ewR1VBXywXVT1zuACA3SacMHJYmZQ2UkuwsD9bmpjvqoMhR/hjsI74jTzKpclHtEu7D7WYDZaIPAEIs/8+5H/z1mXVfgACaeaQt3C0OhwXSOPPDP71VKGfoFucXYED1keZ0PKxYAlhiHOe7cnSlfJseujwD2Rhyq8mUhe6aEMTYBjuruWgpfvnSOARAqu5vwzK35KpAirHwa1DJSZyanNMFdlLkVNKWUKEqd6PwRneiHacmaaDF6oQQstuSbf9cuJeSMbKh7WVQQ==","P":"0CJDit2NHk0Z1bN5ZVIYZRUYbrAI2bEOafAKqfffcA/Os7yXsY14Ye4pSpDxfdZGcPGRL04HPkJsogFtyI7k4ujrvsC66I5cg45+BhBMM0zyLJ7LZkD2HGwX2+a/xrXhhIIOnGWWy2zzW3dkayRhi1bR9krfTA5uBw1LX9qZ3Yc=","Q":"1gZITAaB+r0+PgOfyDCeVzSnTyQuKSkgbUkIgQP9jQZa6edrbAXogdJipxmUTrW7JaxifG1z9ubK+TOqhjZHqT4gd8U8Bh7jCBizZNVe60pez1OtNGpEOW2N+ZrXBSMNcV8PFaMg/B+fcaX+i7NWpTqmztR/V0DGXmD+XosuaPc="}} \ No newline at end of file diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json index 9214292fa9..2f15714af3 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -8,11 +8,10 @@ "Default": { "GrantType": "password", "ClientId": "MyProjectName_App", - "ClientSecret": "1q2w3e*", "UserName": "admin", "UserPassword": "1q2w3E*", "Authority": "https://localhost:44301", "Scope": "MyProjectName" } } -} \ No newline at end of file +} diff --git a/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts b/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts index 9b2631c7f1..7706947e07 100644 --- a/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts +++ b/templates/module/angular/projects/dev-app/src/environments/environment.prod.ts @@ -13,7 +13,6 @@ export const environment = { issuer: 'https://localhost:44301/', redirectUri: baseUrl, clientId: 'MyProjectName_App', - dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/module/angular/projects/dev-app/src/environments/environment.ts b/templates/module/angular/projects/dev-app/src/environments/environment.ts index 14b5fd33b9..ab069ea43c 100644 --- a/templates/module/angular/projects/dev-app/src/environments/environment.ts +++ b/templates/module/angular/projects/dev-app/src/environments/environment.ts @@ -13,7 +13,6 @@ export const environment = { issuer: 'https://localhost:44301/', redirectUri: baseUrl, clientId: 'MyProjectName_App', - dummyClientSecret: '1q2w3e*', responseType: 'code', scope: 'offline_access MyProjectName', requireHttps: true diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index e154c1a877..17b0cc8a88 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -189,7 +189,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule var configuration = context.GetConfiguration(); options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); - options.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); options.OAuthScopes("MyProjectName"); }); app.UseAuditing(); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs index 28e20347f7..057cc82167 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/OpenIddict/OpenIddictDataSeedContributor.cs @@ -87,10 +87,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep * solution. Otherwise, you can delete this client. */ await CreateApplicationAsync( name: webClientId, - type: OpenIddictConstants.ClientTypes.Public, + type: OpenIddictConstants.ClientTypes.Confidential, consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Web Application", - secret: null, + secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", grantTypes: new List //Hybrid flow { OpenIddictConstants.GrantTypes.AuthorizationCode, @@ -109,10 +109,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); await CreateApplicationAsync( name: consoleAndAngularClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, displayName: "Console Test / Angular Application", - secret: configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, @@ -156,10 +156,10 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep await CreateApplicationAsync( name: swaggerClientId, - type: OpenIddictConstants.ClientTypes.Confidential, + type: OpenIddictConstants.ClientTypes.Public, consentType: OpenIddictConstants.ConsentTypes.Implicit, - displayName: "Blazor Application", - secret: configurationSection["MyProjectName_Swagger:ClientSecret"], + displayName: "Swagger Application", + secret: null, grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json index d0452799ca..70b1fa6216 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/appsettings.json @@ -19,20 +19,19 @@ "Applications": { "MyProjectName_Web": { "ClientId": "MyProjectName_Web", - "RootUrl": "https://localhost:44302/" + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44302" }, "MyProjectName_Blazor": { "ClientId": "MyProjectName_Blazor", - "RootUrl": "https://localhost:44307/" + "RootUrl": "https://localhost:44307" }, "MyProjectName_App": { "ClientId": "MyProjectName_App", - "ClientSecret": "1q2w3e*", "RootUrl": "http://localhost:4200" }, "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", - "ClientSecret": "1q2w3e*", "RootUrl": "https://localhost:44300" } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/tempkey.rsa b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/tempkey.rsa deleted file mode 100644 index aa07a3b6a0..0000000000 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.OpenIddict/tempkey.rsa +++ /dev/null @@ -1 +0,0 @@ -{"KeyId":"0590816638b0f87bd230e19c32f7cec9","Parameters":{"D":"yIGe39uGuy/OUB5AurrPjG+bjZ9V+bt7m/yJjOd/1jtzq4rcxc8iz7ZLgXVkSyzjgbg6m1x/xMFoUGdwYHdauvcuM2ATuP4IMxJ4R3L0s5Xk6dqYaCyN+3LJ/1H6YlBz6e5NdljVwybjHJGxuJRSE1JhsoHx8f3S3ITvVVLKxknXyWcjIdtYo+x5qEnHyQd7/I0M2q7JkRP8e2pPfQsCNbUYmjWmv/Kr3hI0Jyn2x8QpcoOBwe0gX3tq0V771x6A+zqQYMaU8zltdvzjHBCeqkBJBgYTh/jKBcWDfcmk2yxHg000sCQ5lSMTS5gt5kYsv482S+TrsSu9pCuQ2Nw6BQ==","DP":"iLJNtCSxG77N6xWGbjaJCr99evuPs6SOtUSx/RR7zHQKITSuTq127kpESoaK9FbZyQMSGqj20FX72OdUqlJO/aSaUZA9yBKhpv2+hHpc3wsBaSbv+DadcWpe3c6MnadlV/WhRMWqGRNOr5iAroCbuDR3xR3isIEqZxnf86xla88=","DQ":"jkOQUtr0PSAtRexVQpu4bTVgJP2pfNK90o3NzG7rFscWJb94uBZC22clCUlmRJ+fFTkL4iO7rD7Uz0AYKLOtrw+WOvpEv4MBg7x/sWWblbbJr7alt7XwWoi2CT0R+pBS7VuQE+XhTUxFM+SQDWDMIpdGQ4/MBk9OXLZL99kipLc=","Exponent":"AQAB","InverseQ":"VSPcFjYbRq1lLOV8LfZnF2wdomOMH4uX2Va2b1Z0MCr+gDBx28EJNpUl2EGLY58ejA7dS0uapx0TyDehEM3ShS4cHFMnf8OoUB52EEgsF9msIDX5xvqJ+Bkt9mYiY7CWbXFCI4PZT94j/XdepO6JSr1/P6ZH3ncRRH2IJ6pPjDo=","Modulus":"z1wM2it4NloyS0MO9oZo/SP5N+BwsiP/yay3MsFJXz2/GBUznjTdtdwZnFga27VCmuOjeRYjWjtESlh/M6eTY8ztPOIr1ci7zVpYZ48Iy+9HE9poVy5ATdLuS19nivUANSOdmHB7X1oKwGHJRW43xUwAx3qkpmLnSE5J8Zpemyyto9tkvHqZhOAfcP/Gw7KszOvKHS1FEmaE9JFrqFtD5ODglAwF14uTfa6I6Wy0ws49LMm7ul6YZ7Ey1Y9kQ50TuJ+Z7BK/OkjOnTIuM0JsqwSMZ99Nq5po3ERo0iBxAZaYvO4SRjRxwL/tr7KLBtCp/4cEFRXRYz5k/hzGGfbDBQ==","P":"1ntEkTjBbqhZDYw1femyxVfV2RZq8fwUYkFwunUtuLgnZ420U/1ctgl9vX5oBqFdGp+OO5q7+5eQWSis2LBTWneGyF74W+/OPi472CrQFhzL7F1vwZL55uHnCCEpApFvC+PWwTCs4KvariSXbYzy4gZDfUq9x3QU6eHgZXkVhR8=","Q":"93/Z4QwtsdbEO5F4M5l10q9g43M12+qgDAoWUZEM7huxHxZvipBRxuOeEEkQaWZ02cL3/vbmOU35Vz4FKBKw1B2HecZwUUZO6p01FJDWDyulAl+70IlhwlDpyNqSJTcWz5kDszHoqHZDBSSKPL7cMH1tRf02AYgBqIRUf5pob1s="}} \ No newline at end of file From b8b8431124bcbf55d0ddafab66eaf9c2b91cbdb6 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 19 May 2022 17:52:19 +0800 Subject: [PATCH 57/89] Resolve `Conflicting method/path` problem. --- .../AbpFormValueRequiredAttribute.cs | 39 ------------------- .../AbpOpenIddictAspNetCoreModule.cs | 4 +- .../AbpOpenIdDictControllerBase.cs | 14 +++++++ .../Controllers/AuthorizeController.cs | 23 ++++++----- .../Controllers/LogoutController.cs | 28 +++++-------- .../OpenIddict/Controllers/TokenController.cs | 1 + .../Controllers/UserInfoController.cs | 1 + .../Views/Authorize/Authorize.cshtml | 6 +-- .../Abp/OpenIddict/Views/Logout/Logout.cshtml | 4 +- .../Localization/OpenIddict/en.json | 2 + .../Localization/OpenIddict/tr.json | 2 + .../Localization/OpenIddict/zh-Hans.json | 2 + .../Localization/OpenIddict/zh-Hant.json | 2 + .../MyProjectNameHttpApiHostModule.cs | 1 - 14 files changed, 51 insertions(+), 78 deletions(-) delete mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpFormValueRequiredAttribute.cs diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpFormValueRequiredAttribute.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpFormValueRequiredAttribute.cs deleted file mode 100644 index 1000f6f25c..0000000000 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpFormValueRequiredAttribute.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using Microsoft.AspNetCore.Mvc.Abstractions; -using Microsoft.AspNetCore.Mvc.ActionConstraints; -using Microsoft.AspNetCore.Routing; - -namespace Volo.Abp.OpenIddict; - -public class AbpFormValueRequiredAttribute : ActionMethodSelectorAttribute -{ - private readonly string _name; - - public AbpFormValueRequiredAttribute(string name) - { - _name = name; - } - - public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action) - { - if (string.Equals(routeContext.HttpContext.Request.Method, "GET", StringComparison.OrdinalIgnoreCase) || - string.Equals(routeContext.HttpContext.Request.Method, "HEAD", StringComparison.OrdinalIgnoreCase) || - string.Equals(routeContext.HttpContext.Request.Method, "DELETE", StringComparison.OrdinalIgnoreCase) || - string.Equals(routeContext.HttpContext.Request.Method, "TRACE", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - - if (string.IsNullOrEmpty(routeContext.HttpContext.Request.ContentType)) - { - return false; - } - - if (!routeContext.HttpContext.Request.ContentType.StartsWith("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - - return !string.IsNullOrEmpty(routeContext.HttpContext.Request.Form[_name]); - } -} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs index 77971ff5f6..f3b0495c2e 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs @@ -53,13 +53,13 @@ public class AbpOpenIddictAspNetCoreModule : AbpModule .AddServer(builder => { builder - .SetAuthorizationEndpointUris("/connect/authorize") + .SetAuthorizationEndpointUris("/connect/authorize", "/connect/authorize/callback") // /.well-known/oauth-authorization-server // /.well-known/openid-configuration //.SetConfigurationEndpointUris() // /.well-known/jwks //.SetCryptographyEndpointUris() - .SetDeviceEndpointUris("/connect/device") + .SetDeviceEndpointUris("/device") .SetIntrospectionEndpointUris("/connect/introspect") .SetLogoutEndpointUris("/connect/logout") .SetRevocationEndpointUris("/connect/revocat") diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs index 68e0418ec1..ff7edb3e52 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs @@ -59,4 +59,18 @@ public abstract class AbpOpenIdDictControllerBase : AbpController { await OpenIddictClaimDestinationsManager.SetAsync(principal); } + + protected virtual async Task HasFormValueAsync(string name) + { + if (Request.HasFormContentType) + { + var form = await Request.ReadFormAsync(); + if (!string.IsNullOrEmpty(form[name])) + { + return true; + } + } + + return false; + } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs index cf06c05933..ec764ab242 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; using Microsoft.Extensions.Primitives; using OpenIddict.Abstractions; using OpenIddict.Server.AspNetCore; @@ -16,6 +15,7 @@ using Volo.Abp.OpenIddict.ViewModels.Authorization; namespace Volo.Abp.OpenIddict.Controllers; [Route("connect/authorize")] +[ApiExplorerSettings(IgnoreApi = true)] public class AuthorizeController : AbpOpenIdDictControllerBase { [HttpGet, HttpPost] @@ -159,9 +159,17 @@ public class AuthorizeController : AbpOpenIdDictControllerBase } [HttpPost] - [Authorize, AbpFormValueRequired("submit.Accept")] - public virtual async Task HandleAcceptConsentAsync() + [Authorize] + [Route("callback")] + public virtual async Task HandleCallbackAsync() { + if (await HasFormValueAsync("deny")) + { + // Notify OpenIddict that the authorization grant has been denied by the resource owner + // to redirect the user agent to the client application using the appropriate response_mode. + return Forbid(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); + } + var request = await GetOpenIddictServerRequestAsync(HttpContext); // Retrieve the profile of the logged in user. @@ -224,13 +232,4 @@ public class AuthorizeController : AbpOpenIdDictControllerBase // Returning a SignInResult will ask OpenIddict to issue the appropriate access/identity tokens. return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); } - - [Authorize, AbpFormValueRequired("submit.Deny")] - [HttpPost] - public virtual Task HandleDenyConsentAsync() - { - // Notify OpenIddict that the authorization grant has been denied by the resource owner - // to redirect the user agent to the client application using the appropriate response_mode. - return Task.FromResult(Forbid(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme)); - } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/LogoutController.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/LogoutController.cs index 158fe9896d..404fd0da14 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/LogoutController.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/LogoutController.cs @@ -1,12 +1,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using OpenIddict.Server.AspNetCore; namespace Volo.Abp.OpenIddict.Controllers; [Route("connect/logout")] +[ApiExplorerSettings(IgnoreApi = true)] public class LogoutController : AbpOpenIdDictControllerBase { [HttpGet] @@ -16,13 +16,15 @@ public class LogoutController : AbpOpenIdDictControllerBase } [HttpPost] - [AbpFormValueRequired("submit.Accept")] - public virtual async Task HandleAcceptAsync() + public virtual async Task PostAsync() { - // Ask ASP.NET Core Identity to delete the local and external cookies created - // when the user agent is redirected from the external identity provider - // after a successful authentication flow (e.g Google or Facebook). - await SignInManager.SignOutAsync(); + if (await HasFormValueAsync("accept")) + { + // Ask ASP.NET Core Identity to delete the local and external cookies created + // when the user agent is redirected from the external identity provider + // after a successful authentication flow (e.g Google or Facebook). + await SignInManager.SignOutAsync(); + } // Returning a SignOutResult will ask OpenIddict to redirect the user agent // to the post_logout_redirect_uri specified by the client application or to @@ -31,16 +33,4 @@ public class LogoutController : AbpOpenIdDictControllerBase authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, properties: new AuthenticationProperties {RedirectUri = "/"}); } - - [HttpPost] - [AbpFormValueRequired("submit.Deny")] - public virtual Task HandleDenyConsentAsync() - { - // Returning a SignOutResult will ask OpenIddict to redirect the user agent - // to the post_logout_redirect_uri specified by the client application or to - // the RedirectUri specified in the authentication properties if none was set. - return Task.FromResult(SignOut( - authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, - properties: new AuthenticationProperties {RedirectUri = "/"})); - } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.cs index 4ed6927fd4..8c5ab98872 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.cs @@ -9,6 +9,7 @@ using Volo.Abp.OpenIddict.ExtensionGrantTypes; namespace Volo.Abp.OpenIddict.Controllers; [Route("connect/token")] +[ApiExplorerSettings(IgnoreApi = true)] public partial class TokenController : AbpOpenIdDictControllerBase { [HttpGet, HttpPost, Produces("application/json")] diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs index 8d1c48760b..62103c1b2b 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/UserInfoController.cs @@ -12,6 +12,7 @@ namespace Volo.Abp.OpenIddict.Controllers; [Route("connect/userinfo")] [Authorize(AuthenticationSchemes = OpenIddictServerAspNetCoreDefaults.AuthenticationScheme)] +[ApiExplorerSettings(IgnoreApi = true)] public class UserInfoController : AbpOpenIdDictControllerBase { [HttpGet] diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Authorize/Authorize.cshtml b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Authorize/Authorize.cshtml index 91aecd60a2..421f92858b 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Authorize/Authorize.cshtml +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Authorize/Authorize.cshtml @@ -9,7 +9,7 @@

@string.Format(L["DoYouWantToGrantAccessToYourData"].Value, Model.ApplicationName)

@L["ScopesRequested"]: @Model.Scope

-
+ @Html.AntiForgeryToken() @* Flow the request parameters so they can be received by the Accept/Reject actions: *@ @foreach (var parameter in Context.Request.HasFormContentType ? (IEnumerable>) Context.Request.Form : Context.Request.Query) @@ -17,7 +17,7 @@ } - - + + diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Logout/Logout.cshtml b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Logout/Logout.cshtml index 8ab7af1a57..6838e92ad5 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Logout/Logout.cshtml +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Views/Logout/Logout.cshtml @@ -16,7 +16,7 @@ } - - + + diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/en.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/en.json index 69dfa3ed71..8bd3a92007 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/en.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/en.json @@ -9,6 +9,8 @@ "Authorization": "Authorization", "DoYouWantToGrantAccessToYourData": "Do you want to grant {0} access to your data?", "ScopesRequested": "Scopes requested", + "Accept": "Accept", + "Deny": "Deny", "LogOut": "Log out", "AreYouSureYouWantToSignOut": "Are you sure you want to sign out?" } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/tr.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/tr.json index d327c04cd1..39e525e27e 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/tr.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/tr.json @@ -9,6 +9,8 @@ "Authorization": "Yetki", "DoYouWantToGrantAccessToYourData": "Do you want to grant {0} access to your data?", "ScopesRequested": "İstenen kapsamlar", + "Accept": "Kabul etmek", + "Deny": "Reddetmek", "LogOut": "Çıkış Yap", "AreYouSureYouWantToSignOut": "Çıkış yapmak istediğinden emin misin?" } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json index 662702c68d..3c6fd502b3 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hans.json @@ -9,6 +9,8 @@ "Authorization": "授权", "DoYouWantToGrantAccessToYourData": "是否要授予 {0} 访问你的数据的权限?", "ScopesRequested": "要求的Scope", + "Accept": "同意", + "Deny": "拒绝", "LogOut": "注销", "AreYouSureYouWantToSignOut": "你确定要退出吗?" } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hant.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hant.json index e907355048..5d22654a76 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hant.json +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/OpenIddict/Localization/OpenIddict/zh-Hant.json @@ -10,6 +10,8 @@ "Authorization": "授權", "DoYouWantToGrantAccessToYourData": "是否要授予 {0} 訪問你的數據的權限?", "ScopesRequested": "要求的Scope", + "Accept": "接受", + "Deny": "拒絕", "LogOut": "註銷", "AreYouSureYouWantToSignOut": "你確定要退出嗎?" } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index e994c60a67..fc8211ee43 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -168,7 +168,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule options.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProjectName API", Version = "v1" }); options.DocInclusionPredicate((docName, description) => true); options.CustomSchemaIds(type => type.FullName); - options.ResolveConflictingActions(x => x.First()); }); } From b9f6b095f7dbaec2d3a112add1d09cb2968727b1 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 19 May 2022 19:35:29 +0300 Subject: [PATCH 58/89] Add docs for AbpLoadingDirective --- docs/en/UI/Angular/Loading-Directive.md | 44 ++++++++++++++++++++++ docs/en/UI/Angular/images/abp-loading.png | Bin 0 -> 55307 bytes docs/en/docs-nav.json | 4 ++ 3 files changed, 48 insertions(+) create mode 100644 docs/en/UI/Angular/Loading-Directive.md create mode 100644 docs/en/UI/Angular/images/abp-loading.png diff --git a/docs/en/UI/Angular/Loading-Directive.md b/docs/en/UI/Angular/Loading-Directive.md new file mode 100644 index 0000000000..9ac491289d --- /dev/null +++ b/docs/en/UI/Angular/Loading-Directive.md @@ -0,0 +1,44 @@ +# Loading Directive + + +You may want to block a part of UI and show a spinner for a while; the `LoadingDirective` directive is making this for you. `LoadingDirective` has been exposed by the `@abp/ng.theme.shared` package. + + +## Getting Started + +In order to use the `LoadingDirective` in an HTML template, the **`ThemeSharedModule`** should be imported into your module like this: + +```js +// ... +import { ThemeSharedModule } from '@abp/ng.theme.shared'; + +@NgModule({ + //... + imports: [..., ThemeSharedModule], +}) +export class MyFeatureModule {} +``` + + +## Usage + +The `LoadingDirective` is easy to use. The directive's selector is **`abpLoading`**. By adding the `abpLoading` attribute to an HTML element , you can activate the `LoadingDirectiveective` for the HTML element when value is true. + +See an example usage: + +```html +
+ Lorem ipsum dolor sit, amet consectetur adipisicing elit. Laboriosam commodi quae aspernatur, + corporis velit et suscipit id consequuntur amet minima expedita cum reiciendis dolorum + cupiditate? Voluptas eaque voluptatum odio deleniti quo vel illum nemo accusamus nulla ratione + impedit dolorum expedita necessitatibus fugiat ullam beatae, optio eum cupiditate ducimus + architecto. +
+``` + + +The `abpLoading` attribute has been added to the `
` element that containing very long text inside to activate the `LoadingDirective`. + +See the result: + +![Loading directive result](./images/abp-loading.png) \ No newline at end of file diff --git a/docs/en/UI/Angular/images/abp-loading.png b/docs/en/UI/Angular/images/abp-loading.png new file mode 100644 index 0000000000000000000000000000000000000000..50073f6d6393e8d00416fc9439dacf4eb2f186e5 GIT binary patch literal 55307 zcmeFYS5(ts_ce$Wm103@p@<+wnvvdBl-@yl5ke0|0-*;~6hWFw@4c6R)KEns^j-o9 zMF=$!LJK7bOz{7{^R1crZsu+-hP47oo)z*dXYaH3Ip+!2(Nd)f`Ud><%J#v z1yv&XdCRq{^%e5#>u*#{JSiyX zAD%xhsOoWTQBa_=R9`$Z@U{GN68wd&$B*6DAJo#`pdi#hJMRpF1yomt{;K0`)l?On zmJ!Loxc+h5dq?%-exbW9#Ww~DEXn_8NV*4g9qg$ngKN^|=8b0*@;_nTBL44Q_pJdA zKU}%`1nnqn`s3nNNsRLy!Kb$wY=>qxK|DQiUNTExR|L5E1?>vP_{qGlixe|l77TEvy zi%+j7Lw+E>nA84mmn)T${{Pkg^UC~x{c5m62}^G1tw8OG_EMy)%~`HH~RL!)AY0`{3ES?SL=OL`weAZt{Q^unrL=fU9Xpe41 zwA5tp+@aAH8vSeypr9~rGd>~VE=dQ!`SQpnwYLr^9XwyD>E+52JJorug_jmr*1J((Oh6at78uNr)> z+G+$8f?BC5q#Eth$c%CefE);#TnwadG~z>h_~8O(h>AZxHZ1CTEh_j-HZea)FCu9OrM_;{nyu~P(Xb7vL|G`g2F+1=Ug zZu3a-sKU-t0;?`>{~Y4y_xk_Ucgy!IC#Akq_|JC_Y$2WxlTW`%66S43WD>MU%?|%M zD=K^PqnRd-s)FfqCFGb}Q=2U-9X{kGo>3uR@G+urZ5R+D8tq|+sU#66D7{X9-+$F1 z9`6eBI&HO1T|-N9yB@3_{<~Lr`@qDgHkjE4`&oeJxQS+P^eNcER8tOg&>5?N844eq z5oA()Tk)10%$2ip`OP%q{Ym#ICg0XdW)j~qUe9PeIK4jEdm-mp=Eaw4&HJ=m)6k_I=uK7a$`$fmD1WR)N#XcYl8R#L z%hE*(ZWST;^T^BEvjJz9!OIjQS=#R&kk6WelPgg%;J>uY`f+KemMSE1GX#89P!V#} z_$iOac=wC>oFQZ3B??h%a!9(UKrT?waU~jYD7`P-Yzcl}3wi4}T=?`h86$6RpGV;T z<$8W>S3hVM3rXNW1kNgs(v|tC2)Xk|j$NQgc|3TLLYxah@%H++zS3Kq?fM6E3hky+ zPes@Cv#x#XyYS;$&+@Qk0n3{T;#c!lQe=WqW)6r`QM7XXA+Go&ie~6QZ@xgV#=-Vm z0em(){?#vckv*&dV5ud7$MJB2bb4HL<~tabfd;brgD7d5r!Z4iLlI_LyLn0fS2FOhtSNf{lf z*c_{==8vRDp(kmrs_NPUZJO1S9wTlQneq?NO^~vvq!nW!wLgzp3BcPj2^ow*4!>a= zyJ6T=IldvWdl($hMsIvW$z|-g?D2!v{;O!zXqF)8bCaiymc-OlupRb# zJ{zK|pz%xB-0;ulY-`rY&h&A#QbDE`TB-bWPKZ~(nBEKo_pA+|`H6O;J}!4*$^} zcwHpF$!@2#S+HKssr|;Mi_z(3e?%ry!#edg1f9)lI`VDPU+ygs_c?Kxt){PCEhYYb zF%5(D-__(oHIQnd#4Ly*(6is` zEK#CC7;P+y8Z$mI$e~89(G#)3nm$zbxX_(XiKK?qU<3cyU}V4IMi+$tJL8=u(n|BD zjm)s=)AC|c9?y`A)5w|8svzGR&^BdP8T3i`mjg??=_`O=SBzzfugkaT;KRNT`LjAj z3;IDj_?tRq9kUurGhOyPZ+b~_=*V^@!fr@yn4V*BJfZk5_&Jmw2x!7*Pa z%glWb6iOpRtIF$IhIdIOrsA%J{{Hc_t}dtctK+O2^Sd}bK2-9kGxnmN+=PclZm?6N z_4qzmTgV+{ET*C1t~*NKAoU0e?7H=EGgtOpoK6Npj#?s=opj2*r2NGFl$k z<}ARqV7!1JUwh#CY|eLFu3T({n#DC+BCTdydT^QEP^t1diOwyVmu)tW4|!Tja(ok5 z@#d>+y`p&d8*1bQf-8`*+x*vLhAFswjv?+94?{v!#>o350ng*NUVz@m=DG0)JWkqk zr~DzJL7MAE88dkx%&tvMq&3JZD$_P9BE8Yx$FECp`Bd}MNq6g?f!I#q zkU>{$kXiCll0hi9Q#LP$dB@K5_IvsIf=VkVB05!)#j5%Q4>Qb8W5nzns(^Dl_nx?U zwrxs!+unvQPT~7o`B+nTUaX@ws4SWF=ewmdESY@+xD^Tj@CYZFXOVEflh*tgdm-oI z1otg;NSt6BeXr4Yt|ENp%px)9GpYg)(rfeX=0slRiCDee)39+k@%N*`3h_?~FxFp7 z$|L1vP2ze;f9ulG1^-b_@U9H@@jCZ}42^Z@E!khEpR zaqLl!*o)#IP017WaRB~#84walM)HT<@b6l8v*EOL8E(vd9+UGLZB*jkv||q5uf9cu z1?x9`w_||Kn2n(W)pd7(OFQv&ox~D%O4g>IZC_0?j$Kzg#TSq_!B(AbV9jlaOxM^N z+bN{&(QHfE{L83!SCLbesINyZcu!ItcVd0xRTjU%yEU4U9qld_zw59K2NCM}^T`|4 z3zO7X=}FIvhs0m%>cpob6#?)IC@(*=Vcoo{3r3luenF%tFCTOQl))74)jsIjE_Z^Ul6HdTniZfRDxTYnh z6N(s7@Q)sDU6X8_W!sWeBWE*`CFX6G%znaWk__BeQ;+FU_gh-6%hc^G9rP+!en%bK zI3I7AL;R+aHhZj3Kq*$@?V7f^0nPAQ zesgDy*D^v;J!h1OKRWxOJ;O!3yQkzg*d0|gue3ZEt3g9A#24}lt*^mZ%%fZC@3iVw zn`_9hUZR~AnH+;XdX{1=${NBy_O`vo!ux(+e089jntU=u@_0!j=fQh8y1j5lMlO%C zU`dtXNHmD3x^@AYiF`UbNKsp4UWgw1!l{@nQKEA43C?|iN8d10=Cv<4%U}i};|GbS zwUcJ^>;E2&>NSKdf>C@a>5Fly0~^UMJ5M1SapG}OUATGRtXFa0#+R`NtcvzO_e1?qQ`BfKwU3ugO>dkI7$vz+G86eTwNo!smKw$0Gx-|yX zmGU-IsDd1+c;8Ccqv;KL0!wa2dLm*!d$C&S^+`!-1yBzLGap>gEacu*W#R|jfo393 z)WX1--e(u1Y;Cllk)u;^l2=gfi9(i$yAfXb`3a_Ws>tuS42ZnS#2$VW_)Fxp~6e!P67qd3rd!a3QlaF1nX+R z>7}0FTkGD{S$hw6WDg>ZE2fd0qQdjPb8D;7Re(7P0b->2nsK0tmw(!_8uw2JH!X4O z8+*YQ(WoIHDY3gpUl-X8Tmflh5ApO$>&CT8|MvGUQLu)$EuU&xQtGW;uBQ*Gw61j+3B`Z{ie@tsc}bE>rQ&-?33dgVjM(V8W$4oLMYpq-NMv+jKv z)vfa-@%+mAsNy-)jCG-teUAZb-c@D9Z`J zL5Gb@;f`u9(oj&o_OXMf$5O_$dkO z#({gLsl3@zCmu>w?fu|Il2u0uCzumqPB1F5b2ZVwgH757Ov5S&9`!*2;p2>w7SV18 zPSR-%AT?y-vCAHI-IxQT?N80H(#ofeOYwPZB~Y*6s$%61`;)m>zDPULHRB_=6aQB)t0vaerMoRvaf z47LmNZWzUVd`Kx!?^-KsNW(fN=et@o?s2S=Zdfr1e9=QHqCfXMlP-{>pG&mMi#_!W zS}6)4UjkQNKOriOHb(coQY-4;_9_Tj- z2i`7_w&55hm05icPvBCleQ2S_W&yM9GKFR)AU84gEPyI1qmTAJ!9w=A*~Fl&W5FRE z{m0R$A@Mg8L#|6(U!C6&06Cz7p=(KV7wz#iY#I3rNbj6xT1=*kB?1~-Ak3iP!6@>S zCJg@w4>>avsrhm`)5EDdRCA%CsEIHkV|(PKzCUKMPO4pqUtGGM(EmE%?VPOBsn^s_ z?TY?uxqHhJezABSPthE2^X~)G^6d{4^yB;&CEd3YFdU^1*cAPL$N)`Thg8!Vtne>v zo27kv37Y=Ta4m`^*DWKcpG_==HE8X`zC>zk^h&^6axDwfI)gWuX+9_MpBl+O^p}$P zity30(!ozFD6T4(x>u^s`F`1qq1NspNTrKB^M7E|c!%%^6O*EF9V$V*8v4Goatb9N zr$d;oiQ#t14E2M2TH)!uyi>C<|1wy*C@pv{XsIxqXKs{1yG~1hxjw!|`V?)+oUr}G zuPKfrL#|m3iv|e&$%MzdKX5j;(sie`s7b4LSw-19&KceWnIG>Bc=@%))(r)|>eA%o z6j|Aa*TueP9Jv)3$c5M++rXpJkT|@BTobbyH6wxE2 zwz;+;;4Lj{Mcs1m@b%q>xh?P1Qy(|`diA`Dh=(idR1c0FaiI^z6<|-P7=)7)5|eS* zUHZr|i4i+MJ&YE-+{y@!BougTJiFdg82HKY5bC!f;C|xQs4`Y;oPyELXUMmmwh(c# z0{k*M4z<(`PH9`H`}F{AcFSekT!xmPt#fz1bFnZ44lkG#nKW7e$sDYhw^8KmAsRyByL*|n(yi_(3KyreJdo#Q`CA~D5F zKg#JCm{&RGY2(&omnENpDfg=a9@qr(c1rfCl0v=2#FONE_!amqGe0?Yf$>)8Z{|X1 z^&%i74x^!fBbK)qenc#_T_D=V^?L#e~+!SR&({^pBLI-__MspneSwI)n_ZKZGZB(b>{S z8fwr^asMpa6+wGECn&$46Q)-?*F|H{fpSw?kI9+$vjith3+gSXK?lqOTw%D4vTH%V z^`|LwjlBJfx@NyGjg#Ql!dw_-Cup<#bA22T7eN+Dvkgt&0y)}j@Z`-#?O#_oLOkJ{soe@BEJYsS0yc=#r46q>8jn4 z;g)jGtLtez22mXADK?APCMWB2HI>@4 zTs$Q7C+&5!yu5`|GV5F)d@th0pzm{))Ebd!Rlp%eniW=gpBRI=<9Hb{G`>HGmPl^n7r6p`s4XliigBzp^JHfVPUEVYy6~r zRn|V)htphrd`!IDFHU*^TTh%K?5_|XeRcEvR;#i14jCFnX?%T>L=zH(2X0F*HFRa& z^gVv*a(lxhPWelF_N{`sF1F?m-to~!!FDQwaJ|#V@xqEYh^mg|Qq-m-b#flU470y_=_H zS-m2D+M@=nfIX_~0cy_C;2t>3@P*wD=f!gN)MmO_wGFb#NH_YBcr~Z)WZok&{*bSW zz`*fXS+JkOV#Oao#N6c+H$noSrWkJ%?UxfIj`n$W(UfgN7D69cD@DC(?i$!95&Soa z>u2#voEV3soP96;xMURM8;+s%EVg@up6xh3A{qngr@6QL@zbwB+{84=Dw&~pI^@SS z>J6pOF!^sAi7(}91*FCEV#Qri-_t=iZXa6-IfJfix!ifc7Et8(3(XqQG{UC$?Zjy_ zRmQW%BV8Rg&itZaz-WK820C{VX%D_hQv_LM(terD+vQg7{uQgphcpoyCBk_V?7ppD zF*}Ly2g&U*N+ARLHM`G28y7ZVBx1wv&{{;~p~br=2Nh)rR(1{Q{g&5%y106Opsp0Yp6b4`!!2EXR#kV@cu zP=aE*2XgkNqyNkogH(>Lw%(K|Xu76?M6o_t4{fSxEua=f*j=P3r8(@KBxo&1Y?H?R z5QR!|`4h+SiLv7)odE%u(IMrvadhr2Qmc?vVq9U&jrO=pgSA&<`-nHXkNRCh_CI`n z_}KQ5cDuf?82a@KQQyJK>K5ite58xppD)hlMW$Jw!OA$fwdY!h~)A7f^ zD${!&+I}HlHb_oT^U5}2gK9+kci}-7I>$&lEZR!n?NK*ZxgllQKV<2pZGT-dUD^19 z@&k4Gc5u}LtJd=s3+gL7H&OcMuqr%8{@m7#O6%s2mGG1ugGcxQh>{z0$IsDzQ}nfa zL)NQp$!%d)N08G3dVQA&Yo9$irm^pUrPVD+bG- z#8RaB!F1K3 z7W<-+{kl(^@grpzgXG5U37zEu-!C}gN*SeV>jASfHG{1HD=3I#f4X^|t~J`X_JZM` z?TE}~{Fl!hSFFIQd6RLFE^bC2Ofj(v(gCR;A)qdrYU;Ebg(K>bRW*j%kd=UUB&+Ii zF~aLsM!15emAe+}MB6Rf7GZK3;L3*NN3C+X#)TOa^p-13T^osl2-JutScR^G4fdf0 z%U1KK8J>Ws`(n}S#t_6MLk*u>0?H3p7<0H_2KUcP`L&7Wr)vT@8Tx5)bB6Xf}EDQ^`7HZXot%d#=7lEnravi^WZ|M zYaXZL>d#Dp19UvPc7GcP=h)+g= z^174ZImC$zs}ZKuZyFNNgr8CA=^iAF;(k>jR~C2i%c<@!H#tAt0;vp|RRd~lZ!5~V z9!P$W^BD_vaOpFO=IwdcDe=xM(bS=@$*OQp_^~D2yW?qq8473pEHz3z^A+B*TdHO0 z-mc`&vJ1))Jsjv4mC&H@k!ZT@^DIzAxRVR>ha;S-WPcn=y_VaO=jl0`12+K8!>YU@ zk3RbNJvo1^oKD&T1r9g>+G7?b?ltKRmlvCbs`TOU1Y-nJE#>)A@mxUg| za`S+qC!(sTbOv2CLsl8p>qi@D-jC%0N0c?9wYl38rZhU}R&#pq%YsLJzAQeDxLR}@ zl~B0dt4{5mdp_OUG0)sng+jOr?h{*IgfM9H$FPmbFIV zOj%c>IX8!RH~P$5(LtF6av@rRRiTXqi!MER=y2iPGgqFM5f?|0%HO~Wv#mk1wV8W$ z(X9_6dTjcAFo=D&#S$bMm3x?#xegw_nJjCrM+bP$m|oTt%FB( zvh3<*9+kLck9hhxc8Z1OlWyv#Pq?YPp)Z6S#R=Eb;I1D`!|)P%vq%ln*z}CIW9~yY z$#LvY?}3I4J)@{(bDR27E_%6we6XizfWKZx4v=|H$YuoDx-#D{sSm$+vY=zX%g6bY1ZdE#(SD1_!YSYq*vn(%x0ice@mkj&0J8!um`q>Rv z3?^Yz6+juoNbR*%be+cm9nc5Sq_WE(JUqV5>E&pv(r;0xlQ|mwXSF2LtZ*`KoJgMt z0o7hN1Z?G7?P{%%C6)e(zh|Fm>d^GQ#Z-);Q`dBHt#Yd2r0>)s+`Y#m5SI2O5V*8S zy;0V63CU1W`wvuxWKdzN5}hzzC4!w^6ffRR6 zgAtomK__zj^*eog=fYm<4r`u1|D)-HRS!3sPNBAKr0oB|(MH12 zWf|L5OaLu+?h%ZA$EANd(|umV>fkR5AL4G%cVF3HjAVuU1#K~PH#xV=dG?m@x%}Cx zZ}xo`-2zNv-db|>(96;5d+P%#bbMXWrKFJXQk-K_Yz!9#y7-Y>%-6@A$C@EF^>amP zrT?b_@AcR=8d!*E;NOdaGphpjFB|qv{iHQ=c8WIgivH$A#c-j58eu1mV1;#C;)Q`s zmRz~wyaCw)&nOIB-5*w$P_I1Ws?r&e18fmnk-Oc6J~S|UH5Ae0w72xibTQ~O&4bN3 zxxRG`P#qY7{!FU3=+X$<7*;BcXw~Ss*$?qt*Or#IhlJ0v{Od>g$k;LgO$$u1vm~#_>?7kRi(`&bmSD+JQKnU50-o z&oS~AA}ZcKt#e%O1iL5v67{RwqyLs|WLaVy^HLd*xyOlOz^)Vs)~N;s#b z>(iF2lj18z%C(J*zR~@d`rpjeoXEp|1d_#PzC}%+@>5Y8{ODk3dhnHkgkj5Q@8kZI zIMaF{&jvVRBx@{BK>q+M>Uaq3PgHO@Ed6l(LO=0CeIHu$+SXP#tJVcMg2_#?N zw^zj{&Ir#YnGwfgdP@`cHX0Ar2CDQ>XxFHxE%dBfLO1Ehl4~Gfv42X51!ll|u9U#$j=`;cKlIeoGGx^KceSG zv0Dn?xUSRuluhUrY?r8&b|Ljsds{xyJ%Y}s7) zdi~XuuGA5ASZdwyk5$^?YzfB9vV#VtO*@^(VdJLZBr6Mkpy5i7>cbgFpnZECAw zWs-p}8_8kJyibW% ztKMTqyC2Dtz2G`<<|gCb7KGp?G>-@KPb9s+or-?*N3V1@R7{HAr`=bCFVUYZ-(>aC zj03$xxaMkRc2ycnM)90Oo`bC+1uDn3;mJeU?Yy}-DpcM~+=Fmd8v&Dvzt?>XGd zTzOZFyMB`Uefcg=!$w1VP+o(1ug*N(%MB4C(V$+6yDjL=m6d5>BkL4%jBm?D?NS&qW@JM>ZL;kNuSiLCRNDeAgvYIw61Lq$%~_ zemR-e0i~9Han`5A@tF41@{CIKTj3b+riW}=-O&GpyOh0sv(NfLsq7+Mbu`i#%Xc^T z45&MAXjvV9T;RV7&g(AaH)Y+9$5~Oa7YydsSp~Fh=&=o+cx@#O-W65u%#FHnbn@JS ziB$CFd|C)BjhNZk4Ho;zfX>}I+sGA3R(<7nl`3#%2W+>6*GbHn%bvyt zIF)*E*ip6kq4x`@+enS#m*Rq&D>4Q7Wob8Ne6{!U?oC*4Flub%&~*J^-MYG9@t;^X z?@8Uq0iN4l{Cy!sQcfA=E?2O;hq0Hc8o@Fn5}&o-*DH;vO^raxbIt?%#`3Bvk{jm} z=5FO%Ug{dU|LR_sTcY$_2jDNNd?rJEPN@Jk*jV5&CZE!3cW4m_h9?wu6-Gr#x)y7J z^*OrEg^$JepxKenNzKmgtluI~pR`Ag`Xamt3)pd*(j3o;GdbV3jMve-vWsqt3sc=E zjRIDw*&`M!56c=YnJNW$cx-0zpTU1sSCrKkw;Imo6S{D z1t-nsuN?db6W2w%^bXe3z}a>4T3m@;Ve1-#@n$Jj$K3=5oUD!Emi(jhNlsLXx{y`U z)Tn88skRCu!!@}_LmT>{#`6xPQ5yOg?HAeW|C%!WEy=uR8wBwtGR>C4{0*$u*7M6_ z3&MdH4fJsv!qHG$CuikT580NdoW$UR#&$S+rqi(A6i596<6gT)x8&Dfh&hp7wcFy} z4JHWRr+#X0Bs6E<_?DJ!G|N_e4Pd%U{lI9|I7GvWj06&QM8e|0A{Wj00d_)5FSDTK z>nt)qT4MX^8Iv~q@J|GtXtN+uY3cJqwGKH0NUvPK=VOj!`X2{y4ul?7*Y|U6XBTJt zEF^`bQQas0@1+L8`R)RNIK)T%&XU$na$`SDLlos&^ZJI?$JG(jWQR_H`S+x;Q2=Cf zcpNNs?A=is!Irc6>%Ep<-v&g6lJf%yW3PnKxl6;AQm zg((r1RT{9jz-CUqu+*9wV(^|5&CizEyHQ~3&(U(u0R9olh~j+2%tIy2ej~6QvH7m6 z`|Ijr=ku5&!3S`<{N??Ls+9;!(Cc=*PbZ2)?Vp-)bk)59NSwKn<__Iu9DVdkzF49u z5yJ9qOJOzMY$tZUsaTlE-E#Vss>Wq%F5TayMHHfo;5+k*R>B2K5H5VA?RuK%&j^+W zxSp3ko9P?ME~x8*APMTJ*Xjl{$@3b9q}yVfDFlYZ>{g!7Xa{xA{z|Z0JMNhip~b(B zC-L0zz69XN)z8;aRwupY;I_%eH3miBWBSRl1~b^(&7%vsEMnmSou(FQt{HY0altOLb*PngAOVd=&3 z=2R=SZ}@H&21%=FINV6dT|~)$CVeb{?CECzn~E}rAm{}wWnQX>y6!l(1)r2z1AE9s z9^%)=<37+UV*DGMU_}*TRbJ&EsDxj5#T@)flb$&*ydQ9RZ})fW_J?{#4D5nhIcG)Y zQ+-PO3RZ_9_=QD7-08ss4*Cr&`z4$EA2u2bAMa}~Ucv6?SYfoUmo zzAlb%`a#6z`UB0jd~UhCJMCtbf&N8RR?zgPf-y7V^Z!*N5qK>sS>*TZyYLHC-xCk@d*O4Sm5+gB6I6rIdCp2d1K-AYPVpyamfz0 zc~3uc&lv2&UU2j2xF>n&^S=Uw^dUzY9WIs;dWbi}nN0_H4-7Z!t;j`sv>b~$J0DBa zfy$inJG=LJ61&3JHJ*7I*hF*mjwpZpSEuppStgC$YfeRLrd_efq}68Ms@+?Esrf&W zgItVRt~SN}Oh4ecYxuITvFhlcx~o`$W*H8^alnE`_U`ZzW28`m?)l-AM=t&Y@v*SzY#sn(2EQ1uJ-#H>X{Dx~^(b z11_k$u-a;puh7%ixLq<#U!_5H@LrwO{ZXTvhD7uu)spp-j)r~GVMncOR2q`0>b$7J z!fVpD`4j3=`0#B?AGceZ&^lHYPaIj?q~FD)Mecz?tr-gy5zPzJzL>1y;MaTXrhzts z+{@d1R-03~MXo(VB#Er6fiDP`Tvp5D zbNiriSkvXJc6Bj)_@wuAsf+9Z*)x72VD=eJ@?;EYYQT@S_z_mxD39zGy|I?_pJU|Q z0Q>`z5%}KQc4^qr%mQRDIbvt0tfLRu28T0{?gFc8==yunU$KLoR96((xlz!ZEEqKJ zDCeJyw%DGMI_FvBy0I(pwxp2XHHmp#G;k^OE7f0*PvSR4Y8Le7++zcS6S+|#aZ3u| zGn`7)uPEul{U}Az^yA6aK_r=8r!t63Z$15cKmq`RO|nH4<7VJh1mb! zge%UU=6U%x*8{k_+->Ohk%MsH`$!Md;3@FwXxQ^6rF<)gQLD$*t6uG>wYwxgG~s2# zxJjZUD^G#vI_f9X_2s7-O`&s*fL0gM7Th8>2;_yUs(5Di*EL{K3r-;$t~O79w)n-B z%7$E#cRN~Nty{P^vL>0XCnng;2cHnO7QDji`W2Blds|qun6=e$Pjmyv2L#A8az}{>%4$8(^i{+H@#uOFerhvatHCGgZnS?05#Fy%Y5QhLV+vbGgR7eh5Aq zs2>Gl0YcJZ%FLO^+)Ss@S%%S4n0%+3urPne#&+XD;1yxkZCAY|(Pt6$aP|{{!h85J{MJYed$OX+KnK--B zA{aiukvHG>wYpagkA7mcx2Ao^vW@?H`W|3gHf)vg?8m8lpJ+)M&#&YR+Ke^gC{>yiFT7?|QQc9r($d_Y)A`o)P z=E(KIjI=@ zsMUFDv3o9D3eXmE1XVVR(-Zy^$K+Zc-f?E5W-uXKu5N!7SP)Ugo&WG;7v*d`E;+tq zq%bO5f$*2@Kf1b#-X-Y|0cBT{lDFsb=ixhRbf0lWSg~seBxk4DygxTiZI@s2q}Pa| z2KuwtQaW}wtK2*4vYXs`zjUlT0YngKX^j>6na%Pyd;~ z#|ZPw+_xiBB}xLERy%CA^OOSKD_xcb{*X9BR{t7%^ku58=vG>h)Y=AokrYUruR1EmgLaypO~I=Uu)K75eZAtmHGE6tM)k2}CHwwbj8l~GKY(kOXKH{UR1 zDv910IMjqvS>#O;o`60+$5GO*NlVOiazj@|nd`LqGKpi+%#n~PD&CbyZ$ zBaZ(wY+y{xVmYuRf}X@1efgII{z!krrFySCtUyFtb=EqwDR&=>1c7t~#f=XH%W^&H z=`VeoXS9BKKLJC_h9q<_N$H82?odlg%wR{!SpL)GxVf zkN$O4ykZLD=B9|#D3G5{DvK}t zZ|<1XFBW$LC(AXf>btL_W|D3RajlNkhaiUpN9D$TYmSG196R1oP)~FzR4{4GexmY8 zgG$-wrSfix?5QQXQS-=a-IPjay)eL*$*NhAfBjupl7^)MBIc^?Ed8Z-BO|QMSQVOU zIMkbI(P2Mc^w7ey{7biq3wf~jeVbo6*~r2l&u`G;!_@4kEhn#_f<^66!f-hcS5-G; z(XnnrH-}Ss-0k79VE{Ts*hE{s=JcGmB^!#@@Oi}kQvPtY6T7BGHP=&lgyL>2r6V|V zN_O`rkdfnGG&s5)cf=$muzreaHPp!}xYV z4&Ly@XZlmRRp4vc!J8REqc#3%32m%cbYY+8FQov#UdGlpo0n;Vd+xw%3y)u7nA=Pw z`KT1+OGY#F%KwPX6^+CdTlswTzhp+J58ZZF{%gAa`n2(VWK* zJu=MVH(aZ9`IUh@8l)e+^t)49ucCx6tkVS?LyuSRfh1*zP3tdm(Kg#iZ!rxZ6uScImn15H)k*TIxGmY8@gsj zy{%4{E6DwKQLh{N^99-J%*a3JVEi5=+{v6vE*qM-&NlM!9GN}Bp42VQKeXe+j*xpP z-~XO0_bJCGjb{e9rWNBg;yJyFPm58`*z@RFFq!B;o`*+GvUQ=j0nR_t~w>5g>jCZA{au`M`KpAhcwavwj1U z_eXsg|Kc=H^hE05#r)gtsU;X7%erkvm8ZE<<*;*JA`u3 zVbt+j|Ax$;#`UFr6S*o5T~T`HmYJNW^e%Hw04_wq)QhF^(1qyUERFvr z^J*(SDVBh;!~4*{wB>H&m~xMXI-$Zk%nY7yhDn3@$bny8OS>o(^AIntk>>; zvkbZONKvHIy@Y>El1ulmOu4|7V`zmnV`^pD@zTV=AD{;&xP<+>FL_c*6Sf*H_F~#$u8!BZkHZ9R8>t$2 zxtQ|Ra^r!ixg{B^x+@F`c$;$0o}?LT3qyHooio>TWq5BhIx3lK46WrKnDqxvs`ITq zL1V-8)1geIO5y99&zFnt`&1|KQKo@6xD(ZJfFO;wF@sDtzMz3thfhX4(N3p_(Jt7^ zN_ou`-l5m;V$6a-&GO_nuKrwQam7iX8+6q!*RmrFT$4 zkgg!T3Q_|^dJR~RUZi)B-ibj7MT$s?^qyb>MClNUlu!bJ+4wx~duGkdS?kPvnJ>qW ztgzkeo&SB6`+xmzpT~9_2j0zo`NNGLt8ROP>IjjNmd{o;NxZjO(bQhC^CBO0Z&+01 zrtP{=F#KU{e!JGsn;yG|fyY2V%EBVV4hM9U-bSjb=yC((N2x^5?S1V5Iat(z`{m3{)I z#gj?&9<}GCIhrmqQ&K%aZScjG(k{C$xa(jw&J_83>aE&5-uaYpYtT03U2n@8-*>TN z^a^^x&DDdrNj=YqX)LE9HjDM&f1}ZLFuK4650-y2kB~l(rJ#tf+4H~aeS5r{l#~P0 zH>zrhmj*G4g6rszA50|d?+5m+2|=|XM~n^Q(i3b)P7P@4jluS$l$MlxGFKY_J&hX3 z_ON_au!2x$;%|x#ctlIuH|MwiEYa#+)N?1_0NgHjnk4iCv!3s!SNSYXzu@ctPlIICSDH02=I|M6)IBvk9k$JR&t&+1%nUf3`>!y)i{83hBlz(o@tr0?!Z_y+?}v>*C$F*7qfUWg3gL~> z`#FH?;`c^*sS_hYTp8t>7w7!1a#B61A1NM9boeYrK0KO;;`yS?4b4;vclg{Qt)?G- zFlN2h`}jy@d65|Ia%l}vs%JkGdjD0!|C)!MGediY2N4cocWwG2x@h<(pC!&{{nD?YFu7{2`7d7 z=NgkrM)&*P)AhlBMtWr|u>wlIUanzWs$qKIkObYttxvy4)deZ&wxh4c;JA*V0Da>l zj}ejAs(oHdrEz~!w`q}i`Q?)0qV#fOgjAm*A5-^MyO)HR`otv$w$;tZU4}b$6H``H zq!c3=Elkomn<#}|cvjtIyOylvV|NjxD~BQu(aETEWeb&IYiu?xF(G`Ua`cNyjhSG% z}r-UG#u7gsA^ShQA%L;0KgF<$1okJ=M&TS zufb9T*cSpt-iJTmT(!o_-BY2jENV;-GKncwodwKY=8s}`tKd2J5u3f{9KZY|(dV}L zn0pIHDi+*{^Kaj;&bz>%6e9ojeLTyI?j36x)M7=@gAY8KK*S**!OSb6CSU{MyZ$AW0>jHM=6=ff~WA<9i=>d=G~2a5bCO zi(Da0D9;ALCDhrb*0L=Z8Q49a7?V;kBo)?0_V^*abMi2!g2bnvj=KTZJgaSNPiB@W zN~OsGHSLElQs4jf;&CX+!4m!&VAxnWUys8a3Xdka2Th zJG4;yep5@El|6&p#Hb_4P{?#OWC10REV4LMK6kZZA*elrWLmRxYwZ|rSy)>mR-9hr zRIl`utrQ*H$(g39V>|gtr1f&X$BTDBdmf{9^f%k&X<~jjS<)d)lKd{H0EV7Db~*|3 zKgawyw9uaAgUZ3&G079x0d|ngFA-F%puM8;w@vx2zVro&X=< zsuH`9s^I5mzj zA8*MJr&?Hm3wlv>jLIu|laY{k1B@WkT`RPjzEt}4IbB*O8zb{ z9&!v=JpKAaR4#*&>-=KA(!HMjqOU=(cD!k*F5PmdwRj!8!yyk~= z<}Gx^S=*m#VUK$o@`$Pp$9UtY8wmH~-83fnd(8CTYr&aof}35{S6>Jj~td{Mi+o zY6+e7swp{ZMTC9UvfH{SMI`AX>0KoGoccRhzHH(Bb3%s|gZ2mtY@zl5FN zwzUNS1M)S4XpzzBj=~b|F;2-pykqCmo)3O_(r}MaCOFETF5v}0QTxnQpKk7^5gPXA zf93L|=hy!G@1avVRsKDB{h$BiN8ixr!}fqa{_`2&{a&HU?^MpX_}`yY3IB7S|KqnF zI^Df3E1%5!-;aDFobRmt@5=xWbMP3!hS1Q!~KB^e)FL6cY26FpK z4f%KeUto22%~_Sr-cmJc6ygJTs?tuWNYD>AmUGz({Q)YSwLw^ug@4(6%8a--s!p3Z z9ec5>1d82|Kl=9hX1wQpaZnZ2=3#S!Cm@lBy&|X!B6(Ne&?9>lM5ZgR8iSAyv$wwy z-pF4EQ-a6#I_@$0!5R#MfrV(5Bq!w66m4_jKjA}Y)9TZxE2Q8y{(r#f4B1AG-oJlw z`({I}Ys?T<%H@mOgRA}<JH?QGozo5=$nl7cp!STsCybg@; zIY{;x1m1-hVLcN zR5LxlI|B0~>2>}69#5i12B*JNR>KQd=CxD*o10+qe~^@$cNN}5Xg(3lBLO8E%eHA*bDDsxI7Zk}oR5-8D|T=-~QPs9{nWX?(eN(WzvEgyfUi z-KG}iv0kAImc|#g8%y;paSOTho0Ftf5;(D~Ysk;uB8GEu4GG-8mngJdK&eJ&rxJ%L zSEjL!{{-ggCtsBy?@+t^e(ziA_x&0F$D63h<23yz#N-2Lh?b=HSRJx}D#&-jFEXRvYZ=z6eShxIOpAbrF9$khemc&xY!HCi@9T*18PXOfzuALjY= zEmFrcZx6A6#eMC}T=|D`R(Y!{jST{b3%@@v`QYqt0-^7bOwD`gZn`SXw_h527n|_6 zdKW)v**T+uSk`LlzQJsA6mOZ~WH;)B+;ssv@xnt^c@GAm9$Ygm|ti z1a--m(w!|@+`D8+-dB@1tw!pc=ud{SUYxtIc)dqZ9OgJ%GXms*;``&e^HSuPOAQoU z+UU+JjrXpMNaB9md;Mvf);EbGeaF{1T_X>0@kAnoZ&@@hxGt+WB8@qxx4qeyMS)~8 z5s2T+xZPlmH(!43_Itn;{w@gjyBMn)9-(;Dt(Z0}l@j|crn3xt=%9JUcAb(VQ690b z+J8xe;X*J)I?o3$FR$DO`P{3%gt*5|&qPV1sNT4fn@KbKxL~Xz-H#`7O}Ksjpl2Jm zwI{Vd+NS&L90qvbgi@-ozxG;8_liV0x#w4aHRF%C+xF0laB{nMadFPP1fX+zJQa$! zh0MlZdQBS?Y%&B7KNq@osPTKe9kZq$_`hjMnsHvVO#0`GUI`Lk zKN`N9_wx!*Wo0-GH09%MNwIBJtl zkUj|sj|||)9M#7CCSjrZ|MFarPqvK$J^d>qH2~yTlmF~riP%bod~Vpr+*B3=?0{Sp zK%)APu^eH>Z=z_*KHH2>J^QN&u&%IUderGhM74 zc3j=zmEG&10D@1(pT8aZp!sXs7WUIxe=Oc4gdC&EwPVOfzm=qwmBQj#D_pA1h;ntc znWxnbzXAiomvmY4e{YzTK@(n~fB^xYkw3rn#fKZ+K{-Vni$Vtq4^x1t$6B`YWxH|3 zU72gSd7UAn=qF~_86(P+gOi|I{_@%_QB^-gNv8BaJj4n%WoiBf=-9;XR`D`qxT=gK z?j87n?taJ#FcMaUeCyoA6*9l4Z5rTw>YBL~S}%xr?HdP-;rxT$Tg*JZ>};8V!7M2} z&r?%s_&_*zJ`<|J{WI)?062!ePh?nVVEL^5p?#{sX0DN7mz~VJ<#zVEcY7*-w=DTs_lys{nMOFP8(}8XAgodqRpj0 z>%lLePS}UuCmwDvh6A%t3U9t|Y8E?)e{Da)e7|aycqo@Tkz#+w`(sxfJ$%5R-@VJhl|3?V2sx!Lvsk*#HwX3m2?G5 zEWNNjBewu|FKv>U6QV z3ivR9LW||iHm0j*({S?qI=)uZKdmydB=KaoC>3L(W8wQsBQ*86&XRq|_(NdO?PEin zJJ)WpNcDQ4C3Dg5`F)S!sz({*lqL(a!i!?!%vWXJy0hceRE-Lwyp!x3EB< z=;a>sKv-(|;W1sMx2Txmb5vOMNe|d4Di_4z)0h-W3W+s`;po8C0m!0n z6bFTgO%+kmC3gQHy0{(87ot27vZ77Ev%9QT`qmLTCo(;>)(jpPnk87w=KbJ18 z$`+Pr<2|5)(_puOT*_C*%T>_+ zOIurGrs?m6waN}2JUKJ=6U-Yu`TceY+~sYqHy zLEo5;Y%x^5@$mclhHK|p<4lHm+xfU0FAFHP`XaO?Bx-g#c}B6i)`Hw;S2kk$Lg>$( zo3q%|+LRtxV)TXI-+LkApDxjVIUgU8kdn^4=&2XSG)a7A03Zk7GW~EHe9%{t25<9B zGJHqA<8>g!QvAsK^UL`M&jmQvHuo@Q$ysss3Q*Q!TmiFx68DGnZ?Rw_I%CflaKJ`D z_v9zze&H|gu_#HF&ZtHtajlJNO=8)HOV%=j3B8o`B$K{RZY#i|W^10oLa9v|7bB{2 z6w|gWQzkT`=d#0a$Kz-k&COTlgY7=_Z1h@YkWo4Y*^6teb5_XIn)EX?IJgr)Xno>ET} z6=XF#v#|=z>iRJv4k=~A^Pb&OpX=H>M29vXdK`_d&Pl#(w^Rg zF}B-lNIGpx8*j@DhPe1_wZcwBq4BY604Nv!z*2UQ-9jZjOI#%bBNJ!zA&@R(*Ypwm zL-_$2Rj&Mpcw*EWTaEc3cHPfy9pb7L`?#O})fMskTC@}W(}&Z}*`ClO7m+11R}G=9 zr(Xl5l>-@%H;NOYry;XN+eY;5WXK^c@0mIa5&iph)1`Pu_a46K`RJ*J%s9_QqB=Us zsC3LWf?J9Vr5+#|J9;#6GWw!qtsTQ)^R`M1039AbD)p{@5bnM#PXt zgryKZYnHZQyJaE!sB<8Y1%H%5I1c?s?*6%>HQrfwy^TkQ>c3ox-!|JgksCkDif@?2 zZ&$ssEp4u8;a++P@xO{jYZxM+lJ1NOoBx{(Sojae%^?vDbB=+1Xg?o*r+8z{sGVgvq*T-3^~ShuUlHfnAoBVJw3W)pwl z%3Y76uOpN_hsrdFjXH(&n=X~Z{nh<{JwX-&dqgUV>cy?pELx;!Y^@+x~VczXE>jv+ND4`Jq;|)J)_D!YP0=~KOG$;fr?Kd zKYg?3lQlbjo%Tg?oKBRxn<-u|J38#PhDW5sM7I_dX${HOoBHxos^pwF@ZZhPsJrA~xW|#5SQuGdRRM~@Nh*I$t z5Epb@{w@S}%@Fl4Hikl>XP7dRCJ*sR z?Bww-`cUr#8|!I{=)M0E5s=?s4rf53udDdr0% z+q{jV#+{wDs7G{_0BWGR2Ry1T|`a%<3D0=@AzSC}?L$+-X2=i4l?w^Z0p#9arU_Ot*TCt3_r-&6yYi zg^yaF|KQSDhhCR285jVnH}OjwOk=i1a;D^(eVQ>B20g!9G6ts|OU8JuyGjf-O{iam zEt!ob^~?R-)Y~OTPOCg)bNr%k$XJ(Sw@kXU5tTuezo=M^iV!pW&1%)vCIQL*qEVFq zv;GrHy3~{yAu{ffm*GwI6KX=R6|ppbMiAG}a7Ngt#9by#7cnvkA_Uh$wmY$Jmt|Q5 zY?I1tsU(Sv8tT~bxs$Egz^k>_pY+!24{1j(BPF@5&@cTmo>5sbfjHJg>@j`=OgS$% zIWM(cu`6G`eLM??wifkyS@N?VH9TR6Ob(4&-0%_)7e9O|5AxQtn9uFEQU{1yqOUdA?^Dh0OOLn6HMQIQ{v zJ?jc^baR%;WbQdALMy>ogbPBR({7YkV-~IP^&{#)9fEN6&h;)x7QlE>vm0~2uD=#;mpZ(|S#Q6B&XFexgIs()}C zfkB03u-64Z^H6ka2)_PGJg`KG?DCsJuQD60rkf5qn`!l_9!Wi_CW9sQ$5K{(h*+GK z@hoe4{S^VH_?u>=nJbz=3Um}DM7_1OemIjRru9;U{1nFXXxtDYpln@y$9Y(7W zRV+4}B#%ok^E_&Eo!ECiNjZ-83J#KrrMtA+LXsb{ud2A{e3)#qvB5TY#i{*K`Q;_l z{@7;$HsBxz%VPJ9-h*Jq_EfZL3ahwVGHUEKGa922P_A|qTQ4AuTKR3l=(b*&24{sU z#eVg`acNt@vFY~xI?05yNK#H;B`p<)tq+Z_fhCJhC`>Dt!ke85<_dC;1)5>c~ z7Uno@IOjd~7!&t0k!!!-qg+va=5PTqe$@-&QKC(4*y`#w!-dHULQnqLJDZt!*x>P| zWH{CUycs1akr`+99q3FsR_djG$gB3b#UUv}elc@GR8yElY84d_L&3SB+O;*xuv;1~ z3MToX+48GrV(+`TgigAm45!kW`Ps2);2;D262+#3qIaWD97N9XMKD*t`0XTco}U`z ztMMq4CnQdpOOa>sUYx`9UX#GlrIP&;v3RMt{)T+M=r*}00@pp13sp521_H_abM_5i znuQ$3*dJ8l4SU4;m+QOmrqXFq*XN{%%(#EH1kA!0cHXO1K-yw_O9%6k`&y1*E4vU& zDIrpL>;&d60V^6W%*mkUfTbq3{>GYrV8wMu(5*&V0S?P#-J5*5vrcfxZMm%D20W$6 zvDfd&mC6*!)F94pUd#o`#)B#K;?O#CM&z28c|;?fgqwt*2%0Ev?jp__5B3ktsWZ8tCj# z)~u`d=cYL}r{hrZnq*0G$vd>(e>T*2mur%Suj!P`%2RJ%Ff5(23faBFzpwclkxU3; zFKxZF#k6NEbx4>kntnBt-JB4++@BV|Hs5aKF-OO(h>}5&1?MbyW`QUB(Db)^?{UE-yLF!K;m)H%b3ZoM7mSyNAq}z6Pbkk8SmYti6W3Gyc6a zrG2BWEz4qI?2*q7Rty6|@Dh-&b0LdnKZG1?J6b&h=G=x)8Dy1ATT6P)#K!T$o;iCW zh2>iHShH1_b$rCj9WcFZVc8j3slJsRk1^_oB5Ku|!J&&eNxIwuFlD!AdmjJlWy#Ew zf5={{z0Iir?=xffS3RH=9yzQj%#dVt&0(Kv4gGdre90SPF_HCj)mrCBO%q{3uqWgk zsk!eQfB6I!7S&MF!CdLIoa&qN9dQFbA)>mq7y<$~-B4A^cZ)PJM%PuR(+uNIC%LWGd0v&=GCj#;XI{-i!P z8m9B(_=c7#6Il)!m(9x&W(8j2NWMI>w{pqf#8unv)vKP@EZ^Zu)fSN=h$QE@K?U%eA+1mLX<$B$}p0QjHJ|1I9x+Vrm&= zYOEO9^D{)eEj*6;p%J|-%e|bg+mQ(_B?g9?;Xha&I_h5QE4>qh75!edu!gN%FNr+Z zrG28;Tb%m#Gp!2MWnGQv-af~9v9JE5SqLvKlaVsl{>Ic2?iW>d9gV7@52WDN)9bR- zaO6>adZMi<9kc`EdGhG)BWCS@{5M(apzDVl@>gz?TBf?nF1vaeh;Ua0V3G;3Qcj>( zLF%qnFDUmU8`Fl2X@_${qqL_Vy-^huTdLQI0J#PPn5J0Xs@3_UV8d5hV@F$b3DnfZ zHqFM=YTep9S+sS$*wWjEaCZ~|&%b>)tWsk0R?{3w*i=O8)6>a2_RiT*>HYD!D9B)e zd@?RsuJ|%^H{;L5CxYGWyaA#BG`E4jN&a5mj$r0O(Xg;^NdQ;cRS?sCRq@$VdY4DA zhoLabKYj@eWHjx?_le(sPD^o#rQHT=aFT>Cz=T%7i(Q40Xn;lphKNfmVL|mIy zjopVPcEdcrbG{M3<3*ok06-nMgmg3dZ?+>j( z8=vymBv+ltj1OR)K-tpiMhRh`aIiywKS1WVQljG6q>GcVslU9mEdx&}9d3Iv-Y%)b z1S|_HrB;Uwzn53*8&sW+M(17LHTh(ZJ=~1_$%)sF^lsW_zXMKYsw)v4Je^gEzpVFs z02ME{Y_A#9q;s|3nA%@!j_c2fu4dy>>;;#a_QG5!y_tXT>b)iH*&a#38O>`!H~aL4 zZSk%5CF>v?ocbk~=V@eApZEVDj7ZN1-Sh)74!|;f-273zJ!sJ+pBUm^E&cAF*{IVu zC5W4pVh%qJD+Y{qsnX?ZGKS^ZH=AQ=DkywkZwTaDQ6dioNAnxgXLW8gDYDwG(|E@9 zv<6>4fG^))3(#3`w_>n~@gXm6G|F=YDL{v(=Jol~iuul%_wduf2WhqpfTYH76~6^> z=%(nVj15HtlGoh>}=JMAwSun75*En9+wJIp=2$c2)PDKHubj;N&Xs{1$an zleMV;%?7_poFzfllkg(?^M)>~(FXQX`?gL5S@7n$<@g^@w^q`fRY`DtE|HgE?`hreK z;oapgcYU%oYNYDEa}0E`WPa3j;cge93>_zpnl2>=)intBT?dZ9qMTLA7vIV507dQ7 zz^z@qVn7R2cRP&%bK$QvVh_Vcx#BU**<0bj70z23t)cK)_{D44RXFSWZy=-Kx0yyt zdhX?~-4s=Pg2;$y%0sc z4XFm5l?@kM(eHG<=olgJJu`n@fBk&#w_*Cjm<;owGxJZUseYs3n7Im6tY+JHVBnF| z?6yPI@;hqbI@c-Nw-aU;tBA^7iWaT@JAL$nqH$({AV*DGh=M)MOw8mGUx`SP4|{~t z(2)66%zX(5p$X)I$Ei#O*mcmg;W?%u;w<*^l%;I)LAe-e{*SC%JIv(w_f*0ym4ZWA zK`j?2H?~jH^F!KmLmN}`2E|s^@kX2*(k^8CLH+G*!-Z8DFr~3{y~=Sofwma@G(JHZ zWab=_JFfeB&NIiei!mJDu#a{}qrNlNiKay@ z8+&X{O}ClQmWXPfAq6BTDglE3K|L?8_wvN2OJAz~T^-_qbfb(K?T{&L< zn8_fz+jRL?^_}qUrt|t^lwgUFW>%@tlEE#TT7fLa7h)u8{k-F449ACJ19Ns@Yvs`| zj>7%ty`$)tr4qmJsd@Bu5Hn?l#R{O9OI4jL7IH~Ii}NvJ&SuR|=D3>Qk}Y1uhw9jz z?w|{K+De!bQI)%rzk9GY?mFl*T&3P`mjKrud+cV#UNd}7Hyr>|-`>h|7Up@1&tL1z zZt_-|p`%OHjg=SX+@3Pl0m3KM0*gc$<_g6#?o@ zl7m+R`GTRwSKfB#cxA=Eohcz+lz@^>V(g!brWbiX@VHR=C#<&r?#Fwt{@Kjv(YCf} z>8^hy6g&~)@RbXo)l*n9=LQ+fXSJG}*MJr}t{ltCvW7G6PT`f~*$dOOFl7t-_->&g z%x%-oug^IgsqbkLw>POdAou!%##5dTe*hi`IJfBXyw4Rh(7xxm(2MISeqXTL;-OMb z*-e%z7%h(U)bragqbGADQ-+^*2(x++yy~;3Tp!{1dmP~(U`4c60`s5v>WNv$YFqB` zI%#!M{QT!`nR?bKv}Ik9qIx{|i1N7T^^mU3L98P48Vu*|$I>u7B~ZG~xR-SunKjF& zGh-7iFBK`cyG%dWx)e}IFk*`i`AtJF#Q1K zLO>~PJD}24TLmS|Qvv94%9$IbVDJWx0Ir)K$T$!$BHS7>EkV*|x+7ndWMCOrVV_EW zh3TgRPxmxK;ng3{dxq{wZNv1q;!zs>9rVrp;88CB>z-Vu?=H$wWIWLn0w1(qigY($ zEL&c6y|~}HVHucECu%qQex&Cb9QRGyiZt(-rW&6RCyk%@;1g3Fd#`E=KS|7N8WNj> zVnQoB-Ivsa0NLckM3>LsY(5WFMHZD3LAnA!m^%3zrrK1EfrPXi-lOh=LKgag!wnGW z`?fEm>W~J-N*p78hboYV1w1D5lXRYJF$r~P;q*06V%oaC4uOtuiU;d8+!PTS3yqHr z2!!JucukK*y06#Qg!PS%Tah@NRY)oS**`dUPMi&H<^Q>L{1Mo8)R=~!CzpF4R*#;q z97n(s`#UE{eOpf9e8|jbUjdY*;YXu1QY`l4l!%f?pyw;V2)5R|uybK3sR+G*Bgt9T zxfOLW-Sm;b1syY&h3Tim2Ijr>*Ta>q1#VEG+daA44jgW9O`fAH3GH8RJ{`aAjZ{T6 zsuH|6^ZQ0PEaDrbn*j8szm`x=+NYac+8sgOI_2y_k&P1QU;Yi-)CV7OyuSWdJlgex z-&Kt78A!=QJAEk}Z133oB>1j}%g3QyuYW*MeY6j|y_De-*TdaKPa3Y-*VH6HxNa&B zPt`oWdhkDkW$tHPlU{i~Pg^-$b&=3?m#hXaffv!p{cx?!$TlxMuCf`ivhk zHSD_eh2qAeso{fu5JpWtkxs&&490^P-GK(tp;UTs`)gJQPYm|~VQqVGqdLrJ^;u!I z=j`Thi5_(TPSQ^afOr;VWJ7i?vB(Ai-s;)Mq{4h)5-JZIptU-Xi+uozoN{|^Rk+!? ztCWCsyjR2hPxeR^6WsD)yP_+k^6}drFeT)9wCdTXssy&_t{i07$;4GdJpTqO>j`x_ z*s>XnkY8K(HS|<95I6W*BG)95d#+BbRsQFH>dAW6+VgsH0z&Mgv1o;ayJ4F&w}ej& zm$VnKrbJ2Ne2A!e`yb8rBF zNp&zm1}&@B6?k2+`e#aht|p8yD+z7os1seBegAAZ6RsHL-gc$Mn`OyZ(7?)k$-EjW zDCUG%xh-X&+a-dvC_0J;+C+!9WyM7~;{3_*yePhQ=4q(OwtV3XPBMS(^>yS>(0>#P zB$IaQbyv0`GpddP@vadfXp!VO%hon9lCenA?dK!?hMSloM{h)cfc)rIUWFA+*?O@U zrJYv!aPO69TnVk3Af@QfGS5&A0`4vl(h?WWD?&nC^kX2TjiKqK_URViJ?S0QNASuV z4Aa}xDJcl;kLLDf)vZe_QNZGL_UZ+PZ_6(wn3|XzR1e2L#;V2CZ{8|lZ5%&!d&EY! zJdKBelZ|sLsD-@S@J+8RmKR#nf4`7TAwU9nEbtO56NTKXF@rNChnZ5_c7d^ zv4WP?I{i$)iqCSStid*tvP*Zt>e*JigLHaqu8{dlz)b8z{rL4OL9Ul^VG5de|C~%;q5OL+QuSnr$A5>F<)&HEl2GoZYI_ zMPZ`Z`fn;+bq<0lB-FUs#tE-AHO776?CE52CjVTo0Nw9xZEHCMHj0_5q#ZsJ-Yn_H zjphO~Ojx=f3c-JqKOKx_Jv*`uUu!QoTYn2B1}MmM6%lQl_`-a+p4b>?R6L!fKye>& zYHZs#CtGbrs#Ma};ThBAgv~xQUuG6Ijchd$oU|H(sjY=;jBh&E4KJFpIvX^=Vub+_ z4L7@4pYLqH!p|dd!}5xDRw4fVXHPpr9N1h>nevJ|tY+2K;)(2pR_=huhhrOZbxyl) zQq51x+xKt8wtL2GD)~)K>2Q_govEGa68hPW`M(ce6CPhaTTOG?1~t?Xi_1|_X`f!j zeK{}9kX^#GG~pX?&Dka`1r+T*W_yn=w`P`7?#vcln(JiL}JyYr!2RbY@ ze?clPv&9G-MqkLH%)2=mSSPVzx}8|+kN94QRJM9@pu5<)fp-U;l?cY31@d!CeXC?E z?`5IxSM0i(7>t%oOrxccMjNf}Xb64ZotW{Y*_Nufq z;fmAY;bqgtVXefQFv?QD6)fsX4*Nn6xtL|^I5o1RFZ+f^)14oV?i+V+TAiYNXLXVVktG$yK7@;%r;%6Z_kDl(ArdIb4 zKUZ!*pO25NLd30aTvPv;TUbncgp9T5P3uA zAd%K1U4Z4b@ueEwblCdy^JikY$Ty!H2%7tturrs%unYb?m+f}c_Z*$s@MA>kA!(NH z$e)!9=<*hS;e$hq^Y+Gk?4Ufl(x?^otpEPuG{?@g&~x+QN%)$)Wy<3eU(MdyCwSd< zidphSbK}xN{7r()WtNa~42^~Uvfrr2`XFCGw7bxM)U;M7g<)9YLd*PAbY-i|@ke_9 z)8PC!AUPi=s{c|V?lP4h(49KtT^HESROY&rPPz9sC>32?+D{G-R$8&?pRAHGAzEB% zXBRi8tp6Y^dLlv^Z%FwxJj4*|{5kwp>O96edm z8jYzdVwfguBkC;IIDVZ#52Ky6-eQL~gKu8e!Rn3gw1$r0sO*5}Uewl5V*wJr9xu9> z6KxepArbQQ^{`+c(9bYBA_E{Jr#T%Hq<5S9RNV(K2V*OzGkpZNS?ud}d$-*fiWRyz%oT#kyd<6@E6u zD5yGm>U81oXk+O;b44G#)ocC!e8*Jk!EY+c47}AH+qe;DdH80QjFKpy5Yqvy@LMe9 zy|qO4G)1Alrc&gG0b3B0n}t0x5@=t<@6#p#?F$eKN7}*j_7n4nFAy&-g=?expc}6P zx?i6yJTu*H0#WzAdh=2??IJjD@Wnn4>5c05uOYQDe-+d>E+-xsB**>sAX3$t(McbI$N;VnFz`n@?fc=gdEaW# zjre}S6500OIR-+6`fGBHy2A7k7lvv`#oYtqYOn!X{knRXFVMn%_Z7^3i{px?blftf z<>YW*!)eMbA>z2~DyX#0pwZzhdvVYr;K+}&=PK|%TYBR)|LSNrRLl@_>%Y89lV*T- zN#or#Ic(U?fV(V2jmQ233zpCCQPymKuK28rTGMmYbL4Bkh%gO~{zO=OKRa+#Z7x4z zto6Co|Ai7ALe~&U16RV!V$ivWcel<60Ws~2=^>rPL^6J(xE1hNQY7d9i7xs$URl9M zo?>}}8rEaax-nTfYg}e`JIJlz%|M+||47VeJghz~ zR4rp?s2i#fo~guPyiDs(jOnaA0i01U6)rsFvSgO^f4fA-HnLMVksWJcH3QAS$QQoH zNitksu3+&kMGo!R*7XR-@5WQnH6cI=zFKST9~kAzkJsA*ZOjS5sD)O7WLNrk+Xp*e zOIj31irpstV$A#y-}BkPRmY`c-$N7kxXzF`2SMCLUQ6OrZOflPn5u)M-rb70Lzz`D zV`RMp8m934^-LyUO)&?RXRwXI_H8sRxFS*r+kEGz%sS0Svw58!zm5#A!SjwW=TG{% z%t(0#zj|RVxoNA`A)$DwOw(KlVxH`&J4xCAZGVjuE!FADB>M_)XguEl1&KAC?DI0Z zobZ!7+e0jwr5JF1X4t*lc7B$?R`pFs@8?%&1QonJ!b>bG&m>D(X)M{JCmphrPOEWkjXs!!HGf&)^$7K#aWAsGrr4k!hh z=e5hufAm&45o$Z{kidY_h8!n)YPELp(zRMHS&=o!R&lYpl>s{oOqV136Rs!#b(*W$ z)>XlY#xJg8A_vJV zGk5kjI?Qb`_2gu8bHE{ypeFQ(c2mG62LCQCa^F4#0sFSbTo@8DQTpZ7C$J1rq4cSM zD?S6E9$8A~SXAseipkslO$W3pYQFqeVtdlAMCLF0$3|>7fU{1{E;pxr{qy@-yv6)S zqv0y*PapI z{a@W|`&D_nmi`lz(4Q^)?gX5o^aPCRy`Xpb0c+#i`PNXLf5b8&V{KUVAF*r&k)gz? z1`Y?L8+@wsOpcP<2@hv>NyR;CK3RUjRUS+5XFDX@&2Sa|GS`Ipl(5;39#%*Bo<5(u zf8ZCpgF@KGkf~L47z<1#~8&@q@2`ylYcPzv|uMz&%GPjDgeRM$?i7x1P?xKSNYnpx+iyxnzWI^fCd}RZ69G#YFZ0;AX3#+XqxB z=LfjDfahA`{UEM&fDv(fsu{d=@}ulf(Z=krjp^b)x`2GRuOZ+t5$Wgo`_J~*JLid8 zeTI3>O|FyNA#pwa2+nU#d50`H{U=|u<~)UUM0cs}9_AARb@aj`C07Q@uf~90to#L+ zLioD(ufJrK_|Y7!r^T{B|Gvo(Xr4iqc5}S==OG0hYS)caYw=FprhSO~p0^;m@|=#n zb#~3j9(|Ln7<|jMK;&0)?|qqQ60}XVnwfx*m1U6LJlR1k2mcm};|Z4*i>}EX#B8HX zx|q)E%-20GOtiXm`gz)GfL-p?D(0FJGWr=8TEd+<5JaW}KfPy|$13!)(2mlag&L~_HQdl}f@V<5XcUL2>m?<`pmWg?( zE&gV%Er*W$udZcT)Zv)My2MBy7Iq5QaQ=oExs?4kmCbI&CkO9Nd3EGKFBL!9{Pp=F zl?~0TS*={HCKq&<;|a$!AC{4C@n6K_cZ~XfoN}sPmRpVV zwD5M@CC^Kza|BeeVs1MaZ{8S-t?*lB;}r6UM-^E^JjarletQJ2;oHxR0cT)46iBAOjU}$Q8g2FlLC)H;$)U+TOoi35}IjbCh5; zI~dGn%XqNq>*YLiPsKvieRX~=JCMo7|7A{u3|*WQ9RJ?~0=s!p!%QY3S8kckTi?90 z^I*s#kP(g_Rzp5vcoq>R)>?VGRWJ^RAh9aR5O#On&&c<*S6UhUlWG(XX|uV`c+u|y zAC2X!nyK81=`ateO}Mi{V+yJFdf4rqPmZuIP_i4u{Q{=jpY2NRpT~?QEk5UII`}%! zpWEPlZa)poZuG!cQk#)NBHCYJZqdgvIG@D`Do~hXvtz-`Cra{llr-|!EX2A%aA*Ok z-T(o4R~PHPNJ(I2uh`Z(4xRIjg@~K=uk7uA7Hif%lu;dMm)eZ32V-b`7{=rh8ulEo*U1 zgQ;Sm&awh;HR3)}+u)AFqa?8*B<-z+Ke@R^)VRxmITQ0){rIsp6HDxZsHG;_{N%%&hPX4~XxU9_B3q+CN1J+X1)r4()a2T^{7{bdACj^dIOs{L=o}m;$Nz76m?{tOy|C@!{Y#x|OX>w&EkKc$d2>HnXMmB>HRe!cJac`%%Ne*wI1od&73(Bm3j# zXOX)9X%9Gxpe7EUn4)~5q9yYC8hK9xcy&XM@_c5@Z3{HwDR|TkEZ#>!I(VxW&c0i)Odq%&|wW!P20l_2=z>R5F9de&Xd1u8Gc*aU7dE~Pd z;!V>yg-YV2RtSDEFn!c4wda@ptw}_@NH@Zo>IF_ zA?7TF;CKUgof%}n&8F{d8W z&)T`HndE4Arq!z2kgZns!?)4N=9^St>4V#H&6~Fhgo+#Y+}(#P;um#@?n={+gH)0 z{)-C>CrRs)43)lhSGY}ZZ~N~;-!zx~BG7zM{d)apKkHLLZC=#F+Do2L(Ga==JE)V*wPDUMv(90qGr7K%@(ZbPxgQ#L!!a4G?KUDAGGf z7YHS^h?Ge0gdXXHDkYSJBzMPh&g=J`d*A1|`wt!ylRY~#v(~Ixv(|5oSeuCVxELWs za;VH!(bWNskoCk9tS7m(7Hl74rMFhHI>3Kn@#mM1mPCC~zX_LWs?Hm`YaC67xhGr2 z|9oo(wi`?5kf<$#NMjSP3g6}t$5S;foH8yukNBIc0E1K6m zji?_Ix8q#JaXm^+aXzyusD6B`iKngE#4y?#uDiA;#9qn(#rcoboah2{x}*;OI2Tfj>FSjyVwT9h z3#kJoWP!ycD49>Uetxe=OMn;w1VV9R-tyC-$sBIW=9o^6n{ju!G*a2;pY4NA@#tjVo5^ZRaf6kZL(@HUi?~$QF{ZXdL1>mUG4hm$@H+W7Rql~)$Wd~H9t^s;`U$%# z^vONJRpdD-be~UJ$LVh_7s<(=hH#XYuTTSf`|j+B5chR|CzF!IsCxfp_baug%|7dc zQ!~OqL{ZV`oQo_Y?t#4LH&T%hrhO9Sn4}h{sN-q z@6yFSr*pU+>Cdaw!!KCfzIH7ocx$3aJutrz_Z%D+%iq&i|G8U5Gb;fKT7++iM(b#e zJW?FJ;8$i%3GvT6Vbn(7*^+ge%1pMl`F7E*ugh8`&LdvUV|iuEcbUQ)6$gW!PGT7v zrE;CVv^DeN?xj6myDd8tHLG~X#eAflfnO|J$^k6rz2Rwl1k89HefEY?dBX@%voTUDfUU7SghL-DJR zQwDf$1`AmT_}Qo4;q~#oyI)!AXBl2BEVq~=S25PFV1Ku!8!k2+azQ{x>o11zdVL@} zoR|k$oOBEx%C%{|rDQpf00d>bAKonJDz`JAK1a7y+vNrGO=i|v17(f`O_w{_84+Nq z9i501VUWenfCZWx)?^?OVxfX;?8Cu7iqiA(gW>nguQ8%?TN9Pe(D8!?-M!0U1Ky{* zLAy=^BcVe*Skz}`o|Awg239YbD$Cv3tw3$zg}2}rjHwrkJ!OC#tkyze2Ixsq18!UgK2uvgaoc+I}=f3z*5SQ&UNgVUK>ZMJ~IAirGS zaEh__mEF7&WNKn4>Zm{8U$u<#emArcpz0?SW4Bwy?O%F31QFXHuxgUq%EdpdsKOso z2gsZaDOdKeJ1m$x@AZv!*4AtNQpzj9veebsq0D*QZHlwOO!R2QtbocvN@l>h7*g2Oe z#^<$^)7Zh}y=D`N5MpZ>BwD|PH(oO0SkkGoml?iPv0cf2Mn9>7U$)QbIkjnDhXG41 zP?VQxT&j{@xqxt^4jON?_fgJ^8CbCHOld0^0wF>N6*l)MQYa9U)*e#Aoj#6XOF({k zBdyi4i6-YWW-`F*`|c0r{1FDT_Z%Bz-FbsZc28Pbev3vU~?tv>dq^HUWNlH73nOzexs_O${L z_h+5A3~W+-m#-&K_3ZV1-Dl;CKfzbfvotmHCo=}8(?8-!2o*~^*AL41XciYFZnwO~ z*9P8QWzOtFCm>5>|D0v!3i%TV5I&r^GFcwo_ZbUm*SJhTe9TTQi-D47*o;(8DxDAg zo_k%!{`P3s(o*;W$mJzsS0w*Cu+>Ct)!dnPdA!-!e*BC1wXeegLaYjbu~}RXPhj8W zSvK&VC@g6g;~iTTo2R267TSBGWCl~gyJ zK27Do9Za!B)TeJ4FLlAh?IZ`xQu_K^uEO<_AI?v?S(;Vt=(-`Gh5IhK1`KhpA`(LmJ%F{b1c_0fwk`b>E1stK}*xqe=GMamtlAu zkDXPb4FA)*m|&HYC-biCnvQxr@BYXQO;h6!hKC(R= z4_#+dp?uJB3rpvCkT_i zes)qUN`h;JQVXt3oj*>1L$BBn>db+n^(tiGG0VaXQ<%Rj_!AcMyR2cLlJ#2hxARUy zj$udp@NVGxDZK{&%LXe2JBsRCJT$$Jma=YnhG{Rh}1bU+?LDY>h&-C;wmyA#_NOu{pB_$-AVC8G&1CbkQ=t4nn`7ruu- zk4NOv%fQ}Ct8C{~K45XE&)dDqq9p0d_c_<_3DQD6v&CN!Fw6Xoi+`JO<(nFL~!D)eg*6JS?b32N_Oce6jlTyNFGd9|k`9tYW^xKI9w zqpH6L#8JsN7(fbi6N^s8>|5O!SOsYuK6yd!>I5-=?Y^cN3pN@QJf&NBkjhSH%~IN| zsM0MPzL9O2lU2FHdaoPj==z?MIys~7RgU;Wl;PrEV1di+qSv%#Bl`9{tkzmG)kn8e zH8Hu5lZ-nntmz}R(3pPS4R=QN6ToLp6yN`&aQ|to3X90jxo6& zK1!(m0Mv`XZ8BQs^4Ie$II;mrVN8}IsCV>5G;RgP!Qnh{XBrp3=85-2BsBQE!wY?0 zvFW0*vIE2Qn*|P#yNu<2Ytaqsm&ZbIN3UJJXWoyk%M2_7&X55gV;$noH&)rpZ06#Q za1?qOf};~TF}U)xx;w6Xq13z1fpu7K4Kwkbdx)#6=2AJ~ z;8iO5UUh^ytmDWGkf8;?USXbIrcE9vwjEb5^SqD4ETjklBO;jb-VJ0B)_8Y{m0xqQh-i@PW2c;%)DtlR~fyZTLM0 z@JshFHU??97ET2+h>-|9%Bj zzf=dgyF@roN=`HvcQD4NJ_VCzo&FhxG;%wm*8ySiEamT2W4`OdQ5 zVDs|`Dl1%@>Ew>1)Rk5*`{b^OqhP!nHvattRvb*b+@MR)y3nG@p;}iY;PX+AA^&j; zW(V=5p>WCR)heP_IDt)%yF=98*shXJa=~;iYEEeS!RKPCM|5 zdp)u(e1p&Oa_)BYMEKRdoKiz@vQ78+!}C!c*#@q3*QX}<^?J73BM?)OOu|)L_a4yc zrbaOkU_o=NPoQ4~xsaMc>nyB`N8OVoPe{wD6>qkrYf2d){IYyrsgHV2`SAu%7aqi3 zDBz$41o>gRMqBI1i)}j{rIG)z+#QQy3pZ@s+H(Wa ztm36T{U`6W6g4HANLz+uROuLWQ7o1anVk`prFP#Z?88lz)T-8b#{QX|7vb(|HxyhD z=Uk|Zxg5(emE!;#k2$JF7rawP&#*JA7SUoAwVwX@B=O1)S5E2k$MyQ>BsMio$>x}*6s5PvEgZBKVssv)14Zw;LuOO>PUk&T_hw8#m0-@LqgS!vbb>URVF zOr1|boLw~GO(WnH9XjUO4V)HC&^DGeSVhbO9APKOG-&E0-Pv27qpOX}XKQe{ zW!?aOJ0-$Noye*6s=-|3i)RT%ZbfFT%&wj|ojKH#{;hrDDu13k%$s`sjIlZ&Du-Fk zr7#EdhC9lkGlXW;ff!29O$7^x=Ja5gD)g*%-hz4h_QPh+9?TgzH3qncnKDQ>D-x#VU zRSD0~C=5tka@cj2(`fOL%~|)uwkNYHn$qhBLo)R$sKQNDFZrY+3k9_rZl2#P$%bst zA82RxoTJ)h64ibv$H zi($^0+;3>i5!>y|9)6X9cxQc7`|1qI)@Am!WVd)r6@kGP{vlNb&k)qJgXywkiN}Ks z&*@91+Jp^&2jSL^Pp698Hf6H!1C&}|k87HQNH&%)uGdgINREFK0ZPqpnfhb^foN?F zo2QO&xTs@|a+`2e#oN!BH91ykQ@L{YXAF4Q3hPpRnqss$*5cjbK|_kzAbUUnnajj) zxyobg=nDTiQpYiuj=h}SR9Z3~KzT0*?z3#LW;&HL+(T|**3w@=H#P>gGEqh^y+1Vb z{5l~|YMs5jC{+yBeiP?re9=|?Gpz$DZo)UO-cEBg&QO3&s2)+L*_^&?Jgtt@Xfr%{ zy1x7Ts@dHohX<8D?A04jNN_nKd^mXnVj%BKAH-Ee{B%9cpPlK22lARoG zN?zRUnbSfT~5FIFAj@hVWF-AYp_h&A9;`if35T{v;n zb>~8dzGiQC=P{|LvO%t64(~)i7KoUQ*gR_Uk%90M2@eSGuIyEmF8oCy7U70($w#5g z-Rfa0oyZ7AkIBmqWuGk$paOdM@`5jRXiy{%j(B!h$`?mD9$({$L(3XvZNn@@>SS?Q z#eQRt31-a6N$D$PyRWHUZo;y(wLIjAlwVo`TJS3>+eE^te)jsOU0%?QY?Y zhxp}NehVv20(?@C+uB#<2_o(WtOfY!;A-wyAlCHjYr5PPC%rpDT!)Z}KFfvL_bRm% z1HSE0ccsc)S^!&QoJYYe*uWGU@ezthWB(`#=X879F-^+N+s@r5@@<+>twa zt+YS$B5!v`aKX#l9)73VEa~a(uD_%Jy zPRPr2J}{R%By{(KR^wZtabcI?!`Q{=PL>qBRd;ZzGrH6CO{v+HCw2G3!HS^0GN89* ztTF7fsE-gIRUK{~9b&?z4y9rAY_9FF#o1ZQ0}9P`a!MxQDf{+~P4q7IHeCh#t;M@# zlN>&l%K2n^%f{J^N%4l=G!&KZL|JoHR*76>5h}1$G%+*;rG&VS6PH{UFctL|f@@=5 zCFOqJl%NIN%7)%aHqCQeieC}I-1`&VnH+J=U=w-M`t>nmbLJJc6iCrkUE>eCU09*r zH^jSd1hajU>0jj)s$cPpIFr%;FrmMK{az3r5hchceITpnhyZ^eJpy-llelw6UV)O5utS!*r3!?5 zdd!Ni0Kg*dFD9s~{H>b&T0r*SGsPsbC`vJ}p^To6COOFx)!gcJmp9XgH6aV@5GtwO z>rOphr6}Wf)U3PO zxsof>X4_}e2Uf()+^g3dZ193cvvH_{Dn3NrE+`&9xQwqpXSJFoRGGUxQU%{@_A3P7 zS9iZK&ibBBNQ0y)Pu|dV@ebQ#^%KRlI)gP%BYi#sK&zN$L<+iR+2MAjguQ`+{nQG0 zDfi)dAZ>4+&92?WJpH-3@9z6!JlkdTt~>o!enmZ!a1Y&(lAr^3R4s9+O>X;1cj>by zkT(!`W=WW+^8MY8T69lARqR3JwZ)ZODimmGZ}e`lG$qEYj!^x{fj|G=&7RPU{iS}9 z++t{w=||MPg(Snb5)9#TmDUuhoBJIKrn8X2AI5a#8V&N)%|aXYGddqNC2s=6#ZP0i zrM71#yX4Q;NPiKBnb-Qi!jo5CaORod%pDIwOZ~_i$3s)zVW00{PdD~q)X_AxycPb{ zplIORQjguK5B?1Q0rdm$r2V&DByU$W%}7=QOwVT&#ux=odQek7OqXu$axm(;!4*7* zo!ioS=$}GDcOc^(E%8Mq6=ncv?8uSiARPF}lFoO|sdFii5ulnXy0U#S%)Rvo#tVRM zQ2|ISH|d)xuXurfFi_CC!=eDuR(j>~c|66SBYUjaz?-)sAi#veV@Mm=)~>xUq+N^8 zH2~Rl)!#eaR&SSu}@QRctayG$751INN@m6O9Wuy_O5;OqAmvhVM2Kr z12jOjT`vq$TtaF2r%n;VLVz$zOq%(AHaSUd7zjw-2Cd~_fr7lCBLDII#7Bie0MrdY z3g0Y@ICeYkJKWUm)ejOc=m&|{_P=+S8EtwT2brC3vO$5opQ_%k@4qHuir0_BV#`5& zK;CU{HH3Fq?Z=={e;*V|Zvz8DQX|+dpAf!t*mgx@b=hfGzvK;RInP4+%TMwy08l#y zAkHSKLl(cDZkzuE@X?Mucc%hy#@#+@uVXi|V_oyU)J_}wQjOp7md zZyfSZ5+{9IolJm(U!lo{ZRs|-d6LF>b8om1vAe6JA1O;_hb%gni<1EIFdzp1`5XpP z^>HU|bZxpurf2}Y*=jl4@TvR1PQtbOulcuDjSF^I$WLNPBnHw^C&H@3PAin`xwKRY zwVH@^Ac>ds%ggvA$qDaw>~u)`$B_EsNP@EdTZC381&0cC`NLLmSo7vay>B4N%ZhW; zMgW<#-=-{=v9?EpJhYyb10MCru-Jc0toCI~qiV0W;b8!lZQ*FX2>$Bt*x&VzU(ZeX zD&@LHC8~|+hMTI#LAOssoR{43bGi7X0OXbm9?Re#D5rhky>Wb-Ost~E0_T4kyW5+o zdA%qf|JW4rK2H>}$e(a*7IgQ<4c&MNehB%DxjHQhx*y-e9Xu=Vzb-io+Vfh?j|&25uCk}$o~Qq!r!ewhArrMTx2L~^kvY7#fJu=f z&_k^8BE%VUUzPDx_yNc-7RXFUCA$eQ*4Vi^Zsw;P3< z-o)T{Pr6ak@WRMAvWD7mGNs2ipwk>yv|q?LU^2=Rx5(;EP+x&HLM;J12_>!U0265p zQ0F)eA8ZLZZj1yxF*IiCP@1q*1;X@IhBZFSftEpPfi9Rq3Dn)j5ZXl`%F)4CiGLm_ zP4<_b`SsrO{##spiIpLC*s6`*bOCl1+Rk~FPI=rmQZbdqC)t12ywe`UL@omM#k&#g zS>(fPGB4!NMovXGbxC9D8L8*#)X?tUHx^8muK9r|zCfTMYE_F=;^%O1aE5%vyBtyD zbhc867%o9#R9SGB$G4cP?~;i<&=k_z!QK+h`cn)ZV0ZqyrYSyWK+FDm4FJzARCUCh z7!uWQ#er^-Q%Td>2_zd~w*&DKTM#FCc)1EY;mfd8LS|s85Rd8rqC2KGd3VM={guZt z$OCaq8ZUWV6n}DdqnGSwpRfSkz9CDh=NS_#y%1x!%IP|!C5P9>m&cjsaMT^p6Z@n$ zI8_#xzcaLdJi_gjf9o*L#7c)C5a1)=3_je`PkBnxXaFCQAx~cV7jKlhKP#4gIG4$xLF%TN@(Up? zsqsW*xejdp(`2Fkzes#ku*P^y3kcJoAiP0x#dDC>Nt}I$691Dl6{}laImkpIm9vUe0g%rFuS<@=*}etv>*_`w z>`lp9PQ=bO#pJ5=SE)ZBH-38-b(RE+@KYRz+R7g+DZ`N4uf#DK^7#JXxsAkds=sfP z#`13haa_#lq+e*GnlkEeaAMKAX3T+947J{388t$s}>UBF|mr z5KQsC_W$mJ$$yi;&4kKh4LFmWt)k`Me)&a9@7Fv3<(HTKU^4%%WQGBxwcoXY!VNRT zUFiP20MDtfTWjCfFH6Y)PI7muBSsTLK3s&o2G(6boJ#)@RCxRUUQl&)itVJoD#UO3 zRd0!?;DNQj;l4a0yJl1)bSpA~u|ps_)o&-W4Rg?#2@p*F_ zhhMv@mLeM5UN#T}1ehZJnefAutg`QB{P&iIKLXhGfxt!Ie1F`9NnywB#vmHoWqpV7 zzofO~ZaE&KibEw>;}03T5-Wl60OiaX4tQMp0EwzdRgRBs^laG0abivWk&BD7?x(Pn zwGoQPYVkm~eK%6lzpLGmBkh6WLBEFdxy*0Ms?Y)e9#hILJmTHZ>i-r}4^Q8srPAW> ze`~?={7Mcd(B|Yc6QBBec7rMnaBLCBJq3L_lJh4(D)#AsZh(5H$om3)o5*hr*oDB< zOiJ%=`UG$S!^czWG4PutY5wB2yO;jtwjcX+K>#7+qW)`cTs!}J2i@X~Q>GM}2stTI zU%;d$CWB1OSqFsUi;Zfas1y3)dQWfny~J~OkuTz6Oh}KNVzA7aVMEkr8l>?cUM*PG z24HlA?7W(u=43kL;W&7+DHXW2;lG?4^|wkogis~ z+m6AvaZGhMaM6Fj$`8w?F}jbYQnRKReC-tGxtLQ-6rWu766C5*s9d4$v9)j!!0GvX zSZt{m*(3=!iSa$=ij$7bv#gECxrsU-uSR+9|0Ob;2|*M^u{x&lOHptf(kIJH+`kBB zk8uL>bsG*0j!FPNt=iVP3dSII{{Gdrt0Hx4*Vv;dyF=hInElruQttmOw3|Ekp44TZ{}QJH2NvrDi{p;GXwUYRoT+?uXzk{P>Tz?coNj0 z1l`G|+nI!Vw*eYkX$E)Yt8&WuvJF1e%--J`MIUr?E3ORmXlqZELi?S#?%WXDb zQhfJ2P@4Kw^IMsZe`#p$;m?LDq!AMfwfe=q9R3F#Dt}b_5%wceeY*`ncPR?WV=d=5 z1@)MC$HkkIvPu7b8R-9ej{^I5>PrY#six@H06hLUFd6I1IO7ukU0bi{UL&vP`rkN^ zmiOA`!)FR4r)`ir)LJcHRRFu>NZ>v{8hdQ|+cx7d6+m%6exJYOuFHWGAfroXbwB6X zNuL9-@3{6P6X)&Z5{RsdR2)c>JZ&SVCXcsjF+kn@O^?^wEd9{q1}wmwK1FeFe7}Y- z{-y<_x_DLgZiI=^9s_XurUPQ zV6D)zcGfzhBV%BZT|{ZgfhXaF?N`^6wlfn~_(~F>Hak1irt-2XnPrYc#I~(T8O5tG z2HWZMY0pzcpNs7U9e0)^UW{xU05WN_eMFBLm60@lwFxxlIKQixAjKa6K7-R+Mi~^9 zw28_>V32k1HNw=quG@W+MN$JEvy|PSA#J<=?Rr90bI9vQ$dGKhqB>Y(l!N%artzw4 zsGDDEQU-$&Ni|FlI^4eqoDYjL8Os(FcEU07nI`77iq3DS37JthfScbNFqfBvvY=)0 z25pZRtbNacGtLv@=bzjhz$2?h*7X37_Anz)$=cw&H2ld*)gSE28BLJ8v>P-lYd5ir zR)xrsn=RRc;{6XNTw7}x`o+mG&Nuwis##o92;(^3U#?o~)_WdDk4x7vMU z<`lDkg;}nWuaw!h+pled%6THJ2%e+#F0CoUo6W#xUxFw6&T0wRzhZM%aJahq61S%U zYkt_G@a&QmvZ8cq%_eMZk!F~j{Hl*W%HeUM)`wzM4m$06vEQ|2pICV+b;Rg)eStIm}mL0 zS(Bf^QoxM75W5ee%c2r{KQk?8lyUrN&Yl?l^oflgh1lYF}ywguY-8lEbat7br4vyoXAiP zDxteEGh(%sXkk8zto^`QG&r>+9t9~c8ielKN9|X0hUadADyqC$B4!WFn7t$7KbR=0 zNik&}3`vVrs6jJ}WWp7$E?91iy5~zY0_k95@v0LakkkG3Ndf8^p?)FmQ()@erFl1R z*)(BL2-V$BPuGgM&^NO^me7o6-u?0qgqR zgK>8i>2oMZH9mIINBS05$UTkXFlO`t#4##bCc2&;SD9o-$I?=oG8+?8s=h*=dQz*E zYI)`2EL@!aOskN?fy8TIHe8|RXy@F2M5vLyI_f3RVd3$%k7PMaPVn7eOCz=JimIqT z!r#ayfngoO_KRC+a(QYFAn_i3NN)(sRI}{O zhqAphZwi~j%5FA@wfs?Wr-Nk0(ub#s$?Kj%-o6^o`E9UT(J3TQDw$pDW}f9N-nd8k zO7mPXgBM9MqZ8(8G}QtH>I@bTxY zIT!Yu)s{>zXz?a)$?%<3`iJ$BxD#gbcNQ5q808C)Wgn1wA1T?YRMmJ4+lbhEPU#(_ zsKOa7-Ep~^c-0S#S;2eDDtET{YQ=?Bs@qsxhMHsb!~5MGGJ=oso!UIYCS{_rUU)V+ z&3nN8R$V-ToSZniwwz*;c3w16sR7pm$JDyIE$L;ei!CIXuf69TM^T)~v+jhiK+2T< zUKLOqr+@r|%(Bx6{;F)|_SJU5y|uK>kU%^yhTXf`2$?@l-Mb$)C{}t?vp>y6c0O@| zhd*(Agc6Rp8B2Q9TSOPq>cmwKiRequ3VXA~cF}1ma#}oIynh#nZ;mJ*7hQ6ShF$9l zk^BskWY(seoU4$ovenFiR^MN&Sm9|0&)wCme|Elx8W9(t6~iJ7RD^qy^G;JW8oYLx zfmkn^Fc;wtzU!5wZHc;8sl~i;it4}u5q(xr9jThC1?SNtowr9LDq7`=~MN8CuX8m z`SmS7|1vtU6mvO3{vfrlT%OFqxFUc~8Hn}g2ddxUJfj=@X5|uUEF=SSX>6xw{;Y9c zE>C{#{0i^Ap7g#jTmvRH#Hw68!2s#PK1?2BccYt2L;xj9ky2N}?XYDddtcOZG#!XD z4!(90qq*4{vg&)@)QhoupR^2T9&lHF5kS0Iam*LbP~YG)OWQP6?s6Y1n3B&NB`)s^ zZfwZs1h@j6SfSm?2a>lJT`}ChyrI8ux_>P*hnykbk%fGB?p=lf<#@=Gi+lY{mi?h5 z&+HVmO=lZVKQJT^C5#z TdAOFo=*tIg6#=b>I7OOCb9y=|(d{&O1gB2IhnyX&UZ z*|8XCqZzx-jTfkd+wSwn!%{lbQu6v}HBYy9WKIPZ$wO~wQOm^Uf!l(2u^TEbLW zV3N)`O1dGn(*UE_f{{0MHVMM zpPD>@+x9!SxXIFuw(2MPo&gnghl5X#J*?@mOfg=X+hPRY_cgc^+mt<13Xf5)*FsfB z?lHQ)9n^nsMqkR;sqo^bg81DF@mw?H{jCd9h$JnILTt7|j#g_fsaSTp#?H>=!KfL4 z@IHe$_24_%8}iOojYsJsyF!?{$fGE;N=;^3nIXXCal$aXbimMw0is48;Z21LLLxGiYx7*OmtAi0=Mpkkp=tzCuqOgBT+-1nQh9 zB1s!MSo4WQ@Yy~X4T;wa!Y z?4WdbDIE*j_t}r%1M)?8^DJ1d5*f!*Op3WGEAdKyrOvr@GtlZ-M-y7Yn2S;jyJZ1& zcA1MQh0b&Qt@~6SDd$QhFRQs6plZ5KelmjSR>-wl>~f4TT8L|~V3>ns_fA|{nA;k%fggT5%4d?2xy_^1o8ENNwr2s@F=cFd zSTrVurjsWduix7$ial5QYSWt}pO&4+7KS`82cU2fxc2k&8pBxe8~LXg`GY^RgTAO2 zk6Rkmh$)xn^0c_K0M(&qYMfRJ)^cz7xB&DgWsO0OXI>#!q`e#T3S8UW!H5*mF@<9b z$FCPbjA?tF)-`yMlcG&;sRC5=?t(iJ3c4ktd)TdK_l7iD_0N0F3|`(7g84;t)LwpS zkL#S)*v23Z^eCG}Mp#C=JBB3h7oAe)+iI}e;4U!>=*WiJ``bWK=)ujaZnjo$PAK|q z3{2f-<44p1>Sx%w+C1_@AG?f$rwc-gf11;2aZ81NQT9Tv?2eF>&BVP-T;rN1Ka?B5 z=&|@&p9xE;Rp8~5J6tTx7W|c`@Q(h^|TfH#V*uQqe zjn(J&Ky3nG|kEPzZ`7OfA>X76^%!A04XVlZGvMkRmE;g&DLj! zwNbI>8r4=8xSXW!b17{`McTX2N$q6al$UI)1Z?-|31C-*?#9k`SPgIv7R@R?i* z-ft7;qH2cMLDBj!cqcjr-N0vn1|pmUE0rX_a@j#XWDo#?HE1B}q@PBY;ETaQWHHImwM)0BDA)@F9?bEVbUxVdoV2*pc} z`eQ>3RNjms4}@cJMNB@zF>_gYb(nl27!|Ds08#&|>iL$7J=AblVVRQeTyhF?$2IUR6B*twCNeGr?N z?e?*Gi5;hUZ}i?UyN^W$;yzA()i_`X8RrU6eG+{qY~YZH{iTNj9H!Zp;~F&mKk!@) z^k4Y~-5bXrgD2Xn!El6m2{BJ`1P}E59w-n0oYNbNDz5r%w6koAn#)9k1heZw0Y&c zmF{8~KPnwGPLfNnsOh$Mja-JRxeF)|eI?PInf310F5X>R6->;N)+Bp%Yr?67y`_`x zf@5j^DTPA%B`XUmMz@@1pa1GdezY-0>^^IMvEB;km6pViFEJ?)gY&xdnb+f|8|wD8 z-yG#`Mp>^f2gki{R4J=gplfF-BJ7!``Q~L=vGFjy+V<3yp?&e0OLf?bQ%Q8LehBOy z?yfN@1E}+M7BFCV;a+m)NVLsQuk@_iZetAHb0_I}?9x2^x^bLfSSt$%w2`~XGU{|l zTaq7(nH)b{D`tA+_?5HoBKyF=84(?_XNgZSl4_i{FOOT3vi1iv#!V%XPA7UI0-KSwZxyYCNkIu&i~9UNtr)PI&d>fXO5AvMkee}s<9@euJJ zU!U8GT{a8E@3|DmEBjKGi$ESvThbiknqR3TzZ%7e1nL7WzU@CDi)Rs~uW8jjh7_dc zS*T4i4w`+i+%>;$$$c!>haB1+F<6C@=5eY!_z_$5b3ShVk6pWc6xE&vwDY)z*^?7j z+wN*a7qO;|eimPxOwU6n5JY$^y*P{AM6}Ct0yq`d41`YAx3o2P!+nJA(^Z`v&-zGb zX+k@BWspPk^7_1|^HWm&Ec|sEn~3}PM-BG1y#;YU0+*Ry7so?(DG5gh24@vLolU_! zoXP684jvQo+JOhW{Lbv@ggB!BfFwR_WzVeV(9qCzt!W#jV4Vs_3q$f zfLsr+57ms9L&G1P9k-=0A;)$Ptk*nPlh^46=WKk{MRf_Lk6gSz;h`X-Jcg3wjO;;V zEp}nfW!*TP!S0DGQM}Gy&=PRZB~9f*x&nqgZqC5(M35Fpp*kt-vndz+J9XT}5HfzO zHL5|;B{YbL__M62KgW(;V<&oHQ7b=t(IM&gZEQ|GHX?q)MT4lp0+h(44d&uYZ;K6` zj;z+HncJe2=p1QX64am>f}$0U(S_te(HQFYL{FOT`D`AIc{92=sq^Wi!aC11gqCxL zsWBGhfRXY>eGE(X@E_+6I|VhGe9F^$s=()EmF&?m%F+@pnOB9aLzD`7g1ZrRqb+k-jG=(!U_Sa)_VrV=b=&-yf=Qa25*{)Us5dbyA&tHPJBje^3zcbYAweJApGo94{BdZGBsTVXS=n{%kGqo z@bLD{wrbDw#Vj1>UmMtrIp#)E@nGR8KE)Z=8m$O_>5vht&^NAWIhg8JYteAICOMY- zWa8qqi>y9FMe~kqE(c51z;fj$HIgb9e4hJsc2qtisB^BFl}}rx@=uQ|CF}$YyRljwuZ~ho@-Yc&3o5QS=r_0Ud(q9KMMW|qbfqPsOlU)NS9wyuptL~4R_n1S z<62KuN7MSuHEE=#RBI~Wtf?CG=p+-cr0%hWj3FrT&WDu9GklyS9)>R7%WBL?R!ae= zvdtNcRQS=e+s+9Mppn4Knk+j@pyM0hh@Eh20ZL~Y^Q<5VM{e3s_U+@Ja*}~`czZUx3}xW z*wek$M(y2=X{~PoiOE+6oa+6yVXxVHcZwG(ld7H(nvi6p4Z_)bq!d5z0JRl}{Au}5hX8g7t zdjh@pZ#-S(db~B3GdH}xNW+Wsv<-}<8Xs&^Tz)$KZVT2iIir z*-G*|oVnT&NJE^*+p=A?Tl#dqwU-el>-u@flF&X!Gmb8{RGAu;a`8@@06Vw<_)WtU zoJt`{Y^e`(AMgfniU~17GLPJHX(|>$BeA$>=rLlHgsB zR`xL||ACZH`fSo)G%bSH2$K&+?}Ae5R625AOC!h~Fp;t%Ek_4CVJ)D?EzOHlN#e%m zaY`EBU})DFAQDrMb@qq%jw^PWJ#8tkMq-LDd8s9`reE{f@ zHP5T;s0r~Mz^mpOvf!}yEV7$}eGtZ>MUS+I<#JURX?>lGH2t2oDTZyfsXf8hH7E8gT$_4SA(oqiGOz(BRx z@JP9UIO)vHHraQmp_v%+hzxseP_Yq7NXa@Fk0mL$&dvH_M`Cu6?&dBBC(+^dAhLM4 z)@xrJ2_`J3GUF^jRma!d^$N%7b^vI%X)M(K<`VV>?% z9I=q^mDIHy#{olM%A@FO`i-CS?AdQYHn*9qJmV)APvkp z4cDn0Z{C=jc`<88!g7nl)PxvU#HmXQ z)7`E!I>jVgA+g`xBtl6?nBA~lT*sVAym-4L@w(agxXaq*Gq@4gu_U!|H~YPus*M6v z9X9)^$=J2!uLNrMenHZGpcrw8qdAW)u?k;RKy$8i+@ugM5Dd|x$)0t}H;;>MxG^s7 zY2kuk?FhZm)+D+BrginpXfaI(XjbC^i{tfl+LRSB(;$IewLw76fa|1Q7$Vu1XI%Ss1KTbdO z^_MI2>2J$rbijO0JtdWFDo(|*E{h4U-Nf5IN9`2mJEr$>UVemGGy>A#P?umq<)=7m z=BVb{Duh=D9%J1$6&v_Z(?Ax zUS^W`eSQs547>D}*+>-+KSrWO?w+%0TP5h=#C?Uk`l{9h?F2rb?WeD*ol$FOK8RBi ztZ}`&Z-3YEZf2z4nQvV8lD?h)K%Mt?+*E)n)a?EgV|$3MDYNj3)zrGF(;_B z`kP}`pCK@I?HB&F*y!Bn5QYl zu59{xclD*NXOuV%dL~{sF+`iZ@;&8max^G1)Cb#ZuEKY;Z5M|J2>+4+FDFZ7;vNvFnnz}zubxf`O)gDCYYog?kS7g;lG(NKb*RM z9kVaF-+CS(LI*waqeTM&I)`m^dH745ASi1_B#@iq(U-)Q^#*lkz=%@LMB@Ly*-rHH%UiGO+_0*@ltblYlKyI0~mYtp0Es3(0zOihvT~wVx z?Z18`84)wq&C8@d9D=YX4o>;xnMh;A<~~$NSv>%GF5}i&&Vi?2d+>RI^VKY$jwzfM z{*m{^f`f^3hDeEm@!Wi}qKBFnt4rW0oTHy>#0n*eN*<>%zjb(zTdC0RgCh$UqVDbZ zI$f(JeW??{Ov*#kPF#+HFSyV+ULKO`sYr&r4y-B=EHYvbQe@Lxsdh~~V@e)iMx`+O zeyL*NLCNQ$8&BXi+_i!1m_mV|sgd(f{jRis!(*34b@p<@F$zJGYqJK(&EtzTgk#Q z1z3>Hyhpx#yYKNc7KiegYk%h${QL%GM;dEVvk1qG*N+3SA4gvNJ^v`57-sx!4jy?t zY3%O_;wyCn3dtu_U1tH>KK>F2*82N0u>8$#1kx@*9&kbwJko^v++Tl3djKDQ9QIpi z3D6WmDPhD!;1hbAjs$TrN853fF_=c{+(6x ze*3p@Y=_X_Hd{xInEv%&TRu{A4)`g5{2lv4xqG4DZ%Xt>gTUWI@_2>9 zl_O7%oOn#)lONT(eMi~%DEK_^bmy_ptNyd={(s*{aRpMJ{=R(w^Oi^c?=Sd&#rS;x e=6}9;zHum7z0Xy4JhzDQe=16vip6&yzx+QK1}HcH literal 0 HcmV?d00001 diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index dafa6c3486..1526e884c9 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1028,6 +1028,10 @@ "text": "Confirmation Popup", "path": "UI/Angular/Confirmation-Service.md" }, + { + "text": "Loading Directive", + "path": "UI/Angular/Loading-Directive.md" + }, { "text": "Toast Overlay", "path": "UI/Angular/Toaster-Service.md" From 7bbbee64ffee5a4970dd7d509d0a3f830e500395 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 20 May 2022 09:27:22 +0800 Subject: [PATCH 59/89] Add IMultiTenant to IdentityRoleNameChangedEto --- .../Volo/Abp/Identity/IdentityRoleNameChangedEto.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleNameChangedEto.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleNameChangedEto.cs index 0bce1079b5..012f764f54 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleNameChangedEto.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityRoleNameChangedEto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.MultiTenancy; namespace Volo.Abp.Identity; [Serializable] -public class IdentityRoleNameChangedEto +public class IdentityRoleNameChangedEto : IMultiTenant { public Guid Id { get; set; } From b798b08c393055e71ea31ffcbc8cc448a0f7d922 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 20 May 2022 13:58:59 +0800 Subject: [PATCH 60/89] Fix the problem of calling Handler multiple times --- .../Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs | 10 +++++++--- .../Rebus/IRebusDistributedEventHandlerAdapter.cs | 6 ++++++ .../Rebus/RebusDistributedEventHandlerAdapter.cs | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/IRebusDistributedEventHandlerAdapter.cs diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs index c0c655b596..7f99d03f56 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/AbpRebusEventHandlerStep.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Rebus.Messages; @@ -14,9 +15,12 @@ public class AbpRebusEventHandlerStep : IIncomingStep var message = context.Load(); var handlerInvokers = context.Load().ToList(); - handlerInvokers.RemoveAll(x => x.Handler.GetType() == typeof(RebusDistributedEventHandlerAdapter)); - context.Save(new HandlerInvokers(message, handlerInvokers)); - + if (handlerInvokers.All(x => x.Handler is IRebusDistributedEventHandlerAdapter)) + { + handlerInvokers = new List {handlerInvokers.Last()}; + context.Save(new HandlerInvokers(message, handlerInvokers)); + } + return next(); } } diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/IRebusDistributedEventHandlerAdapter.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/IRebusDistributedEventHandlerAdapter.cs new file mode 100644 index 0000000000..b756cc844d --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/IRebusDistributedEventHandlerAdapter.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.EventBus.Rebus; + +public interface IRebusDistributedEventHandlerAdapter +{ + +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventHandlerAdapter.cs b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventHandlerAdapter.cs index 1735a5ce95..7f9343ecdf 100644 --- a/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventHandlerAdapter.cs +++ b/framework/src/Volo.Abp.EventBus.Rebus/Volo/Abp/EventBus/Rebus/RebusDistributedEventHandlerAdapter.cs @@ -3,7 +3,7 @@ using Rebus.Handlers; namespace Volo.Abp.EventBus.Rebus; -public class RebusDistributedEventHandlerAdapter : IHandleMessages +public class RebusDistributedEventHandlerAdapter : IHandleMessages , IRebusDistributedEventHandlerAdapter { protected RebusDistributedEventBus RebusDistributedEventBus { get; } From 574cbc159121a629bcac6dc725b31e52bc2ab507 Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Fri, 20 May 2022 09:43:26 +0300 Subject: [PATCH 61/89] quick fix --- docs/en/UI/Angular/Loading-Directive.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/UI/Angular/Loading-Directive.md b/docs/en/UI/Angular/Loading-Directive.md index 9ac491289d..18ff4baaeb 100644 --- a/docs/en/UI/Angular/Loading-Directive.md +++ b/docs/en/UI/Angular/Loading-Directive.md @@ -1,7 +1,7 @@ # Loading Directive -You may want to block a part of UI and show a spinner for a while; the `LoadingDirective` directive is making this for you. `LoadingDirective` has been exposed by the `@abp/ng.theme.shared` package. +You may want to block a part of the UI and show a spinner for a while; the `LoadingDirective` directive makes this for you. `LoadingDirective` has been exposed by the `@abp/ng.theme.shared` package. ## Getting Started @@ -22,7 +22,7 @@ export class MyFeatureModule {} ## Usage -The `LoadingDirective` is easy to use. The directive's selector is **`abpLoading`**. By adding the `abpLoading` attribute to an HTML element , you can activate the `LoadingDirectiveective` for the HTML element when value is true. +The `LoadingDirective` is easy to use. The directive's selector is **`abpLoading`**. By adding the `abpLoading` attribute to an HTML element, you can activate the `LoadingDirectiveective` for the HTML element when the value is true. See an example usage: @@ -37,8 +37,8 @@ See an example usage: ``` -The `abpLoading` attribute has been added to the `
` element that containing very long text inside to activate the `LoadingDirective`. +The `abpLoading` attribute has been added to the `
` element that contains very a long text inside to activate the `LoadingDirective`. See the result: -![Loading directive result](./images/abp-loading.png) \ No newline at end of file +![Loading directive result](./images/abp-loading.png) From 67b3d58ab9fe3ba622ffc0b91f7d580ad1c9d904 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 11:39:55 +0300 Subject: [PATCH 62/89] Separate Blazor WASM & Server for Blazor\Basic-Theme.md --- docs/en/UI/Blazor/Basic-Theme.md | 75 +++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index 2c034f258a..b4eb1c4f92 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -1,5 +1,12 @@ # Blazor UI: Basic Theme +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist theme that doesn't add any styling on top of the plain [Bootstrap](https://getbootstrap.com/). You can take the Basic Theme as the **base theme** and build your own theme or styling on top of it. See the *Customization* section. > If you are looking for a professional, enterprise ready theme, you can check the [Lepton Theme](https://commercial.abp.io/themes), which is a part of the [ABP Commercial](https://commercial.abp.io/). @@ -10,16 +17,48 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist **This theme is already installed** when you create a new solution using the [startup templates](../../Startup-Templates/Index.md). If you need to manually install it, follow the steps below: +{{if UI == "Blazor"}} + * Install the [Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) NuGet package to your web project. * Add `AbpAspNetCoreComponentsWebAssemblyBasicThemeModule` into the `[DependsOn(...)]` attribute for your [module class](../../Module-Development-Basics.md) in the your Blazor UI project. * Use `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic.App` as the root component of your application in the `ConfigureServices` method of your module: -````csharp -var builder = context.Services.GetSingletonInstance(); -builder.RootComponents.Add("#ApplicationContainer"); -```` + ```csharp + var builder = context.Services.GetSingletonInstance(); + builder.RootComponents.Add("#ApplicationContainer"); + ``` + `#ApplicationContainer` is a selector (like `
Loading...
`) in the `index.html`. + +* Execute `abp-bundle` command under blazor project once. + +{{end}} + + +{{if UI == "BlazorServer"}} + +* Make sure [AspNetCore Basic Theme](../AspNetCore/Basic-Theme.md) installation steps are completed. + +* Install the [Volo.Abp.AspNetCore.Components.Server.BasicTheme](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.Server.BasicTheme) NuGet package to your web project. + +* Add `AbpAspNetCoreComponentsServerBasicThemeModule` into the `[DependsOn(...)]` attribute for your [module class](../../Module-Development-Basics.md) in the your Blazor UI project. + +* Perform following changes in `Pages/_Host.cshtml` file + * Add usings at the top of the page. + ```html + @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling + @using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic + ``` + * Add Basic theme style bundled between `` tags. + ```html + + ``` + * Add `App` component of Basic Theme in the body section of page. + ```html + + ``` + +{{end}} -`#ApplicationContainer` is a selector (like `
Loading...
`) in the `index.html`. ## The Layout @@ -52,15 +91,39 @@ See the [Customization / Overriding Components](Customization-Overriding-Compone You can run the following [ABP CLI](../../CLI.md) command in **Blazor WebAssembly** project directory to copy the source code to your solution: + +{{if UI == "Blazor"}} + `abp add-package Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme --with-source-code --add-to-solution-file` Then, navigate to downloaded `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` project directory and run: `abp add-package Volo.Abp.AspNetCore.Components.Web.BasicTheme --with-source-code --add-to-solution-file` +{{end}} + +{{if UI == "BlazorServer"}} + +`abp add-package Volo.Abp.AspNetCore.Components.Server.BasicTheme --with-source-code --add-to-solution-file` + +Then, navigate to downloaded `Volo.Abp.AspNetCore.Components.Server.BasicTheme` project directory and run: + +`abp add-package Volo.Abp.AspNetCore.Components.Web.BasicTheme --with-source-code --add-to-solution-file` + +{{end}} + ---- -Or, you can download the [source code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) of the Basic Theme, manually copy the project content into your solution, re-arrange the package/module dependencies (see the Installation section above to understand how it was installed to the project) and freely customize the theme based on your application requirements. + +Or, you can download the source code of the Basic Theme, manually copy the project content into your solution, re-arrange the package/module dependencies (see the Installation section above to understand how it was installed to the project) and freely customize the theme based on your application requirements. + +{{if UI == "Blazor"}} +- [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) +{{end}} + +{{if UI == "BlazorServer"}} +- [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme) +{{end}} ## See Also From 927eeddafb700c0053f92352835745cd1c201c69 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 11:45:11 +0300 Subject: [PATCH 63/89] Fix typo in Blazor\Basic-Theme.md --- docs/en/UI/Blazor/Basic-Theme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index b4eb1c4f92..a4434aed44 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -48,7 +48,7 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling @using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic ``` - * Add Basic theme style bundled between `` tags. + * Add Basic theme style bundles between `` tags. ```html ``` From 6403ab57c254cc74487cd6b2650eeca5754a27b3 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 11:46:18 +0300 Subject: [PATCH 64/89] Remove multiple blank lines in Blazor\Basic-Theme.md --- docs/en/UI/Blazor/Basic-Theme.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index a4434aed44..4fb4d7bbaa 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -33,7 +33,6 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist {{end}} - {{if UI == "BlazorServer"}} * Make sure [AspNetCore Basic Theme](../AspNetCore/Basic-Theme.md) installation steps are completed. @@ -59,7 +58,6 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist {{end}} - ## The Layout ![basic-theme-application-layout](../../images/basic-theme-application-layout.png) @@ -91,7 +89,6 @@ See the [Customization / Overriding Components](Customization-Overriding-Compone You can run the following [ABP CLI](../../CLI.md) command in **Blazor WebAssembly** project directory to copy the source code to your solution: - {{if UI == "Blazor"}} `abp add-package Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme --with-source-code --add-to-solution-file` @@ -114,7 +111,6 @@ Then, navigate to downloaded `Volo.Abp.AspNetCore.Components.Server.BasicTheme` ---- - Or, you can download the source code of the Basic Theme, manually copy the project content into your solution, re-arrange the package/module dependencies (see the Installation section above to understand how it was installed to the project) and freely customize the theme based on your application requirements. {{if UI == "Blazor"}} From f224b5594f305e8ada0b5c1985856ca1ddd8d1e9 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 9 May 2022 14:54:09 +0300 Subject: [PATCH 65/89] Update Theming.md --- docs/en/UI/Blazor/Theming.md | 57 ++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 067052e322..6cb0f0c66b 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -1,5 +1,12 @@ # Blazor UI: Theming +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + ## Introduction ABP Framework provides a complete **UI Theming** system with the following goals: @@ -25,8 +32,18 @@ Currently, two themes are **officially provided**: ### The Base Libraries +{{if UI == "Blazor"}} + All the themes must depend on the [Volo.Abp.AspNetCore.Components.WebAssembly.Theming](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.WebAssembly.Theming) NuGet package, so they are indirectly depending on the following libraries: +{{end}} + +{{if UI == "BlazorServer"}} + +All the themes must depend on the [Volo.Abp.AspNetCore.Components.Server.Theming](https://www.nuget.org/packages/Volo.Abp.AspNetCore.Components.Server.Theming) NuGet package, so they are indirectly depending on the following libraries: + +{{end}} + * [Twitter Bootstrap](https://getbootstrap.com/) as the fundamental HTML/CSS framework. * [Blazorise](https://github.com/stsrki/Blazorise) as a component library that supports the Bootstrap and adds extra components like Data Grid and Tree. * [FontAwesome](https://fontawesome.com/) as the fundamental CSS font library. @@ -61,9 +78,17 @@ The application layout typically includes the following parts; A theme is simply a Razor Class Library. -### The Easy Way +### The Easiest Way + +The easiest way to create a new theme is copying the [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) and customizing it. -The easiest way to create a new theme is to copy the [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme) and customize it. Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` NuGet package and reference to the local project. +{{if UI == "Blazor"}} +Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` NuGet package and reference to the local project. +{{end}} + +{{if UI == "BlazorServer"}} +Once you get a copy of the theme in your solution, remove `Volo.Abp.AspNetCore.Components.Server.BasicTheme` and `Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic` NuGet packages and add references to local projects. +{{end}} ### Global Styles / Scripts @@ -165,6 +190,9 @@ Configure(options => Language Selection toolbar item is generally a dropdown that is used to switch between languages. `ILanguageProvider` is used to get the list of available languages and `CultureInfo.CurrentUICulture` is used to learn the current language. + +{{if UI == "Blazor"}} + Local Storage is used to get and set the current language with the `Abp.SelectedLanguage` key. **Example: Get the currently selected language** @@ -192,6 +220,31 @@ The theme should reload the page after changing the language: await JsRuntime.InvokeVoidAsync("location.reload"); ```` +{{end}} + +{{if UI == "BlazorServer"}} +Localization works on Server side in Blazor Server. So, regular AspNetCore localization middleware is used. + +**Example: Get the currently selected language** + +````csharp +var selectedLanguageName = CultureInfo.CurrentCulture.Name; +```` + +**Example: Set the selected language** + +````csharp +// Get current url. +var relativeUrl = NavigationManager.Uri.RemovePreFix(NavigationManager.BaseUri).EnsureStartsWith('/'); + +// Redirect to ABP language switch endpoint. +NavigationManager.NavigateTo( + $"/Abp/Languages/Switch?culture={newLanguage.CultureName}&uiCulture={newLanguage.UiCultureName}&returnUrl={relativeUrl}", + forceLoad: true +); +```` +{{end}} + ##### User Menu User menu includes links related to the user account. `IMenuManager` is used just like the Main Menu, but this time with `StandardMenus.User` parameter like shown below: From 28bae5913a8fad3b46f292df0e0041849570d773 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 11:02:59 +0300 Subject: [PATCH 66/89] Add LeptonX to available themes in blazor documentation --- docs/en/UI/Blazor/Theming.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 6cb0f0c66b..83c54c652c 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -23,10 +23,11 @@ In order to accomplish these goals, ABP Framework; ### Current Themes -Currently, two themes are **officially provided**: +Currently, three themes are **officially provided**: * The [Basic Theme](Basic-Theme.md) is the minimalist theme with the plain Bootstrap style. It is **open source and free**. * The [Lepton Theme](https://commercial.abp.io/themes) is a **commercial** theme developed by the core ABP team and is a part of the [ABP Commercial](https://commercial.abp.io/) license. +* The [LeptonX Theme](https://x.leptontheme.com/) is a theme that has a [commercial](https://docs.abp.io/en/commercial/latest/themes/lepton-x/commercial/blazor) and a [lite](../../Themes/LeptonXLite/blazor.md) version. ## Overall From f3cffa35c2384ab140ce8c0c875289975a8e1c26 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 11:14:02 +0300 Subject: [PATCH 67/89] Remove namespace and usings since they're different between blazor server and wasm --- docs/en/UI/Blazor/Toolbars.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/docs/en/UI/Blazor/Toolbars.md b/docs/en/UI/Blazor/Toolbars.md index b8cca6077a..3ff1b7f135 100644 --- a/docs/en/UI/Blazor/Toolbars.md +++ b/docs/en/UI/Blazor/Toolbars.md @@ -34,23 +34,16 @@ This sample simply shows a message. In real life, you probably want to call an H Now, we can create a class implementing the `IToolbarContributor` interface: ````csharp -using System.Threading.Tasks; -using MyCompanyName.MyProjectName.Blazor.Components; -using Volo.Abp.AspNetCore.Components.WebAssembly.Theming.Toolbars; - -namespace MyCompanyName.MyProjectName.Blazor +public class MyToolbarContributor : IToolbarContributor { - public class MyToolbarContributor : IToolbarContributor + public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) { - public Task ConfigureToolbarAsync(IToolbarConfigurationContext context) + if (context.Toolbar.Name == StandardToolbars.Main) { - if (context.Toolbar.Name == StandardToolbars.Main) - { - context.Toolbar.Items.Insert(0, new ToolbarItem(typeof(Notification))); - } - - return Task.CompletedTask; + context.Toolbar.Items.Insert(0, new ToolbarItem(typeof(Notification))); } + + return Task.CompletedTask; } } ```` From 5e95f95e3a1dd8fc52561ad2469a5e3baa4b84a3 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 11:37:10 +0300 Subject: [PATCH 68/89] Add Blazor Server seperation to the Authentication.md --- docs/en/UI/Blazor/Authentication.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Blazor/Authentication.md b/docs/en/UI/Blazor/Authentication.md index 9dc34ebce5..5f18345d7d 100644 --- a/docs/en/UI/Blazor/Authentication.md +++ b/docs/en/UI/Blazor/Authentication.md @@ -1,11 +1,28 @@ # Blazor UI: Authentication -The [application startup template](../../Startup-Templates/Application.md) is properly configured to use OpenId Connect to authenticate the user through the server side login form; +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` +The [application startup template](../../Startup-Templates/Application.md) is properly configured to use OpenId Connect to authenticate the user; + +{{if UI == "BlazorServer"}} +* When the Blazor application needs to authenticate, it is redirected to the login page built with Razor Pages UI in the same application. +* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features. +* Finally, they are redirected back to the Blazor application to complete the login process. + +{{end}} + +{{if UI == "Blazor"}} * When the Blazor application needs to authenticate, it is redirected to the server side. -* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features. The server side uses IdentityServer4 to handle the authentication. +* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features., + * Finally, they are redirected back to the Blazor application to complete the login process. This is a typical and recommended approach to implement authentication in Single-Page Applications. The client side configuration is done in the startup template, so you can change it. +{{end}} See the [Blazor Security document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security) to understand and customize the authentication process. \ No newline at end of file From c0ae6b1cb59c1228a9f7cdccdc3e1da08ec3755a Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 17:27:19 +0300 Subject: [PATCH 69/89] Add Blazor Server seperation to the Error-Handling.md --- docs/en/UI/Blazor/Error-Handling.md | 36 +++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/docs/en/UI/Blazor/Error-Handling.md b/docs/en/UI/Blazor/Error-Handling.md index 35aff041af..6582ee0c8e 100644 --- a/docs/en/UI/Blazor/Error-Handling.md +++ b/docs/en/UI/Blazor/Error-Handling.md @@ -1,5 +1,12 @@ # Blazor UI: Error Handling +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + Blazor, by default, shows a yellow line at the bottom of the page if any unhandled exception occurs. However, this is not useful in a real application. ABP provides an automatic error handling system for the Blazor UI. @@ -20,6 +27,8 @@ There are different type of `Exception` classes handled differently by the ABP F **Example** +{{if UI == "BlazorServer"}} + ````csharp @page "/" @using Volo.Abp @@ -28,13 +37,6 @@ There are different type of `Exception` classes handled differently by the ABP F @code { - //for Blazor WASM - private void TestException() - { - throw new UserFriendlyException("A user friendly error message!"); - } - - //for Blazor Server private async Task TestException() { try @@ -49,6 +51,26 @@ There are different type of `Exception` classes handled differently by the ABP F } ```` +{{end}} + +{{if UI == "Blazor"}} + +````csharp +@page "/" +@using Volo.Abp + + + +@code +{ + private void TestException() + { + throw new UserFriendlyException("A user friendly error message!"); + } +} +```` +{{end}} + ABP automatically handle the exception and show an error message to the user: ![blazor-user-friendly-exception](../../images/blazor-user-friendly-exception.png) From 05cf33798901c0d72768fc7b8ca48393f065b04f Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 11 May 2022 17:30:50 +0300 Subject: [PATCH 70/89] Add Blazor Server seperation to the Customization-Overriding-Components.md --- .../Customization-Overriding-Components.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/docs/en/UI/Blazor/Customization-Overriding-Components.md b/docs/en/UI/Blazor/Customization-Overriding-Components.md index e62e0a0ff4..e288a439b0 100644 --- a/docs/en/UI/Blazor/Customization-Overriding-Components.md +++ b/docs/en/UI/Blazor/Customization-Overriding-Components.md @@ -1,5 +1,12 @@ # Blazor UI: Customization / Overriding Components +````json +//[doc-params] +{ + "UI": ["Blazor", "BlazorServer"] +} +```` + This document explains how to override the user interface of a depended [application module](../../Modules/Index.md) or [theme](Theming.md) for Blazor applications. ## Overriding a Razor Component @@ -26,6 +33,30 @@ The next step is to create a razor component, like `MyBranding.razor`, in your a The content of the `MyBranding.razor` is shown below: +{{if UI == "BlazorServer"}} + +````html +@using Volo.Abp.DependencyInjection +@using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic +@inherits Branding +@attribute [ExposeServices(typeof(Branding))] +@attribute [Dependency(ReplaceServices = true)] + + + +```` + +Let's explain the code: + +* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the `Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic` namespace). +* `@attribute [ExposeServices(typeof(Branding))]` registers this service (component) to [dependency injection](../../Dependency-Injection.md) for the `Branding` service (component). +* `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). +* The rest of the code is related the content and styling of the component. + +{{end}} + +{{if UI == "Blazor"}} + ````html @using Volo.Abp.DependencyInjection @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic @@ -44,6 +75,8 @@ Let's explain the code: * `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). * The rest of the code is related the content and styling of the component. +{{end}} + Now, you can run the application to see the result: ![bookstore-added-logo](../../images/bookstore-added-logo.png) @@ -56,6 +89,17 @@ If you prefer to use code-behind file for the C# code of your component, you can **MyBlazor.razor** +{{if UI == "BlazorServer"}} +````html +@using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic +@inherits Branding + + + +```` +{{end}} + +{{if UI == "Blazor"}} ````html @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic @inherits Branding @@ -63,8 +107,27 @@ If you prefer to use code-behind file for the C# code of your component, you can ```` +{{end}} **MyBlazor.razor.cs** +{{if UI == "BlazorServer"}} + +````csharp +using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic; +using Volo.Abp.DependencyInjection; + +namespace MyProject.Blazor.Components +{ + [ExposeServices(typeof(Branding))] + [Dependency(ReplaceServices = true)] + public partial class MyBranding + { + + } +} +```` +{{end}} +{{if UI == "Blazor"}} ````csharp using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic; @@ -80,6 +143,7 @@ namespace MyProject.Blazor.Components } } ```` +{{end}} ## Theming From a19018ca98e41b591b27329d6431ed7f7307f32d Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:26:32 +0300 Subject: [PATCH 71/89] Update BlazorServer authentication section in docs --- docs/en/UI/Blazor/Authentication.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/en/UI/Blazor/Authentication.md b/docs/en/UI/Blazor/Authentication.md index 5f18345d7d..45aafabaf3 100644 --- a/docs/en/UI/Blazor/Authentication.md +++ b/docs/en/UI/Blazor/Authentication.md @@ -10,9 +10,7 @@ The [application startup template](../../Startup-Templates/Application.md) is properly configured to use OpenId Connect to authenticate the user; {{if UI == "BlazorServer"}} -* When the Blazor application needs to authenticate, it is redirected to the login page built with Razor Pages UI in the same application. -* Users can enter username & password to login if they already have an account. If not, they can use the register form to create a new user. They can also use forgot password and other features. -* Finally, they are redirected back to the Blazor application to complete the login process. +The Blazor Server application UI is actually a hybrid application that is combined with the MVC UI, and uses the login page provided by the MVC UI. When users enter a page that requires login, they are redirected to the `/Account/Login` page. Once they complete the login process, they are returned back to the application's UI. The login page also contains features like registration, password recovery, etc. {{end}} From eef4000a0397f5ce14c07aaf3d6a668af91597bc Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:27:45 +0300 Subject: [PATCH 72/89] Move Blazor Security document section to wasm --- docs/en/UI/Blazor/Authentication.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Blazor/Authentication.md b/docs/en/UI/Blazor/Authentication.md index 45aafabaf3..eb39e05c6b 100644 --- a/docs/en/UI/Blazor/Authentication.md +++ b/docs/en/UI/Blazor/Authentication.md @@ -21,6 +21,8 @@ The Blazor Server application UI is actually a hybrid application that is combin * Finally, they are redirected back to the Blazor application to complete the login process. This is a typical and recommended approach to implement authentication in Single-Page Applications. The client side configuration is done in the startup template, so you can change it. -{{end}} -See the [Blazor Security document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security) to understand and customize the authentication process. \ No newline at end of file + +See the [Blazor Security document](https://docs.microsoft.com/en-us/aspnet/core/blazor/security) to understand and customize the authentication process. + +{{end}} \ No newline at end of file From 2056b2753d2a76159fd83f98ce86c2b3463cb1f9 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:38:21 +0300 Subject: [PATCH 73/89] Use inline if statements in Customization-Overriding-Components.md --- docs/en/UI/Blazor/Basic-Theme.md | 2 +- .../Customization-Overriding-Components.md | 57 +++---------------- 2 files changed, 10 insertions(+), 49 deletions(-) diff --git a/docs/en/UI/Blazor/Basic-Theme.md b/docs/en/UI/Blazor/Basic-Theme.md index 4fb4d7bbaa..1d2dfb5c11 100644 --- a/docs/en/UI/Blazor/Basic-Theme.md +++ b/docs/en/UI/Blazor/Basic-Theme.md @@ -29,7 +29,7 @@ The Basic Theme is a theme implementation for the Blazor UI. It is a minimalist ``` `#ApplicationContainer` is a selector (like `
Loading...
`) in the `index.html`. -* Execute `abp-bundle` command under blazor project once. +* Execute `abp bundle` command under blazor project once. {{end}} diff --git a/docs/en/UI/Blazor/Customization-Overriding-Components.md b/docs/en/UI/Blazor/Customization-Overriding-Components.md index e288a439b0..7dadc5bb82 100644 --- a/docs/en/UI/Blazor/Customization-Overriding-Components.md +++ b/docs/en/UI/Blazor/Customization-Overriding-Components.md @@ -33,33 +33,16 @@ The next step is to create a razor component, like `MyBranding.razor`, in your a The content of the `MyBranding.razor` is shown below: -{{if UI == "BlazorServer"}} ````html @using Volo.Abp.DependencyInjection +{{if UI == "BlazorServer"}} @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic -@inherits Branding -@attribute [ExposeServices(typeof(Branding))] -@attribute [Dependency(ReplaceServices = true)] - - - -```` - -Let's explain the code: - -* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the `Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic` namespace). -* `@attribute [ExposeServices(typeof(Branding))]` registers this service (component) to [dependency injection](../../Dependency-Injection.md) for the `Branding` service (component). -* `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). -* The rest of the code is related the content and styling of the component. - {{end}} - {{if UI == "Blazor"}} - -````html -@using Volo.Abp.DependencyInjection @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic +{{end}} + @inherits Branding @attribute [ExposeServices(typeof(Branding))] @attribute [Dependency(ReplaceServices = true)] @@ -70,13 +53,11 @@ Let's explain the code: Let's explain the code: -* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic` namespace). +* `@inherits Branding` line inherits the Branding component defined by the [Basic Theme](Basic-Theme.md) (in the {{if UI == "BlazorServer"}}`Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic`{{end}} {{if UI == "Blazor"}}`Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic`{{end}} namespace). * `@attribute [ExposeServices(typeof(Branding))]` registers this service (component) to [dependency injection](../../Dependency-Injection.md) for the `Branding` service (component). * `@attribute [Dependency(ReplaceServices = true)]` replaces the `Branding` class (component) with this new `MyBranding` class (component). * The rest of the code is related the content and styling of the component. -{{end}} - Now, you can run the application to see the result: ![bookstore-added-logo](../../images/bookstore-added-logo.png) @@ -89,48 +70,29 @@ If you prefer to use code-behind file for the C# code of your component, you can **MyBlazor.razor** -{{if UI == "BlazorServer"}} ````html +{{if UI == "BlazorServer"}} @using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic -@inherits Branding - - - -```` {{end}} - {{if UI == "Blazor"}} -````html @using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic +{{end}} @inherits Branding ```` -{{end}} **MyBlazor.razor.cs** -{{if UI == "BlazorServer"}} ````csharp +{{if UI == "BlazorServer"}} using Volo.Abp.AspNetCore.Components.Server.BasicTheme.Themes.Basic; -using Volo.Abp.DependencyInjection; - -namespace MyProject.Blazor.Components -{ - [ExposeServices(typeof(Branding))] - [Dependency(ReplaceServices = true)] - public partial class MyBranding - { - - } -} -```` {{end}} {{if UI == "Blazor"}} - -````csharp using Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic; +{{end}} + using Volo.Abp.DependencyInjection; namespace MyProject.Blazor.Components @@ -143,7 +105,6 @@ namespace MyProject.Blazor.Components } } ```` -{{end}} ## Theming From dbd9194c82cd3dd501708020e4bd26d772d0cca5 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 09:47:17 +0300 Subject: [PATCH 74/89] Update theme source-code adding with CLI usage --- docs/en/UI/AspNetCore/Theming.md | 8 ++++++-- docs/en/UI/Blazor/Theming.md | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/en/UI/AspNetCore/Theming.md b/docs/en/UI/AspNetCore/Theming.md index 6a378cd29a..fd2e7312de 100644 --- a/docs/en/UI/AspNetCore/Theming.md +++ b/docs/en/UI/AspNetCore/Theming.md @@ -122,9 +122,13 @@ The empty layout provides an empty page. It typically includes the following par ## Implementing a Theme -### The Easy Way +### The Easiest Way -The easiest way to create a new theme is to copy the [Basic Theme Source Code](https://github.com/abpframework/abp/blob/dev/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic) and customize it. Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic` NuGet package and reference to the local project. +The easiest way of creating a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. + +```bash +abp add-package Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic --with-source-code --add-to-solution-file +``` ### The ITheme Interface diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 83c54c652c..1b4a35c2e4 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -81,14 +81,18 @@ A theme is simply a Razor Class Library. ### The Easiest Way -The easiest way to create a new theme is copying the [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) and customizing it. +The easiest way to create a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. {{if UI == "Blazor"}} -Once you get a copy of the theme in your solution, remove the `Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme` NuGet package and reference to the local project. +```bash +abp add-package Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme --with-source-code --add-to-solution-file +``` {{end}} {{if UI == "BlazorServer"}} -Once you get a copy of the theme in your solution, remove `Volo.Abp.AspNetCore.Components.Server.BasicTheme` and `Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic` NuGet packages and add references to local projects. +```bash +abp add-package Volo.Abp.AspNetCore.Components.Server.BasicTheme --with-source-code --add-to-solution-file +``` {{end}} ### Global Styles / Scripts From 51871de100c80bc149f682fbf2a4380a31e11190 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Fri, 20 May 2022 10:28:16 +0300 Subject: [PATCH 75/89] Update Theming.md --- docs/en/UI/Blazor/Theming.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Blazor/Theming.md b/docs/en/UI/Blazor/Theming.md index 1b4a35c2e4..c7f92189de 100644 --- a/docs/en/UI/Blazor/Theming.md +++ b/docs/en/UI/Blazor/Theming.md @@ -81,7 +81,7 @@ A theme is simply a Razor Class Library. ### The Easiest Way -The easiest way to create a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. +The easiest way of creating a new theme is adding [Basic Theme Source Code](https://github.com/abpframework/abp/tree/dev/modules/basic-theme) module with source codes and customizing it. {{if UI == "Blazor"}} ```bash From 26742af89db780bbcde2ec28a13dbf279757de98 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 20 May 2022 18:04:44 +0800 Subject: [PATCH 76/89] Add unit test for the Check --- .../Volo/Abp/Check_Tests.cs | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs new file mode 100644 index 0000000000..58467fabb5 --- /dev/null +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections.Generic; +using Shouldly; +using Xunit; + +namespace Volo.Abp; + +public class Check_Tests +{ + [Fact] + public void NotNull_Test() + { + Check.NotNull("test", nameof(NotNull_Test)).ShouldBe("test"); + Check.NotNull(string.Empty, nameof(NotNull_Test)).ShouldBe(string.Empty); + Check.NotNull("test", nameof(NotNull_Test), maxLength: 4, minLength: 0).ShouldBe("test"); + + Assert.Throws(() => Check.NotNull(null, nameof(NotNull_Test))); + Assert.Throws(() => Check.NotNull(null, nameof(NotNull_Test))); + Assert.Throws(() => Check.NotNull("test", nameof(NotNull_Test), maxLength: 3)); + Assert.Throws(() => Check.NotNull("test", nameof(NotNull_Test), minLength: 5)); + } + + [Fact] + public void NotNullOrWhiteSpace_Test() + { + Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test)).ShouldBe("test"); + Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test), maxLength: 4, minLength: 0).ShouldBe("test"); + + Assert.Throws(() => Check.NotNullOrWhiteSpace(null, nameof(NotNullOrWhiteSpace_Test))); + Assert.Throws(() => Check.NotNullOrWhiteSpace(string.Empty, nameof(NotNullOrWhiteSpace_Test))); + Assert.Throws(() => Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test), maxLength: 3)); + Assert.Throws(() => Check.NotNullOrWhiteSpace("test", nameof(NotNullOrWhiteSpace_Test), minLength: 5)); + } + + [Fact] + public void NotNullOrEmpty_Test() + { + Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test)).ShouldBe("test"); + Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test), maxLength: 4, minLength: 0).ShouldBe("test"); + Check.NotNullOrEmpty(new List{"test"}, nameof(NotNullOrEmpty_Test)); + + Assert.Throws(() => Check.NotNullOrEmpty(null, nameof(NotNullOrEmpty_Test))); + Assert.Throws(() => Check.NotNullOrEmpty(string.Empty, nameof(NotNullOrEmpty_Test))); + Assert.Throws(() => Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test), maxLength: 3)); + Assert.Throws(() => Check.NotNullOrEmpty("test", nameof(NotNullOrEmpty_Test), minLength: 5)); + Assert.Throws(() => Check.NotNullOrEmpty(new List(), nameof(NotNullOrEmpty_Test))); + } + + [Fact] + public void AssignableTo_Test() + { + Check.AssignableTo(typeof(string), nameof(AssignableTo_Test)).ShouldBe(typeof(string)); + Check.AssignableTo(typeof(Child), nameof(AssignableTo_Test)).ShouldBe(typeof(Child)); + Check.AssignableTo(typeof(Child2), nameof(AssignableTo_Test)).ShouldBe(typeof(Child2)); + Check.AssignableTo(typeof(Child2), nameof(AssignableTo_Test)).ShouldBe(typeof(Child2)); + + Assert.Throws(() => Check.AssignableTo(typeof(Parent), nameof(AssignableTo_Test))); + Assert.Throws(() => Check.AssignableTo(typeof(Child), nameof(AssignableTo_Test))); + Assert.Throws(() => Check.AssignableTo(typeof(Parent), nameof(AssignableTo_Test))); + } + + [Fact] + public void Length_Test() + { + Check.Length("test", nameof(Length_Test), maxLength: 4).ShouldBe("test"); + Check.Length("test", nameof(Length_Test), maxLength: 5).ShouldBe("test"); + Check.Length("test", nameof(Length_Test), maxLength:4, minLength: 0).ShouldBe("test"); + Check.Length("test", nameof(Length_Test), maxLength:4, minLength: 4).ShouldBe("test"); + + Assert.Throws(() => Check.Length("test", nameof(Length_Test), maxLength: 0)); + Assert.Throws(() => Check.Length("test", nameof(Length_Test), maxLength: 3)); + Assert.Throws(() => Check.Length("test", nameof(Length_Test), maxLength: 4, minLength: 5)); + } + + [Fact] + public void Positive_Test() + { + Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + + Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + } + + [Fact] + public void Range_Test() + { + Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + + Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + } + + class Parent + { + + } + + class Child: Parent + { + + } + + class Child2: Child + { + + } +} \ No newline at end of file From b7a2189f992bd83fa4de02a278a0fa35c5307af3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 20 May 2022 18:10:54 +0800 Subject: [PATCH 77/89] Update Check_Tests.cs --- .../Volo/Abp/Check_Tests.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs index 58467fabb5..48a579c820 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Check_Tests.cs @@ -78,13 +78,22 @@ public class Check_Tests Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); Check.Positive(1.To(), nameof(Positive_Test)).ShouldBe(1.To()); + Check.Positive(Decimal.One, nameof(Positive_Test)).ShouldBe(Decimal.One); + Check.Positive(1.0f, nameof(Positive_Test)).ShouldBe(1.0f); + Check.Positive(1.0, nameof(Positive_Test)).ShouldBe(1.0); Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(0.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(Decimal.Zero, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.0f, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(0.0, nameof(Positive_Test))); Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); Assert.Throws(() => Check.Positive(-1.To(), nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-Decimal.One, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.0f, nameof(Positive_Test))); + Assert.Throws(() => Check.Positive(-1.0, nameof(Positive_Test))); } [Fact] @@ -93,13 +102,22 @@ public class Check_Tests Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); Check.Range(1.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To()).ShouldBe(1.To()); + Check.Range(Decimal.One, nameof(Range_Test), minimumValue: Decimal.One, maximumValue: 10.To()).ShouldBe(Decimal.One); + Check.Range(1.0f, nameof(Range_Test), minimumValue: 1.0f, maximumValue: 10.0f).ShouldBe(1.0f); + Check.Range(1.0, nameof(Range_Test), minimumValue: 1.0, maximumValue: 10.0).ShouldBe(1.0); Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(0.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(Decimal.Zero, nameof(Range_Test), minimumValue: Decimal.One, maximumValue: 10.To())); + Assert.Throws(() => Check.Range(0.0f, nameof(Range_Test), minimumValue: 1.0f, maximumValue: 10.0f)); + Assert.Throws(() => Check.Range(0.0, nameof(Range_Test), minimumValue: 1.0, maximumValue: 10.0)); Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: 1.To(), maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.To(), nameof(Range_Test), minimumValue: Decimal.One, maximumValue: 10.To())); + Assert.Throws(() => Check.Range(11.0f, nameof(Range_Test), minimumValue: 1.0f, maximumValue: 10.0f)); + Assert.Throws(() => Check.Range(11.0, nameof(Range_Test), minimumValue: 1.0, maximumValue: 10.0)); } class Parent From ce6c3f1afb657a73142add3c5da29d15327f9301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 20 May 2022 14:15:22 +0300 Subject: [PATCH 78/89] Introduce RemoteServiceConfigurationProviderExtensions. --- ...oteServiceConfigurationProviderExtensions.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs new file mode 100644 index 0000000000..1c6aaac21d --- /dev/null +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/RemoteServiceConfigurationProviderExtensions.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using JetBrains.Annotations; + +namespace Volo.Abp.Http.Client; + +public static class RemoteServiceConfigurationProviderExtensions +{ + [ItemNotNull] + public static Task GetConfigurationOrDefaultAsync( + this IRemoteServiceConfigurationProvider provider) + => provider.GetConfigurationOrDefaultAsync(RemoteServiceConfigurationDictionary.DefaultName); + + [ItemNotNull] + public static Task GetConfigurationOrDefaultOrNullAsync( + this IRemoteServiceConfigurationProvider provider) + => provider.GetConfigurationOrDefaultOrNullAsync(RemoteServiceConfigurationDictionary.DefaultName); +} \ No newline at end of file From 2e08429cc42369e70750e366b20dbef2d3bd5de8 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 20 May 2022 15:43:30 +0300 Subject: [PATCH 79/89] Cli: Support for nested conditions --- .../Files/FileEntryExtensions.cs | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs index 8543ffb1ac..b5edcd5d54 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs @@ -6,6 +6,8 @@ namespace Volo.Abp.Cli.ProjectBuilding.Files; public static class FileEntryExtensions { + private static int _maximumRecursionCount = 20; + public static FileEntry ReplaceText(this FileEntry file, string oldText, string newText) { file.NormalizeLineEndings(); @@ -20,7 +22,7 @@ public static class FileEntryExtensions public static void RemoveTemplateCodeMarkers(this FileEntry file) { - if (!file.Content.Contains("")) + if (!file.Content.Contains("") ) { return; } @@ -49,9 +51,9 @@ public static class FileEntryExtensions file.SetLines(newLines); } - private static void RemoveMarkedTemplateCode(this FileEntry file, List symbols) + private static void RemoveMarkedTemplateCode(this FileEntry file, List symbols, int recursionCount = 0) { - if (!file.Content.Contains("")) + if (!file.Content.Contains(" _maximumRecursionCount) { return; } @@ -97,9 +99,25 @@ public static class FileEntryExtensions continue; } - while (i < lines.Length && !lines[i].Contains("")) + var innerConditionCount = 0; + + while (i < lines.Length) { - ++i; + i++; + + if (lines[i].Contains("")) + { + if (innerConditionCount < 1) + { + break; + } + + innerConditionCount--; + } } if (lines[i+1].Contains(" Date: Fri, 20 May 2022 17:53:51 +0300 Subject: [PATCH 80/89] Cli: Improve --- .../Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs | 5 +++-- .../Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs index b5edcd5d54..a5085f83a9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs @@ -39,9 +39,9 @@ public static class FileEntryExtensions { //TODO: What if we use inline like: some-code //TODO: This logic skips the code in that case. Should handle it - ++i; + continue; } - + if (i < lines.Length) { newLines.Add(lines[i]); @@ -146,6 +146,7 @@ public static class FileEntryExtensions var condition = marker.Trim() .RemovePreFix("//").Trim() .RemovePreFix("@*").Trim() + .RemovePreFix("#").Trim() .RemovePreFix("