Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
3b6f1a1
feat: update template and cli
colinin Nov 12, 2025
9749f56
Merge pull request #1388 from colinin/main
colinin Nov 12, 2025
eaecb15
Merge pull request #1389 from colinin/update-cli-template
colinin Nov 12, 2025
c7a0346
fix(wechat): Fix the error in message header parsing
colinin Nov 17, 2025
e2599d9
Merge pull request #1391 from colinin/fix-wechat-decrypt-message
colinin Nov 17, 2025
b170145
fix(wechat): Fixed the deserialization enum error
colinin Nov 17, 2025
3747a3c
Merge pull request #1392 from colinin/fix-wechat-enmu-deserial
colinin Nov 17, 2025
ebfa510
feat(wechat): Optimize the Enterprise wechat module
colinin Dec 3, 2025
218121c
feat(wechat): 调整部分本地化
colinin Dec 3, 2025
750e16b
feat(single): 单体项目增加依赖项
colinin Dec 3, 2025
752e756
Merge pull request #1393 from colinin/wechat
colinin Dec 3, 2025
368e7e9
feat(single): Optimize single application projects
colinin Dec 6, 2025
89a15aa
Merge pull request #1397 from colinin/optimize-single-project
colinin Dec 6, 2025
7881a30
feat(wechat): Optimize the integration of wecom
colinin Dec 6, 2025
00313c8
feat(wechat): remove package version
colinin Dec 6, 2025
9171cb4
Merge pull request #1398 from colinin/optimize-wecom
colinin Dec 6, 2025
2af8c6a
feat(tasks): Delete the job status check
colinin Dec 10, 2025
ee9115d
Merge pull request #1399 from colinin/check-deleting-job-status
colinin Dec 10, 2025
a493213
fix(wrap): fixed #1401
colinin Dec 25, 2025
c37c9f6
Merge pull request #1403 from colinin/fixed-1401
colinin Dec 25, 2025
103b29a
feat(wechat): Optimize the integration of WeCom
colinin Dec 25, 2025
d5c750a
Merge pull request #1404 from colinin/wecom
colinin Dec 25, 2025
0599086
feat(platform): Add a global data dic interface
colinin Dec 25, 2025
429fea9
Merge pull request #1405 from colinin/global-data-dictionary
colinin Dec 25, 2025
4e51809
feat(metrics): Add system info metrics module
colinin Dec 25, 2025
77667e7
Merge pull request #1406 from colinin/single-system-info
colinin Dec 25, 2025
e457f5b
feat: Add Aspire Integration
colinin Jan 7, 2026
1295697
feat: remove Invalid solution file
colinin Jan 7, 2026
d8fe1a3
feat: Add OpenTelemetry Quartz Instrumentation
colinin Jan 8, 2026
e44c446
feat: Adjust the partial dependences
colinin Jan 8, 2026
bb2db8d
feat: Avoid tracking health check endpoints
colinin Jan 8, 2026
4942f75
feat(.gitingore): add `aspire-output` ignore
colinin Jan 8, 2026
3936107
upgrade: upgrade abp to 10.0.2
colinin Jan 8, 2026
5d41ab0
feat(cap): use `IProcessingServer.StartAsync`
colinin Jan 8, 2026
95ad055
feat(ip2region): sync from ip2region
colinin Jan 8, 2026
ea40a86
fix(elasticseatch): Use the `ElasticsearchClient` client
colinin Jan 8, 2026
078dbb1
fix(auditing): Fix the ES query for auditlog
colinin Jan 8, 2026
79aa4d1
fix(logging): Fix the ES query for logging
colinin Jan 8, 2026
8b3b043
fix(oss): Fixed ImageResizeArgs
colinin Jan 8, 2026
bb8cb9f
fix(localization): Fixed with removed `AsyncKeyedLocker`
colinin Jan 8, 2026
cda7be5
fix(distribute-lock): Disable DAPR_DISTRIBUTEDLOCK
colinin Jan 8, 2026
73cf1de
feat(dapr): Change the syntax for checking empty objects
colinin Jan 8, 2026
153fd0d
feat(mapper): Use `Mapperly` instead of `AutoMapper`
colinin Jan 8, 2026
fa90e2e
feat(data-protected): Use Mapperly instead of AutoMapper
colinin Jan 9, 2026
5a72dd5
fix(object-mapper): Fix the invalid object mapping
colinin Jan 9, 2026
41f3026
fix(openiddict): fix an unregistered application manager was used
colinin Jan 9, 2026
d361a6a
feat: Adjust the initialization of the dynamic in module
colinin Jan 9, 2026
1423bb3
feat(migrations): add PostgreSql db migrations
colinin Jan 9, 2026
fb7ed96
feat(migrations): add SqlServer db migrations
colinin Jan 9, 2026
01b03d6
feat(openiddict): Enhance session validity checks
colinin Jan 9, 2026
656db9f
feat(seed): Optimize data seeds
colinin Jan 10, 2026
495d51d
feat(oauth): Rewrite the user authorize page
colinin Jan 10, 2026
4fb60b0
feat(data-seeder): Optimize data seeds
colinin Jan 10, 2026
9f4434c
fix(login): fix script bundle dependecy
colinin Jan 10, 2026
b0fcbc8
fix(qrcode-login): add missing blob config
colinin Jan 10, 2026
da50891
fix(identity): Adding base class to resolve object mapping source
colinin Jan 10, 2026
6622c67
fix(authorize): fix button style
colinin Jan 10, 2026
7026261
feat(openiddict): Add `FrontChannelLogoutUri`
colinin Jan 10, 2026
afef5f7
fix(style): Add missing global-style.css
colinin Jan 10, 2026
e5b57f6
feat(openiddict): Add the implementation of SelectAccount
colinin Jan 12, 2026
5af420b
fix(login): Fix the issue of RememberMe repeatedly binding
colinin Jan 12, 2026
079e0c1
feat(account): Optimize the selection of accounts
colinin Jan 13, 2026
dd68d30
feat(auditlog): Optimize the index of audit logs
colinin Jan 13, 2026
b207842
fix(saas): fixed edit saas
colinin Jan 14, 2026
e01127c
feat(openiddict): add pushed_authorization(PAR) endpoints
colinin Jan 14, 2026
9bdf6e6
ci: UPDATE common.props
colinin Jan 14, 2026
81b5512
ci: UPDATE workflows
colinin Jan 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
- "**.csproj"

