* Support managing posts in user center
Signed-off-by: John Niang <johnniang@foxmail.com>
* Adapt post management in user center
Signed-off-by: Ryan Wang <i@ryanc.cc>
---------
Signed-off-by: John Niang <johnniang@foxmail.com>
Signed-off-by: Ryan Wang <i@ryanc.cc>
Co-authored-by: Ryan Wang <i@ryanc.cc>
#### What type of PR is this?
/kind feature
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
新增用户邮箱验证机制
#### Which issue(s) this PR fixes:
Fixes#4656
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
新增用户邮箱验证机制
```
#### What type of PR is this?
/kind feature
/area core
/area console
#### What this PR does / why we need it:
新增用户站内消息删除功能
<img width="588" alt="图片" src="https://github.com/halo-dev/halo/assets/21301288/6034e43c-0dbc-4e4e-88c6-4848c8b25e0c">
#### Which issue(s) this PR fixes:
Fixes#4706
#### Does this PR introduce a user-facing change?
```release-note
新增用户站内消息删除功能
```
#### What type of PR is this?
/kind feature
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
暴露 Actuator 指标端点以便监控服务状态
暴露了 Actuator 端点并提供角色模板,用户可创建 PAT 用于获取 Halo 运行状态数据或分配给其他用户
#### Which issue(s) this PR fixes:
Fixes#4894
#### Does this PR introduce a user-facing change?
```release-note
暴露 Actuator 指标端点以便监控服务状态
```
* fix: OOM occured when using ab to test custom endpoints provided by plugin
* refactor: custom endpoints to rotuer function register for plugin
* refactor: bean post processor register
* Register AggregatedRouterFunction bean instead of adding bean factory post processor
* Remove debug lines
---------
Co-authored-by: John Niang <johnniang@foxmail.com>
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
Respond HTTP status CREATED for system initialization API instead of string `true`.
#### Which issue(s) this PR fixes:
Fixes#4885
#### Does this PR introduce a user-facing change?
```release-note
None
```
<!-- Thanks for sending a pull request! Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->
#### What type of PR is this?
/kind bug
<!--
添加其中一个类别:
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind improvement
适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
#### What this PR does / why we need it:
在加入索引前判断文章的可见性。只将PUBLIC文章加入索引,修复手动刷新搜索索引会将私有文章加入索引的问题
#### Which issue(s) this PR fixes:
Fix#4879
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
#### Special notes for your reviewer:
null
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
修复手动刷新搜索索引会将私有文章加入索引的问题
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
This PR upgrades to SpringDoc 2.2.1-SNAPSHOT to resolve the problem of Swagger API doc display errors.
#### Does this PR introduce a user-facing change?
```release-note
升级 SpringDoc 至 2.2.1-SNAPSHOT 以解决部分 API 文档无法正常使用的问题
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
- Upgrade to Spring Boot 3.2.0-RC2.
- Fix unit test errors due to upgrading.
See https://github.com/spring-projects/spring-boot/releases/tag/v3.2.0-RC2 for more.
#### Does this PR introduce a user-facing change?
Anyone who is using H2 database and wants to upgrade this version has to backup and restore Halo or upgrade old h2 database file manually.
```release-note
[Action Required] 升级 Spring Boot 至 3.2.0-RC2
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR fixes the unit test errors on Windows environment, mainly caused by different file systems.
```bash
PS C:\Users\johnniang\IdeaProjects\halo> ./gradlew check
> Task :application:checkstyleTest
Checkstyle rule violations were found. See the report at: file:///C:/Users/johnniang/IdeaProjects/halo/application/build/reports/checkstyle/test.html
Checkstyle files with violations: 16
Checkstyle violations by severity: [warning:43]
> Task :application:checkstyleMain
Checkstyle rule violations were found. See the report at: file:///C:/Users/johnniang/IdeaProjects/halo/application/build/reports/checkstyle/main.html
Checkstyle files with violations: 135
Checkstyle violations by severity: [warning:218]
> Task :application:test
BUILD SUCCESSFUL in 1m 39s
25 actionable tasks: 5 executed, 20 up-to-date
```
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area core
#### What this PR does / why we need it:
Currently, some Windows developers using GBK as character encoding are unable to build project, please see https://github.com/halo-dev/halo/issues/4771 for more.
Because the source code are using UTF-8 character encoding, the `javadoc`, `compileJava`, `compileTestJava` and `delombok` tasks will use the default character encoding GBK to handle the sources, which prevents the `:api:javadoc` task from running properly.
At the same time, we thank to @DaiYuANg for his first proposed solution in https://github.com/halo-dev/halo/pull/4517.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4771
#### Special notes for your reviewer:
Validate the result by executing command `./gradlew clean build -x check` on Windows environment.
#### Does this PR introduce a user-facing change?
```release-note
修复在部分 Windows 开发者无法正常构建 Halo 的问题
```
#### What type of PR is this?
/kind feature
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
Please see https://html.spec.whatwg.org/multipage/semantics.html#meta-generator for more.
This PR add the generator meta into head, so that we can know what sites are using Halo.
```bash
http localhost:8090/ | grep generator
<meta name="generator" content="Halo 2.11.0-SNAPSHOT"/>
```
If someone want to disable the generator meta, they can configure the property `halo.theme.generator-meta-disabled` to `true`.
#### Does this PR introduce a user-facing change?
```release-note
添加 Generator 元数据标识
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
修改发布文章的等待时间以防止因数据库执行延迟较高导致的错误提示
最大等待时间为:`100ms * 2 ^ (retryNum - 1)` = `25600ms`
总共需等待时间为:`100ms * (2 ^ retryNum - 1)` = `31900ms` = `31.9 s`
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
修改发布文章的等待时间以防止因数据库执行延迟较高导致的错误提示
最大等待时间为:`100ms * 2 ^ (retryNum - 1)` = `1600ms`
总共需等待时间为:`100ms * (2 ^ retryNum - 1)` = `3100ms`
#### Does this PR introduce a user-facing change?
```release-note
修改发布文章的等待时间以防止因数据库执行延迟较高导致的错误提示
```
#### What type of PR is this?
/kind feature
/area core
/area console
#### What this PR does / why we need it:
This PR add a route to support user-center.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
Fix the problem that we will encounter "insufficient roles" error while creating PAT with hidden roles.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4783
#### Does this PR introduce a user-facing change?
```release-note
修复因部分角色导致无法正常创建个人令牌的问题
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
如果文章是发布状态但没有发布时间则自动填充
#### Does this PR introduce a user-facing change?
```release-note
None
```
<!-- Thanks for sending a pull request! Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->
#### What type of PR is this?
/kind bug
<!--
添加其中一个类别:
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind improvement
适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
#### What this PR does / why we need it:
在主题使用如下FinderAPI时

将产生如下错误

因为方法定义为

所以修改方法参数
#### Which issue(s) this PR fixes:
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes #
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
NONE
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
修复筛选未发布文章时结果不正确的问题
#### Which issue(s) this PR fixes:
Fixes#4730
#### Does this PR introduce a user-facing change?
```release-note
修复筛选未发布文章时结果不正确的问题
```
#### What type of PR is this?
/kind improvement
/area core
/area console
#### What this PR does / why we need it:
提供允许同步更改插件运行状态的 API
#### Which issue(s) this PR fixes:
Fixes#4744
#### Does this PR introduce a user-facing change?
```release-note
提供允许同步更改插件运行状态的 API
```
#### What type of PR is this?
/kind cleanup
#### What this PR does / why we need it:
Upgrade to Spring Boot 3.1.5. See https://github.com/spring-projects/spring-boot/releases/tag/v3.1.5 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.1.5
```
<!-- Thanks for sending a pull request! Here are some tips for you:
1. 如果这是你的第一次,请阅读我们的贡献指南:<https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>。
1. If this is your first time, please read our contributor guidelines: <https://github.com/halo-dev/halo/blob/master/CONTRIBUTING.md>.
2. 请根据你解决问题的类型为 Pull Request 添加合适的标签。
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.
3. 请确保你已经添加并运行了适当的测试。
3. Ensure you have added or ran the appropriate tests for your PR.
-->
#### What type of PR is this?
/kind improvement
/kind api-change
<!--
添加其中一个类别:
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind improvement
适当添加其中一个或多个类别(可选):
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
#### What this PR does / why we need it:
优化ContributorVo格式,支持更多信息。
#### Which issue(s) this PR fixes:
<!--
PR 合并时自动关闭 issue。
Automatically closes linked issue when PR is merged.
用法:`Fixes #<issue 号>`,或者 `Fixes (粘贴 issue 完整链接)`
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes#4645
#### Special notes for your reviewer:
none
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
contributorFinder 支持返回用户元数据、注册信息、用户权限等。
```
#### What type of PR is this?
/kind bug
/area core
#### What this PR does / why we need it:
If someone logs in Halo via OAuth2, they will be prohibited from creating PATs. See https://github.com/halo-dev/halo/issues/4697 for more.
This PR also checks for UsernamePasswordAuthenticationToken while checking whether the current session was created by a real user.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4697
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
修复邮件通知中取消订阅链接不正确的问题
#### Does this PR introduce a user-facing change?
```release-note
修复邮件通知中取消订阅链接不正确的问题
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
升级默认主题 Earth 的版本至 [1.6.0](https://github.com/halo-dev/theme-earth/releases/tag/v1.6.0)
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
修改应用市场插件的版本为 [1.0.0-beta.2](https://github.com/halo-dev/plugin-app-store/releases/tag/v1.0.0-beta.2)
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind feature
/area core
/area console
/milestone 2.10.x
#### What this PR does / why we need it:
用户支持为不同的通知事件配置通知方式
<img width="872" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/dad85ba3-96bc-4580-9dae-2b9e66e877fe">
#### Does this PR introduce a user-facing change?
```release-note
用户支持为不同的通知事件配置通知方式
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
为邮件通知发件设置增加加密方式配置
#### Which issue(s) this PR fixes:
Fixes#4674
#### Does this PR introduce a user-facing change?
```release-note
为邮件通知发件设置增加加密方式配置
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
修复当评论或回复者的邮箱为空时通知报错的问题
#### Which issue(s) this PR fixes:
Fixes#4684
#### Does this PR introduce a user-facing change?
```release-note
修复当评论或回复者的邮箱为空时通知报错的问题
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
修复插件 css bundle 内容被错误拆分导致无法加载的问题
#### Which issue(s) this PR fixes:
Fixes#4677
#### Does this PR introduce a user-facing change?
```release-note
修复插件 css bundle 内容被错误拆分导致无法加载的问题
```
#### What type of PR is this?
/kind bug
/area core
#### What this PR does / why we need it:
Lucene search engine will stop updating while the content of any post is `null`.
This PR resets the `null` content into empty string and ignore the error while updating Lucene document.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4623
#### Does this PR introduce a user-facing change?
```release-note
修复因某篇文章的内容为 null 导致无法搜索部分文章的问题
```
#### What type of PR is this?
/kind feature
/milestone 2.10.x
/area core
#### What this PR does / why we need it:
新增消息和通知机制的实现
how to test it?
1. 执行以下命令配置发件服务
```shell
curl -u admin:admin -X POST 'http://localhost:8090/apis/api.console.halo.run/v1alpha1/notifiers/default-email-notifier/senderConfig' \
--header 'Content-Type: application/json' \
--data-raw '{
"displayName": "Halo Team",
"username": "{发件使用的邮箱}",
"password": "{发件邮箱密码}",
"host": "smtp.exmail.qq.com",
"port": "587"
}'
```
2. 评论文章或页面可以收到通知
3. 文章/页面作者是评论者不发送新评论通知,回复者是评论作者不发送回复通知
#### Which issue(s) this PR fixes:
Fixes#4045
#### Does this PR introduce a user-facing change?
```release-note
新增消息和通知机制的实现
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
添加 https://github.com/halo-dev/plugin-app-store 作为预设插件。
#### Does this PR introduce a user-facing change?
```release-note
添加应用市场预设插件
```
#### What type of PR is this?
/kind improvement
/area core
/area plugin
/milestone 2.10.x
#### What this PR does / why we need it:
重构插件类加载器以优化当插件的 resources 目录资源与 Halo 中同名时加载不到的问题
how to test it?
1. 在创建的 resources/extensions 目录创建一个与 halo 的 resources/extensions 目录中已存在的同名 yaml
2. 使用插件观察插件的同名文件 yaml 是否被 apply 到 halo 中
3. 测试插件的其他功能是否正常比如静态资源加载如 logo 等
#### Which issue(s) this PR fixes:
Fixes#4610
#### Does this PR introduce a user-facing change?
```release-note
重构插件类加载器以优化当插件的 resources 目录资源与 Halo 中同名时加载不到的问题
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.10.0
#### What this PR does / why we need it:
Upgrade to Spring Boot [3.1.4](https://github.com/spring-projects/spring-boot/releases/tag/v3.1.4).
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.1.4
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
升级所有预设插件的版本。
#### Special notes for your reviewer:
执行 `./gradlew downloadPluginPresets` 检查是否能够正常下载。
#### Does this PR introduce a user-facing change?
```release-note
升级所有预设插件的版本。
```
#### What type of PR is this?
/kind feature
/milestone 2.10.x
/area core
#### What this PR does / why we need it:
支持在开发模式下通过 JAR 运行插件
*从此版本开始 BasePlugin 的子类建议使用 BasePlugin(PluginContext context) 构造函数,而不要使用之前的 BasePlugin(PluginWrapper wrapper) 构造函数。BasePlugin(PluginWrapper wrapper) 构造函数将计划在后续版本移除* ,当移除构造函数后不再将 PluginWrapper 暴露给插件使用,它只应该在 halo core 使用。
how to test it?
1. 测试开发模式下配置的 `halo.plugin.fixed-plugin-path` 插件是否正确运行
2. 测试开发模式下通过 JAR 包安装插件是否正确运行
3. 测试生产模式下是否能通过项目目录的方式运行插件,期望是生产模式不可以运行开发模式的插件
4. 测试开发模式和生产模式的插件卸载功能是否正确
#### Which issue(s) this PR fixes:
Fixes#2908
#### Does this PR introduce a user-facing change?
```release-note
支持在开发模式下通过 JAR 运行插件
```
#### What type of PR is this?
/kind improvement
/kind api-change
/area core
#### What this PR does / why we need it:
This PR refines route paths created from <https://github.com/halo-dev/halo/pull/4598>. Because the user scope is not necessary here.
#### Special notes for your reviewer:
Try to manage your PATs.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind bug
/area core
/area plugin
/milestone 2.10.x
#### What this PR does / why we need it:
修复当插件升级后 Logo 改变会无法显示的问题
how to test it?
1. 使用生产模式运行插件
2. 使用 sitemap 插件 1.0.1版本,https://www.halo.run/store/apps/app-QDFMI?tab=releases
3. 升级 sitemap 插件到 1.1.0, https://www.halo.run/store/apps/app-QDFMI?tab=releases
4. 期望 logo 由原先的 halo 图标变为新图标
#### Which issue(s) this PR fixes:
Fixes#4646
#### Does this PR introduce a user-facing change?
```release-note
修复当插件升级后 Logo 改变会无法显示的问题
```
#### What type of PR is this?
/kind feature
/kind api-change
/area core
#### What this PR does / why we need it:
Support for personal access token mechanism.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/1309
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
提供个人访问令牌机制
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.10.x
#### What this PR does / why we need it:
修复 bundle resource 的缓存 key 生成可能会重复的问题
#### Which issue(s) this PR fixes:
Fixes#4586
#### Does this PR introduce a user-facing change?
```release-note
修复 bundle resource 的缓存 key 生成可能会重复的问题
```
#### What type of PR is this?
/area core
/kind cleanup
#### What this PR does / why we need it:
修改预设插件的下载地址,目前四个预设插件的仓库都已经转移到 halo-dev 组织。
#### Special notes for your reviewer:
需要测试 `./gradlew downloadPluginPresets` 是否能够正常下载预设插件。
#### Does this PR introduce a user-facing change?
```release-note
None
```