mirror of
https://github.com/certd/certd.git
synced 2026-07-07 13:07:36 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e05ec53eb5 | |||
| 8d9dad9c82 | |||
| 0071bcb0e4 | |||
| dbdc1ccd1b | |||
| 2a606fdb1d | |||
| 3b86f30bcf |
@@ -3,6 +3,19 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [1.42.1](https://github.com/certd/certd/compare/v1.42.0...v1.42.1) (2026-07-06)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* 修复多域名无法使用passkey登录的bug ([d176f9c](https://github.com/certd/certd/commit/d176f9cc0ebd051a614bfac74d1616d1945fc9a3))
|
||||||
|
* 修复企业模式下登录报projectId不能为空的问题 ([a65366b](https://github.com/certd/certd/commit/a65366bbe1aadea8baaffbdadab58a5b631d9417))
|
||||||
|
* **login:** 修复输入法 composing 状态下回车触发提交的问题 ([b74db81](https://github.com/certd/certd/commit/b74db81304bbe68476bbec5ea4307a2264060e92))
|
||||||
|
|
||||||
|
### Performance Improvements
|
||||||
|
|
||||||
|
* **certd-server:** 使用 jks-go转换jks证书,大幅精简镜像大小 ([c78898e](https://github.com/certd/certd/commit/c78898e4c10dd1701467d2e42e3f72bd8f2a352f))
|
||||||
|
* **pipeline:** 将默认历史保留条数从30调整为100 ([d3e4677](https://github.com/certd/certd/commit/d3e4677ea4fac8e7533749d7f4187e410489e536))
|
||||||
|
|
||||||
# [1.42.0](https://github.com/certd/certd/compare/v1.41.4...v1.42.0) (2026-07-05)
|
# [1.42.0](https://github.com/certd/certd/compare/v1.41.4...v1.42.0) (2026-07-05)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@@ -75,5 +75,5 @@
|
|||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/publishlab/node-acme-client/issues"
|
"url": "https://github.com/publishlab/node-acme-client/issues"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,5 +54,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,5 +51,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,5 +30,5 @@
|
|||||||
"prettier": "3.3.3",
|
"prettier": "3.3.3",
|
||||||
"tslib": "^2.8.1"
|
"tslib": "^2.8.1"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,5 +37,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,5 +62,5 @@
|
|||||||
"fetch"
|
"fetch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,5 +38,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,5 +69,5 @@
|
|||||||
"typeorm": "^0.3.20",
|
"typeorm": "^0.3.20",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,5 +52,5 @@
|
|||||||
"typeorm": "^0.3.20",
|
"typeorm": "^0.3.20",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,5 +38,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,5 +45,5 @@
|
|||||||
"tslib": "^2.8.1",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.4.2"
|
"typescript": "^5.4.2"
|
||||||
},
|
},
|
||||||
"gitHead": "b46948c0ba67069ebcd2bb71b21b6c289d99f1b8"
|
"gitHead": "7808d028e9c7e1b1e3ebc41f12b023d7b553300b"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,11 +15,14 @@ import { Modal, notification } from "ant-design-vue";
|
|||||||
import { useI18n } from "/src/locales";
|
import { useI18n } from "/src/locales";
|
||||||
import { request } from "/@/api/service";
|
import { request } from "/@/api/service";
|
||||||
import { useFormDialog } from "/@/use/use-dialog";
|
import { useFormDialog } from "/@/use/use-dialog";
|
||||||
|
import { useSettingStore } from "/@/store/settings/index.jsx";
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const { openFormDialog } = useFormDialog();
|
const { openFormDialog } = useFormDialog();
|
||||||
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
const settingStore = useSettingStore();
|
||||||
|
|
||||||
const changePasswordButtonRef = ref();
|
const changePasswordButtonRef = ref();
|
||||||
const emailFormWrapperRef = ref<any>();
|
const emailFormWrapperRef = ref<any>();
|
||||||
|
|
||||||
@@ -34,6 +37,9 @@ const validateEmailConfirm = async (_rule: any, value: string) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
async function checkAndSetupAccount() {
|
async function checkAndSetupAccount() {
|
||||||
|
if (settingStore.isEnterprise) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const userInfo = userStore.getUserInfo as any;
|
const userInfo = userStore.getUserInfo as any;
|
||||||
if (!userInfo.needInitAccount) {
|
if (!userInfo.needInitAccount) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { AccessGetter, AccessService, BaseController, Constants, SysSettingsService } from "@certd/lib-server";
|
import { AccessGetter, AccessService, BaseController, Constants, isEnterprise, SysSettingsService } from "@certd/lib-server";
|
||||||
import { ALL, Body, Controller, Inject, Post, Provide } from "@midwayjs/core";
|
import { ALL, Body, Controller, Inject, Post, Provide } from "@midwayjs/core";
|
||||||
import { PasskeyService } from "../../../modules/login/service/passkey-service.js";
|
import { PasskeyService } from "../../../modules/login/service/passkey-service.js";
|
||||||
import { RoleService } from "../../../modules/sys/authority/service/role-service.js";
|
import { RoleService } from "../../../modules/sys/authority/service/role-service.js";
|
||||||
@@ -54,7 +54,9 @@ export class MineController extends BaseController {
|
|||||||
delete user.password;
|
delete user.password;
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
user.needInitPassword = needInitPassword;
|
user.needInitPassword = needInitPassword;
|
||||||
|
//@ts-ignore
|
||||||
|
user.needInitAccount = false;
|
||||||
|
if (!isEnterprise()) {
|
||||||
const existingAccess = await this.accessService.findOne({
|
const existingAccess = await this.accessService.findOne({
|
||||||
where: { type: "acmeAccount", subtype: "letsencrypt", userId },
|
where: { type: "acmeAccount", subtype: "letsencrypt", userId },
|
||||||
});
|
});
|
||||||
@@ -62,6 +64,8 @@ export class MineController extends BaseController {
|
|||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
user.needInitAccount = true;
|
user.needInitAccount = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return this.ok(user);
|
return this.ok(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,8 +150,7 @@ export class MineController extends BaseController {
|
|||||||
|
|
||||||
@Post("/accountInit", { description: Constants.per.authOnly, summary: "初始化Let's Encrypt ACME账号和邮件通知" })
|
@Post("/accountInit", { description: Constants.per.authOnly, summary: "初始化Let's Encrypt ACME账号和邮件通知" })
|
||||||
public async accountInit(@Body("email") email?: string) {
|
public async accountInit(@Body("email") email?: string) {
|
||||||
const { projectId, userId } = await this.getProjectUserIdWrite();
|
let userId = this.getUserId();
|
||||||
|
|
||||||
let userEmail = email;
|
let userEmail = email;
|
||||||
let user: any = null;
|
let user: any = null;
|
||||||
if (!userEmail) {
|
if (!userEmail) {
|
||||||
@@ -169,10 +172,10 @@ export class MineController extends BaseController {
|
|||||||
|
|
||||||
await this.emailService.add(userId, userEmail);
|
await this.emailService.add(userId, userEmail);
|
||||||
|
|
||||||
await this.notificationService.getOrCreateDefault(userEmail, userId, projectId);
|
await this.notificationService.getOrCreateDefault(userEmail, userId);
|
||||||
|
|
||||||
const getAccessById = this.accessService.getById.bind(this.accessService);
|
const getAccessById = this.accessService.getById.bind(this.accessService);
|
||||||
const accessGetter = new AccessGetter(userId, projectId, getAccessById);
|
const accessGetter = new AccessGetter(userId, undefined, getAccessById);
|
||||||
const accessContext = {
|
const accessContext = {
|
||||||
http,
|
http,
|
||||||
logger,
|
logger,
|
||||||
@@ -187,7 +190,7 @@ export class MineController extends BaseController {
|
|||||||
type: "acmeAccount",
|
type: "acmeAccount",
|
||||||
name: "Let's Encrypt",
|
name: "Let's Encrypt",
|
||||||
userId,
|
userId,
|
||||||
projectId,
|
projectId:undefined,
|
||||||
setting: JSON.stringify({
|
setting: JSON.stringify({
|
||||||
caType: "letsencrypt",
|
caType: "letsencrypt",
|
||||||
email: userEmail,
|
email: userEmail,
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ export class AsiaIspClient {
|
|||||||
const list = await this.getCertList();
|
const list = await this.getCertList();
|
||||||
const found = list.find((item: any) => item.name === certName);
|
const found = list.find((item: any) => item.name === certName);
|
||||||
if (!found) {
|
if (!found) {
|
||||||
throw new Error(`证书已存在但无法查询到: ${certName}`);
|
throw new Error(`证书已存在但无法查询到: 请重新申请一份证书,或者将已有证书名称修改为:${certName}`);
|
||||||
}
|
}
|
||||||
const certId = Number(found.certId);
|
const certId = Number(found.certId);
|
||||||
this.logger.info(`复用已有证书,证书ID: ${certId}`);
|
this.logger.info(`复用已有证书,证书ID: ${certId}`);
|
||||||
|
|||||||
+1
-1
@@ -88,6 +88,7 @@ export class VolcengineDeployToVOD extends AbstractTaskPlugin {
|
|||||||
@TaskInput({
|
@TaskInput({
|
||||||
title: "源站类型",
|
title: "源站类型",
|
||||||
helper: "选择源站类型",
|
helper: "选择源站类型",
|
||||||
|
value: 1,
|
||||||
component: {
|
component: {
|
||||||
name: "a-select",
|
name: "a-select",
|
||||||
vModel: "value",
|
vModel: "value",
|
||||||
@@ -95,7 +96,6 @@ export class VolcengineDeployToVOD extends AbstractTaskPlugin {
|
|||||||
{ value: 1, label: "点播源站" },
|
{ value: 1, label: "点播源站" },
|
||||||
{ value: 2, label: "自定义源站" },
|
{ value: 2, label: "自定义源站" },
|
||||||
],
|
],
|
||||||
value: 1,
|
|
||||||
helper: "注意:封面加速域名不支持自定义源站",
|
helper: "注意:封面加速域名不支持自定义源站",
|
||||||
},
|
},
|
||||||
required: false,
|
required: false,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
19:31
|
00:21
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
21:41
|
00:35
|
||||||
|
|||||||
Reference in New Issue
Block a user