env:
DOTNET_VERSION: "9.0.307"
DOTNET_VERSION: "10.0.102"

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:
branches: [ main ]
env:
DOTNET_VERSION: "9.0.307"
DOTNET_VERSION: "10.0.102"

jobs:
publish:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ jobs:
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
automatic_release_tag: "9.3.6"
automatic_release_tag: "10.0.2"
702 changes: 366 additions & 336 deletions Directory.Packages.props

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion apps/vben5/apps/app-antd/.env.development
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ VITE_INJECT_APP_LOADING=true
# 是否仅允许OIDC登录
VITE_GLOB_ONLY_OIDC=false
# 认证服务器
VITE_GLOB_AUTHORITY="http://127.0.0.1:30001"
VITE_GLOB_AUTHORITY="http://localhost:30000"
# 授权范围
VITE_GLOB_AUDIENCE="openid email address phone profile offline_access lingyun-abp-application"
# 客户端Id
Expand Down
3 changes: 2 additions & 1 deletion apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"invalidUserNameOrPassword": "Invalid username or password!",
"tokenHasExpired": "The token is no longer valid!",
"requiresTwoFactor": "Identity verification is required. Please select a verification method!",
"shouldChangePassword": "Your password has expired. Please change it and login!"
"shouldChangePassword": "Your password has expired. Please change it and login!",
"accessDenied": "You have refused the necessary authorization for the application. Please log in again!"
}
},
"manage": {
Expand Down
3 changes: 2 additions & 1 deletion apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"invalidUserNameOrPassword": "用户名或密码错误!",
"tokenHasExpired": "您的请求会话已过期,请重新登录!",
"requiresTwoFactor": "需要验证身份,请选择一种验证方式!",
"shouldChangePassword": "您的密码已过期,请修改密码后登录!"
"shouldChangePassword": "您的密码已过期,请修改密码后登录!",
"accessDenied": "您拒绝了应用程序必须的授权, 请重新登录!"
}
},
"manage": {
Expand Down
2 changes: 1 addition & 1 deletion apps/vben5/apps/app-antd/src/router/routes/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const coreRoutes: RouteRecordRaw[] = [
hideInBreadcrumb: true,
hideInMenu: true,
hideInTab: true,
title: 'Processing login',
title: $t('page.auth.processingLogin'),
},
name: 'OidcFallback',
path: '/signin-callback',
Expand Down
6 changes: 4 additions & 2 deletions apps/vben5/apps/app-antd/src/store/auth.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { TokenResult } from '@abp/account';
import type { OAuthError, TokenResult } from '@abp/account';

import type { Recordable, UserInfo } from '@vben/types';

Expand Down Expand Up @@ -45,7 +45,7 @@ export const useAuthStore = defineStore('auth', () => {
await oAuthService.login();
}

async function oidcCallback() {
async function oidcCallback(onError?: (error: OAuthError) => void) {
try {
const user = await oAuthService.handleCallback();
return await _loginSuccess({
Expand All @@ -55,6 +55,8 @@ export const useAuthStore = defineStore('auth', () => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
expiresIn: user.expires_in!,
});
} catch (error: any) {
onError && onError(error as OAuthError);
} finally {
loginLoading.value = false;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
<script lang="ts" setup>
import { onMounted } from 'vue';

import { useOAuthError } from '@abp/account';
import { Modal } from 'ant-design-vue';

import { useAuthStore } from '#/store/auth';

const { formatError } = useOAuthError();
const authStore = useAuthStore();

onMounted(async () => {
await authStore.oidcCallback();
await authStore.oidcCallback((error) => {
Modal.warn({
centered: true,
maskClosable: false,
closable: false,
title: formatError(error),
onOk: () => {
authStore.logout();
},
});
});
});
</script>

Expand Down
8 changes: 4 additions & 4 deletions apps/vben5/apps/app-antd/vite.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ export default defineConfig(async () => {
proxy: {
'/.well-known': {
changeOrigin: true,
target: 'http://127.0.0.1:30001/',
target: 'http://localhost:30000/',
},
'/api': {
changeOrigin: true,
target: 'http://127.0.0.1:30001/',
target: 'http://localhost:30000/',
},
'/connect': {
changeOrigin: true,
target: 'http://127.0.0.1:30001/',
target: 'http://localhost:30000/',
},
'/signalr-hubs': {
changeOrigin: true,
target: 'http://127.0.0.1:30001/',
target: 'http://localhost:30000/',
ws: true,
},
},
Expand Down
12 changes: 6 additions & 6 deletions apps/vben5/packages/@abp/account/src/hooks/useOAuthError.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { $t } from '@vben/locales';
import type { OAuthError } from '../types/token';

interface OAuthError {
error: string;
error_description?: string;
error_uri?: string;
}
import { $t } from '@vben/locales';

export function useOAuthError() {
function formatError(error: OAuthError) {
Expand All @@ -22,6 +18,10 @@ export function useOAuthError() {
case 'RequiresTwoFactor': {
return $t('abp.oauth.errors.requiresTwoFactor');
}
// 用户拒绝授权
case 'The authorization was denied by the end user.': {
return $t('abp.oauth.errors.accessDenied');
}
// Token已失效
case 'The token is no longer valid.':
case 'The user is no longer allowed to sign in.': {
Expand Down
1 change: 1 addition & 0 deletions apps/vben5/packages/@abp/account/src/utils/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ const oidcSettings: UserManagerSettings = {
silent_redirect_uri: `${window.location.origin}/silent-renew.html`,
automaticSilentRenew: true,
loadUserInfo: true,
prompt: 'select_account',
userStore: new WebStorageStateStore({
store: import.meta.env.DEV
? localStorage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ const endpoints = reactive<DefaultOptionType[]>([
{ label: 'device', value: 'device' },
{ label: 'revocation', value: 'revocation' },
{ label: 'introspection', value: 'introspection' },
{ label: 'pushed_authorization', value: 'pushed_authorization' },
]);
const getGrantTypes = computed(() => {
const types = openIdConfiguration.value?.grant_types_supported ?? [];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
<script setup lang="ts">
import type { OpenIdConfiguration } from '@abp/core';
import type { FormInstance } from 'ant-design-vue';
import type { TransferItem } from 'ant-design-vue/es/transfer';

import type { OpenIddictScopeDto } from '../../types/scopes';
import type { DisplayNameInfo } from '../display-names/types';
import type { PropertyInfo } from '../properties/types';

import { computed, defineEmits, defineOptions, ref, toValue } from 'vue';
import { defineEmits, defineOptions, ref, toValue } from 'vue';

import { useVbenModal } from '@vben/common-ui';
import { $t } from '@vben/locales';

import { Form, Input, message, Tabs, Transfer } from 'ant-design-vue';
import { Form, Input, message, Select, Tabs } from 'ant-design-vue';

import { useOpenIdApi } from '../../api/useOpenIdApi';
import { useScopesApi } from '../../api/useScopesApi';
import DisplayNameTable from '../display-names/DisplayNameTable.vue';
import PropertyTable from '../properties/PropertyTable.vue';
Expand All @@ -41,20 +38,8 @@ const defaultModel = {} as OpenIddictScopeDto;

const form = ref<FormInstance>();
const formModel = ref<OpenIddictScopeDto>({ ...defaultModel });
const openIdConfiguration = ref<OpenIdConfiguration>();
const activeTab = ref<TabKeys>('basic');

const getSupportClaims = computed((): TransferItem[] => {
const types = openIdConfiguration.value?.claims_supported ?? [];
return types.map((type) => {
return {
key: type,
title: type,
};
});
});

const { discoveryApi } = useOpenIdApi();
const { cancel, createApi, getApi, updateApi } = useScopesApi();
const [Modal, modalApi] = useVbenModal({
class: 'w-1/2',
Expand Down Expand Up @@ -91,7 +76,6 @@ const [Modal, modalApi] = useVbenModal({
});
try {
modalApi.setState({ loading: true });
await onDiscovery();
const { id } = modalApi.getData<OpenIddictScopeDto>();
id && (await onGet(id));
} finally {
Expand All @@ -108,9 +92,6 @@ async function onGet(id: string) {
title: `${$t('AbpOpenIddict.Scopes')} - ${dto.name}`,
});
}
async function onDiscovery() {
openIdConfiguration.value = await discoveryApi();
}
function onDescriptionChange(displayName: DisplayNameInfo) {
formModel.value.descriptions ??= {};
formModel.value.descriptions[displayName.culture] = displayName.displayName;
Expand Down Expand Up @@ -155,6 +136,16 @@ function onPropDelete(prop: PropertyInfo) {
>
<Input v-model:value="formModel.name" autocomplete="off" />
</FormItem>
<FormItem
:label="$t('AbpOpenIddict.DisplayName:Resources')"
name="resources"
>
<Select
allow-clear
v-model:value="formModel.resources"
mode="tags"
/>
</FormItem>
</TabPane>
<!-- 显示名称 -->
<TabPane key="dispalyName" :tab="$t('AbpOpenIddict.DisplayNames')">
Expand Down Expand Up @@ -184,23 +175,6 @@ function onPropDelete(prop: PropertyInfo) {
@delete="onDescriptionDelete"
/>
</TabPane>
<!-- 资源 -->
<TabPane key="resource" :tab="$t('AbpOpenIddict.Resources')">
<Transfer
v-model:target-keys="formModel.resources"
:data-source="getSupportClaims"
:list-style="{
width: '47%',
height: '338px',
}"
:render="(item) => item.title"
:titles="[
$t('AbpOpenIddict.Assigned'),
$t('AbpOpenIddict.Available'),
]"
class="tree-transfer"
/>
</TabPane>
<!-- 属性 -->
<TabPane key="props" :tab="$t('AbpOpenIddict.Propertites')">
<PropertyTable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ export function useWrapperResult(response: AxiosResponse) {
const { data, headers } = response;
/** 是否已包装结果 */
function hasWrapResult(): boolean {
return headers[_defaultWrapperHeaderKey] === 'true' || hasError();
const wrapperHeader = headers[_defaultWrapperHeaderKey];
if (!wrapperHeader) {
return false;
}
return String(wrapperHeader).includes('true') || hasError();
}

/** 获取包装结果 */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ async function onGet() {
async function onSubmit() {
try {
modalApi.setState({ submitting: true });
if (!tenant.value.useSharedDatabase) {
if (!tenant.value.id && !tenant.value.useSharedDatabase) {
await checkConnectionString({
connectionString: tenant.value.defaultConnectionString,
provider: tenant.value.provider,
Expand Down
Loading
Loading