Browse Source

Merge branch 'rel-9.2' into timezone

pull/22236/head
maliming 2 years ago
parent
commit
9c74cbb012
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 4
      docs/en/docs-nav.json
  2. BIN
      docs/en/images/pen-test-alert-list-9.1.png
  3. 67
      docs/en/others/penetration-test-report.md
  4. 64
      docs/en/release-info/migration-guides/abp-9-2.md
  5. BIN
      docs/en/release-info/migration-guides/images/require-email-verification-for-register.png
  6. 1
      docs/en/release-info/migration-guides/index.md
  7. 13
      docs/en/release-info/release-notes.md
  8. 20
      docs/en/release-info/road-map.md
  9. 6
      modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.abppkg.analyze.json
  10. 50
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.analyze.json
  11. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.analyze.json
  12. 194
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.analyze.json
  13. 11
      modules/docs/src/Volo.Docs.Admin.Application/Volo.Docs.Admin.Application.abppkg.analyze.json
  14. 49
      modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json
  15. 266
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.analyze.json

4
docs/en/docs-nav.json

@ -613,6 +613,10 @@
"text": "Google Cloud Storage Provider",
"path": "framework/infrastructure/blob-storing/google.md"
},
{
"text": "Bunny Provider",
"path": "framework/infrastructure/blob-storing/bunny.md"
},
{
"text": "Create a Custom Provider",
"path": "framework/infrastructure/blob-storing/custom-provider.md"

BIN
docs/en/images/pen-test-alert-list-9.1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

67
docs/en/others/penetration-test-report.md

@ -1,6 +1,6 @@
# ABP Penetration Test Report
The ABP Commercial MVC `v9.0.0` application template has been tested against security vulnerabilities by the [OWASP ZAP v2.14.0](https://www.zaproxy.org/) tool. The demo web application was started on the `https://localhost:44349` address. The below alerts have been reported by the pentest tool. These alerts are sorted by the risk level as high, medium, and low. The informational alerts are not mentioned in this document.
The ABP Commercial MVC `v9.1.0` application template has been tested against security vulnerabilities by the [OWASP ZAP v2.14.0](https://www.zaproxy.org/) tool. The demo web application was started on the `https://localhost:44349` address. The below alerts have been reported by the pentest tool. These alerts are sorted by the risk level as high, medium, and low. The informational alerts are not mentioned in this document.
Many of these alerts are **false-positive**, meaning the vulnerability scanner detected these issues, but they are not exploitable. It's clearly explained for each false-positive alert why this alert is a false-positive.
@ -10,53 +10,23 @@ In the next sections, you will find the affected URLs, attack parameters (reques
There are high _(red flag)_, medium _(orange flag)_, low _(yellow flag)_, and informational _(blue flag)_ alerts.
![penetration-test-9.0.0](../images/pen-test-alert-list-9.0.png)
![penetration-test-9.1.0](../images/pen-test-alert-list-9.1.png)
> The informational alerts are not mentioned in this document. These alerts are not raising any risks on your application and they are optional.
### Path Traversal [Risk: High] - False Positive
### Spring4Shell [Risk: High] - False Positive
- *[POST] - https://localhost:44349/Account/Login* (attack: **\Login**)
- *[POST] - https://localhost:44349/Account/LinkLogin* (attack: **\LinkLogin**)
- *[POST] - https://localhost:44349/Account/Register* (attack: **\Register**)
- *[POST] - https://localhost:44349/Account/SecurityLogs* (attack: **\SecurityLogs**)
- *[POST] - https://localhost:44349/Identity/SecurityLogs* (attack: **\SecurityLogs**)
- *[POST] - https://localhost:44349/Account/ForgotPassword* (attack: **class.module.classLoader.DefaultAssertionStatus=nonsense**)
- *[POST] - https://localhost:44349/Account/Login* (attack: **class.module.classLoader.DefaultAssertionStatus=nonsense**)
- *[POST] - https://localhost:44349/Account/Login?ReturnUrl=%2FSettingManagement* (attack: **class.module.classLoader.DefaultAssertionStatus=nonsense**)
**Description**:
The Path Traversal attack technique allows an attacker access to files, directories, and commands that potentially reside outside the web document root directory. An attacker may manipulate a URL in such a way that the website will execute or reveal the contents of arbitrary files anywhere on the web server. Any device that exposes an HTTP-based interface is potentially vulnerable to Path Traversal.
**Solution**:
This is a **false-positive** alert since ABP does all related checks for this kind of attacks on the backend side for these endpoints.
### SQL Injection [Risk: High] - False Positive
* *[POST] — https://localhost:44349/Account/Login* (attack: **1q2w3E* AND 1=1 --**)
* *[POST] — https://localhost:44349/Account/ImpersonateUser* (attack: **CfDJ8Pyqeg0vtHtJpnK-9eLaft7-JxLJfJ6WHKPOdBZVxz14BDo061qpJ2NLplgAn2Hw16ec0IR38_wWAUkJGxP8hL6PcLfH0bh-ATNTspWyWYTGGbiH-zeKWiS5vWX-br2BA1hE7Dc45eWGUZNcVc_vm2s AND 1=1 --**)
* *[POST] — https://localhost:44349/Abp/MultiTenancy/TenantSwitchModal* (attack: **CfDJ8Pyqeg0vtHtJpnK-9eLaft7-JxLJfJ6WHKPOdBZVxz14BDo061qpJ2NLplgAn2Hw16ec0IR38_wWAUkJGxP8hL6PcLfH0bh-ATNTspWyWYTGGbiH-zeKWiS5vWX-br2BA1hE7Dc45eWGUZNcVc_vm2s AND 1=1 --**)
* *[POST] — https://localhost:44349/Identity/OrganizationUnits/\** (attack: **6f4cd0ab-f4eb-7ce0-8b26-3a138af1840d" AND '1'='1**) (also, several other URLs...)
* *[POST] — https://localhost:44349/Identity/ClaimTypes/CreateModal* (attack: **aaaad AND '1'='1**)
**Description**:
SQL injection may be possible. SQL injection is a web security vulnerability that allows an attacker to interfere with the queries that an application makes to its database. It allows an attacker to view data that they are not normally able to retrieve and perform unauthorized actions.
The application appears to be vulnerable to CVE-2022-22965 (otherwise known as Spring4Shell) - remote code execution (RCE) via data binding.
**Explanation**:
ABP uses Entity Framework Core and LINQ. **It's safe against SQL Injection because it passes all data to the database via SQL parameters.** LINQ queries are not composed by using string manipulation or concatenation, that's why they are not susceptible to traditional SQL injection attacks. Therefore, this is a **false-positive** alert.
### SQL Injection - Authentication Bypass [Risk: High] - False Positive
* *[POST] — https://localhost:44349/Account/Login* (attack: **false AND 1=1 --**)
**Description**:
SQL injection may be possible on a login page, potentially allowing the application's authentication mechanism to be bypassed.
**Solution**:
This alert indicates that we must not trust client side input (even if there is client side validation in place) and check all data on the server side. ABP Framework already does that and makes server-side validations while authenticating a user. Therefore this is a **false-positive** alert.
ABP Framework is built on top of ASP.NET Core and does not use the Spring Framework. This application does not rely on Java-based technologies, making it immune to vulnerabilities like Spring4Shell. The detection is a false positive as there are no Spring dependencies in the project.
### Absence of Anti-CSRF Tokens [Risk: Medium] — False Positive
@ -130,6 +100,10 @@ Configure<AbpSecurityHeadersOptions>(options =>
- *[GET] — https://localhost:44349/Abp/Languages/Switch?culture=ZAP%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%0A&returnUrl=%2F&uiCulture=ar* (with combination of different parameters)
- *[GET] — https://localhost:44349/Abp/ApplicationLocalizationScript?cultureName=ZAP%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%0A* (with combination of different parameters)
- *[GET] — https://localhost:44349/api/language-management/language-texts?filter=aa&resourceName=&baseCultureName=es&targetCultureName=ZAP%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%0A&getOnlyEmptyValues=false&sorting=name+asc&skipCount=0&maxResultCount=10* (with combination of different parameters)
- *[GET] — https://localhost:44349/LanguageManagement/Texts/Edit?name=IncorrectCaptchaAnswer&targetCultureName=sv&resourceName=AbpAccount&baseCultureName=ZAP%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%25n%25s%0A* (with combination of different parameters)
- *[POST] — https://localhost:44349/Account/Login?ReturnUrl=%2FSettingManagement*
- *[POST] — https://localhost:44349/Account/Manage* (with combination of different parameters)
**Description:**
@ -149,14 +123,9 @@ The second URL is also a **false-positive** alert because there is no bad charac
### XSLT Injection [Risk: Medium] - False Positive
- *[GET] — https://localhost:44349/Abp/Languages/Switch?culture=%3Cxsl%3Avalue-of+select%3D%22system-property%28%27xsl%3Avendor%27%29%22%2F%3E&returnUrl=%2F&uiCulture=ar*
- *[POST] — https://localhost:44349/Account/Login _(same URL with different parameters...)_*
- *[POST] — https://localhost:44349/Account/ImpersonateUser _(same URL with different parameters...)_*
- *[POST] — https://localhost:44349/Account/Register _(same URL with different parameters...)_*
- *[POST] — https://localhost:44349/Account/Manage _(same URL with different parameters...)_*
- *[GET] — https://localhost:44349/Abp/Languages/Switch?culture=%3Cxsl%3Avalue-of+select%3D%22system-property%28%27xsl%3Avendor%27%29%22%2F%3E&returnUrl=%2F&uiCulture=tr _(same URL with different parameters...)_*
- *[POST] — https://localhost:44349/Account/ForgotPassword _(same URL with different parameters...)_*
- *[POST] — https://localhost:44349/SaasWidgets/LatestTenants _(same URL with different parameters...)_*
- *[POST] — https://localhost:44349/AuditLogs*
- *[GET] — https://localhost:44349/SaasWidgets/LatestTenants _(same URL with different parameters...)_*
**Description**:
@ -168,10 +137,12 @@ This is a **false-positive** alert. v9.0 uses .NET 9 and the XSLT transformation
### Application Error Disclosure [Risk: Low] — False Positive
- *[GET] — https://localhost:44349/Abp/Languages/Switch*
- *[POST] — https://localhost:44349/Account/ImpersonateUser*
- *[GET] — https://localhost:44349/Account/ExternalLogins*
- *[GET] — https://localhost:44349/Account/Logout*
- *[GET] — https://localhost:44349/OrganizationUnits*
- *[GET] — https://localhost:44349/HostDashboard*
- *[GET] — https://localhost:44349/Saas/Host/Editions*
- *[GET] — https://localhost:44349/Saas/Host/Tenants*
**Description:**
@ -326,7 +297,7 @@ This vulnerability was reported as a positive alert, because ABP uses the [zxcvb
- *[GET] — https://localhost:44349/client-proxies/account-proxy.js?_v=638550091940000000 (and other client-proxies related URLs...)*
- *[GET] — https://localhost:44349/favicon.svg*
- *[GET] — https://localhost:44349/images/getting-started/bg-01.png* (and other image URLs...)
- *[GET] — https://localhost:44349/images/getting-started/bg-01.png* (and other image URLs...)
- *[GET] — https://localhost:44349/global-styles.css?_v=638556076064360335*
- *[GET] — https://localhost:44349/libs/@fortawesome/fontawesome-free/css/all.css?_v=%5CWEB-INF%5Cweb.xml (other several URLs...)*
- other URLs...

64
docs/en/release-info/migration-guides/abp-9-2.md

@ -0,0 +1,64 @@
# ABP Version 9.2 Migration Guide
This document is a guide for upgrading ABP v9.x solutions to ABP v9.2. There are some changes in this version that may affect your applications, please read it carefully and apply the necessary changes to your application.
## Open-Source (Framework)
### Added `ApplicationName` Property to Isolate Background Jobs & Background Workers
When multiple applications share the same storage for [ABP's Background Jobs Module](../../modules/background-jobs.md), jobs from one application might be visible to another application. This can lead to the following issues:
1. Applications may attempt to process jobs that don't belong to them
2. These attempts fail with "Undefined background job for the job name" error
3. Failed jobs are marked as `IsAbandoned = true`
4. The original application can no longer process these abandoned jobs
To fix this, we added the `ApplicationName` property to the `AbpBackgroundJobWorkerOptions` class. This property allows you to specify the application name, which helps isolate jobs between different applications. (See the [PR](https://github.com/abpframework/abp/pull/22169) for more details.)
**By default there is no breaking change. However, you need to create a migration for the database to add the `ApplicationName` column to the relevant table and apply it to your database.**
### Upgraded `MongoDB.Driver` to `3.1.0`
In this version, we upgraded `MongoDB.Driver` to `3.1.0`. To migrate your application, please refer to our [MongoDB Driver 2 to 3 Migration Guide](./MongoDB-Driver-2-to-3.md) document.
### Replaced Toastr with Custom Implementation (without depending on any 3rd party library)
In this version, we replaced Toastr with a custom implementation that does not depend on any 3rd party library. This is a breaking change if you are using the `Toastr` library.
Here are the migration steps:
1. Remove any direct Toastr dependencies from your application
2. Update your notification calls to use the new API
3. Migrate any custom styles or configurations
For detailed implementation guidelines and API documentation, see:
- [Notify Documentation](../../framework/ui/mvc-razor-pages/javascript-api/notify.md)
- [PR #21940 for more information](https://github.com/abpframework/abp/pull/21940)
## PRO
> Please check the **Open-Source (Framework)** section before reading this section. The listed topics might affect your application and you might need to take care of them.
If you are a paid-license owner and using the ABP's paid version, then please follow the following sections to get informed about the breaking changes and apply the necessary ones:
### Identity Pro Module: Require Email Verification to Register
In this version, we added a new setting to the Identity Pro module to require email verification to register. This is a security measure to prevent spam registrations:
![](./images/require-email-verification-for-register.png)
Typically, no changes are required. However, if you have inherited from the `AccountAppService` class and implemented your own logic, you'll need to update your constructor to match the new signature since two new services are now injected:
```diff
//code omitted for brevity...
+ protected IDistributedCache<EmailConfirmationCodeCacheItem> EmailConfirmationCodeCache { get; }
+ protected IdentityErrorDescriber IdentityErrorDescriber { get; }
public AccountAppService(
- IdentityUserTwoFactorChecker identityUserTwoFactorChecker)
+ IdentityUserTwoFactorChecker identityUserTwoFactorChecker,
+ IdentityErrorDescriber identityErrorDescriber)
```

BIN
docs/en/release-info/migration-guides/images/require-email-verification-for-register.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

1
docs/en/release-info/migration-guides/index.md

@ -2,6 +2,7 @@
The following documents explain how to migrate your existing ABP applications. We write migration documents only if you need to take an action while upgrading your solution. Otherwise, you can easily upgrade your solution using the [abp update command](../upgrading.md).
- [9.x to 9.2](abp-9-2.md)
- [9.0 to 9.1](abp-9-1.md)
- [8.x to 9.0](abp-9-0.md)
- [8.x to 8.3](abp-8-3.md)

13
docs/en/release-info/release-notes.md

@ -4,9 +4,20 @@ This document contains **brief release notes** for each release. Release notes o
> If you want to read the release notes for each ABP Studio release, check it out from [here](../studio/release-notes.md).
## 9.2 (2025-03-25)
This is currently a RC (release-candidate) and you can see the detailed **[blog post / announcement](https://abp.io/community/articles/abp-platform-9.2-rc-has-been-released-jpq072nh)** for the v9.2 release.
* Added `ApplicationName` Property to Isolate Background Jobs & Background Workers
* Docs Module: Added "Alternative Words" to Filter Items
* Introducing the [Bunny BLOB Storage Provider](../framework/infrastructure/blob-storing/bunny.md)
* Upgraded `MongoDB.Driver` to **v3.1.0**
* Identity Pro Module: Require Email Verification to Register
* Switching users during OAuth login
## 9.1 (2025-01-16)
This is currently a RC (release-candidate) and you can see the detailed **[blog post / announcement](https://abp.io/blog/abp-9-1-release-candidate)** for the v9.1 release.
See the detailed **[blog post / announcement](https://abp.io/community/articles/abp.io-platform-9.1-final-has-been-released-h96a56qa)** for the v9.1 release.
* Upgraded to Angular 19
* Upgraded to OpenIddict 6.0

20
docs/en/release-info/road-map.md

@ -4,9 +4,9 @@ This document provides a road map, release schedule, and planned features for th
## Next Versions
### v9.2
### v9.3
The next version will be 9.2 and planned to release the stable 9.2 version in June 2025. We will be mostly working on the following topics:
The next version will be 9.3 and planned to release the stable 9.3 version in July 2025. We will be mostly working on the following topics:
* Framework
* Upgrading 3rd-party dependencies
@ -15,22 +15,20 @@ The next version will be 9.2 and planned to release the stable 9.2 version in Ju
* ABP Suite
* Define navigation properties without target string property dependency
* Improvements one-to-many scenarios
* Access to default code generation templates for customized templates
* File Upload Modal enhancements
* Master/Detail DataGrid Toggle Detail Row Enhancements for Blazor UI
* ABP Studio
* Allow to directly create new solutions with ABP's RC (Release Candidate) versions
* Automate more details on new service creation for a microservice solution
* Support multiple concurrent Kubernetes deployment/integration scenarios
* Improve the module installation experience / installation guides
* Auto-install 3rd-party dependencies
* Better handle long log files
* Allow to directly create new solutions with ABP's RC (Release Candidate) versions
* Support Intel processors for Mac computers, support ARM chipset for Windows and support Linux OS
* Improve client proxy generation experience
* Modular Monolith Application Startup Template
* Application modules
* Account module: Support mixed social/local login scenarios & enforcing email verification in wide aspect
* Account module: Support mixed social/local login scenarios & adding security related features
* UI/UX improvements on existing application modules
* Updating existing tutorials & documents (with other UI & DB options)
@ -55,6 +53,8 @@ The ABP framework is [open source](https://github.com/abpframework/abp) and free
* [#15932](https://github.com/abpframework/abp/issues/15932) / Introduce ABP Diagnostics Module
* [#16744](https://github.com/abpframework/abp/issues/16744) / State Management API
* [#17815](https://github.com/abpframework/abp/issues/17815) / Operation Rate Limiting
* [#119](https://github.com/abpframework/abp/issues/119) / REST API Versioning Improvements
* [#2087](https://github.com/abpframework/abp/issues/2087) / RavenDB Database Support
### Application Modules / UI Themes
@ -100,7 +100,7 @@ Here, are some of the important planned features for next ABP Studio versions:
Here, are some of the important planned features for the next ABP Suite versions:
* Handle image properties for entities
* Handle image properties for entities (in addition to file properties, which is already supported)
* Allow to define extra properties for DTOs those are not a part of the entity
* Allow to create pages instead of modals for CRUD page generation
* View-only (detail view) modal/page for an entity
@ -111,7 +111,7 @@ Here, are some of the important planned features for the next ABP Suite versions
## Feature Requests
Vote for your favorite feature on the related GitHub issues (and write your thoughts). You can create an issue on [the GitHub repository](https://github.com/abpframework/abp) for your feature requests, but first search in the existing issues please. You can also contact info@abp.io for your feature requests and other suggestions.
Vote for your favorite feature on the related GitHub issues (and write your thoughts). You can create an issue on [the GitHub repository](https://github.com/abpframework/abp) for your feature requests, but please first search the existing issues. You can also contact [info@abp.io](mailto:info@abp.io) for your feature requests and other suggestions.
## See Also

6
modules/blogging/app/Volo.BloggingTestApp/Volo.BloggingTestApp.abppkg.analyze.json

@ -36,9 +36,9 @@
"name": "BloggingAdminApplicationModule"
},
{
"declaringAssemblyName": "Volo.BloggingTestApp.EntityFrameworkCore",
"namespace": "Volo.BloggingTestApp.EntityFrameworkCore",
"name": "BloggingTestAppEntityFrameworkCoreModule"
"declaringAssemblyName": "Volo.BloggingTestApp.MongoDB",
"namespace": "Volo.BloggingTestApp.MongoDB",
"name": "BloggingTestAppMongoDbModule"
},
{
"declaringAssemblyName": "Volo.Abp.Account.Web",

50
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.analyze.json

@ -803,6 +803,23 @@
"isOptional": false
}
]
},
{
"returnType": "ListResultDto<PermissionLookupDto>",
"namespace": "Volo.CmsKit.Admin.Menus",
"name": "GetPermissionLookupAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "PermissionLookupInputDto",
"name": "inputDto",
"isOptional": false
}
]
}
],
"contentType": "applicationService",
@ -1328,6 +1345,17 @@
}
]
},
{
"returnType": "ListResultDto<BlogDto>",
"namespace": "Volo.CmsKit.Admin.Blogs",
"name": "GetAllListAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": []
},
{
"returnType": "BlogDto",
"namespace": "Volo.CmsKit.Admin.Blogs",
@ -1367,6 +1395,28 @@
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Admin.Blogs",
"name": "MoveAllBlogPostsAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "blogId",
"isOptional": false
},
{
"type": "Nullable<Guid>",
"name": "assignToBlogId",
"isOptional": false
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Admin.Blogs",

6
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.analyze.json

@ -159,6 +159,12 @@
"name": "CreateModalModel",
"summary": null
},
{
"namespace": "Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs",
"contentType": "webPage",
"name": "DeleteBlogModal",
"summary": null
},
{
"namespace": "Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs",
"contentType": "webPage",

194
modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.analyze.json

@ -1085,6 +1085,11 @@
"type": "System.Nullable`1[System.Guid]",
"name": "TenantId",
"summary": null
},
{
"type": "System.String",
"name": "RequiredPermissionName",
"summary": null
}
],
"contentType": "aggregateRoot",
@ -2129,6 +2134,23 @@
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Blogs",
"name": "SetBlogId",
"summary": null,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "blogId",
"isOptional": false
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Blogs",
@ -3083,6 +3105,38 @@
"isOptional": false
}
]
},
{
"returnType": "List<String>",
"namespace": "Volo.CmsKit.MarkedItems",
"name": "GetEntityIdsFilteredByUserAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "userId",
"isOptional": false
},
{
"type": "String",
"name": "entityType",
"isOptional": false
},
{
"type": "Nullable<Guid>",
"name": "tenantId",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
}
],
"implementingInterfaces": [
@ -3532,6 +3586,23 @@
"isOptional": false
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Blogs",
"name": "DeleteAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "blogId",
"isOptional": false
}
]
}
],
"implementingInterfaces": [
@ -5026,6 +5097,33 @@
"isOptional": true
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Comments",
"name": "DeleteByEntityTypeAndIdAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "entityType",
"isOptional": false
},
{
"type": "String",
"name": "entityId",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
}
],
"contentType": "repositoryInterface",
@ -5229,6 +5327,11 @@
"name": "tagId",
"isOptional": true
},
{
"type": "Nullable<Guid>",
"name": "favoriteUserId",
"isOptional": true
},
{
"type": "Nullable<BlogPostStatus>",
"name": "statusFilter",
@ -5271,6 +5374,11 @@
"name": "tagId",
"isOptional": true
},
{
"type": "Nullable<Guid>",
"name": "favoriteUserId",
"isOptional": true
},
{
"type": "Nullable<BlogPostStatus>",
"name": "statusFilter",
@ -5449,6 +5557,55 @@
"isOptional": true
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Blogs",
"name": "UpdateBlogAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "sourceBlogId",
"isOptional": false
},
{
"type": "Nullable<Guid>",
"name": "targetBlogId",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "Void",
"namespace": "Volo.CmsKit.Blogs",
"name": "DeleteByBlogIdAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "blogId",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
}
],
"contentType": "repositoryInterface",
@ -5535,6 +5692,43 @@
}
]
},
{
"returnType": "List<BlogWithBlogPostCount>",
"namespace": "Volo.CmsKit.Blogs",
"name": "GetListWithBlogPostCountAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "filter",
"isOptional": true
},
{
"type": "String",
"name": "sorting",
"isOptional": true
},
{
"type": "Int32",
"name": "maxResultCount",
"isOptional": true
},
{
"type": "Int32",
"name": "skipCount",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "Int64",
"namespace": "Volo.CmsKit.Blogs",

11
modules/docs/src/Volo.Docs.Admin.Application/Volo.Docs.Admin.Application.abppkg.analyze.json

@ -455,6 +455,17 @@
"isPrivate": false,
"isStatic": false,
"parameters": []
},
{
"returnType": "List<ProjectWithoutDetailsDto>",
"namespace": "Volo.Docs.Admin.Documents",
"name": "GetProjectsAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": []
}
],
"contentType": "applicationService",

49
modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json

@ -291,6 +291,12 @@
"namespace": "Volo.Abp.Domain.Entities",
"declaringAssemblyName": "Volo.Abp.Data",
"fullName": "Volo.Abp.Domain.Entities.IHasConcurrencyStamp"
},
{
"name": "IHasCreationTime",
"namespace": "Volo.Abp.Auditing",
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts",
"fullName": "Volo.Abp.Auditing.IHasCreationTime"
}
],
"methods": [
@ -351,6 +357,11 @@
"type": "Volo.Abp.Identity.IdentityClaimValueType",
"name": "ValueType",
"summary": null
},
{
"type": "System.DateTime",
"name": "CreationTime",
"summary": null
}
],
"contentType": "aggregateRoot",
@ -488,6 +499,12 @@
"namespace": "Volo.Abp.Auditing",
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts",
"fullName": "Volo.Abp.Auditing.IHasEntityVersion"
},
{
"name": "IHasCreationTime",
"namespace": "Volo.Abp.Auditing",
"declaringAssemblyName": "Volo.Abp.Auditing.Contracts",
"fullName": "Volo.Abp.Auditing.IHasCreationTime"
}
],
"methods": [
@ -649,6 +666,11 @@
"type": "System.Int32",
"name": "EntityVersion",
"summary": "A version value that is increased whenever the entity is changed."
},
{
"type": "System.DateTime",
"name": "CreationTime",
"summary": null
}
],
"contentType": "aggregateRoot",
@ -5656,6 +5678,33 @@
}
]
},
{
"returnType": "List<OrganizationUnit>",
"namespace": "Volo.Abp.Identity",
"name": "GetListByDisplayNamesAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String[]",
"name": "displayNames",
"isOptional": false
},
{
"type": "Boolean",
"name": "includeDetails",
"isOptional": true
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "List<IdentityRole>",
"namespace": "Volo.Abp.Identity",

266
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.analyze.json

@ -797,66 +797,7 @@
"isOptional": false
},
{
"type": "Guid",
"name": "client",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "List<OpenIddictToken>",
"namespace": "Volo.Abp.OpenIddict.Tokens",
"name": "FindAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "subject",
"isOptional": false
},
{
"type": "Guid",
"name": "client",
"isOptional": false
},
{
"type": "String",
"name": "status",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "List<OpenIddictToken>",
"namespace": "Volo.Abp.OpenIddict.Tokens",
"name": "FindAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "subject",
"isOptional": false
},
{
"type": "Guid",
"type": "Nullable<Guid>",
"name": "client",
"isOptional": false
},
@ -1036,6 +977,43 @@
}
]
},
{
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Tokens",
"name": "RevokeAsync",
"summary": null,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "subject",
"isOptional": false
},
{
"type": "Nullable<Guid>",
"name": "applicationId",
"isOptional": false
},
{
"type": "String",
"name": "status",
"isOptional": false
},
{
"type": "String",
"name": "type",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Tokens",
@ -1054,7 +1032,51 @@
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Tokens",
"name": "RevokeByApplicationIdAsync",
"summary": null,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "applicationId",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Tokens",
"name": "RevokeBySubjectAsync",
"summary": null,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "subject",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
}
@ -1344,10 +1366,20 @@
"isOptional": false
},
{
"type": "Guid",
"type": "Nullable<Guid>",
"name": "client",
"isOptional": false
},
{
"type": "String",
"name": "status",
"isOptional": false
},
{
"type": "String",
"name": "type",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
@ -1358,26 +1390,16 @@
{
"returnType": "List<OpenIddictAuthorization>",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "FindAsync",
"name": "FindByApplicationIdAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "subject",
"isOptional": false
},
{
"type": "Guid",
"name": "client",
"isOptional": false
},
{
"type": "String",
"name": "status",
"name": "applicationId",
"isOptional": false
},
{
@ -1388,33 +1410,40 @@
]
},
{
"returnType": "List<OpenIddictAuthorization>",
"returnType": "OpenIddictAuthorization",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "FindAsync",
"name": "FindByIdAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "subject",
"isOptional": false
},
{
"type": "Guid",
"name": "client",
"name": "id",
"isOptional": false
},
{
"type": "String",
"name": "status",
"isOptional": false
},
"type": "CancellationToken",
"name": "cancellationToken",
"isOptional": true
}
]
},
{
"returnType": "List<OpenIddictAuthorization>",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "FindBySubjectAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "String",
"name": "type",
"name": "subject",
"isOptional": false
},
{
@ -1427,7 +1456,7 @@
{
"returnType": "List<OpenIddictAuthorization>",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "FindByApplicationIdAsync",
"name": "ListAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
@ -1435,8 +1464,13 @@
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "applicationId",
"type": "Nullable<Int32>",
"name": "count",
"isOptional": false
},
{
"type": "Nullable<Int32>",
"name": "offset",
"isOptional": false
},
{
@ -1447,9 +1481,9 @@
]
},
{
"returnType": "OpenIddictAuthorization",
"returnType": "Int64",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "FindByIdAsync",
"name": "PruneAsync",
"summary": null,
"isAsync": true,
"isPublic": true,
@ -1457,8 +1491,8 @@
"isStatic": false,
"parameters": [
{
"type": "Guid",
"name": "id",
"type": "DateTime",
"name": "date",
"isOptional": false
},
{
@ -1469,11 +1503,11 @@
]
},
{
"returnType": "List<OpenIddictAuthorization>",
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "FindBySubjectAsync",
"name": "RevokeAsync",
"summary": null,
"isAsync": true,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
@ -1483,6 +1517,21 @@
"name": "subject",
"isOptional": false
},
{
"type": "Nullable<Guid>",
"name": "applicationId",
"isOptional": false
},
{
"type": "String",
"name": "status",
"isOptional": false
},
{
"type": "String",
"name": "type",
"isOptional": false
},
{
"type": "CancellationToken",
"name": "cancellationToken",
@ -1491,23 +1540,18 @@
]
},
{
"returnType": "List<OpenIddictAuthorization>",
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "ListAsync",
"name": "RevokeByApplicationIdAsync",
"summary": null,
"isAsync": true,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "Nullable<Int32>",
"name": "count",
"isOptional": false
},
{
"type": "Nullable<Int32>",
"name": "offset",
"type": "Guid",
"name": "applicationId",
"isOptional": false
},
{
@ -1518,18 +1562,18 @@
]
},
{
"returnType": "Int64",
"returnType": "ValueTask<Int64>",
"namespace": "Volo.Abp.OpenIddict.Authorizations",
"name": "PruneAsync",
"name": "RevokeBySubjectAsync",
"summary": null,
"isAsync": true,
"isAsync": false,
"isPublic": true,
"isPrivate": false,
"isStatic": false,
"parameters": [
{
"type": "DateTime",
"name": "date",
"type": "String",
"name": "subject",
"isOptional": false
},
{

Loading…
Cancel
Save