chore: format

This commit is contained in:
xiaojunnuo
2026-05-31 01:41:33 +08:00
parent acd440106b
commit 4b57a0d729
557 changed files with 12530 additions and 14039 deletions
@@ -10,7 +10,6 @@ import { PasskeyEntity } from "../entity/passkey.js";
@Provide()
@Scope(ScopeEnum.Request, { allowDowngrade: true })
export class PasskeyService extends BaseService<PasskeyEntity> {
@Inject()
userService: UserService;
@@ -25,7 +24,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
}
async getRpInfo() {
let rpName = "Certd"
let rpName = "Certd";
if (isComm()) {
const siteInfo = await this.sysSettingsService.getSetting<SysSiteInfo>(SysSiteInfo);
rpName = siteInfo.title || rpName;
@@ -42,7 +41,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
rpName,
rpId,
origin,
}
};
}
async generateRegistrationOptions(userId: number, username: string, remoteIp: string, ctx: any) {
const { generateRegistrationOptions } = await import("@simplewebauthn/server");
@@ -50,7 +49,6 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
const { rpName, rpId } = await this.getRpInfo();
const options = await generateRegistrationOptions({
rpName: rpName,
rpID: rpId,
@@ -60,15 +58,15 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
timeout: 60000,
attestationType: "none",
excludeCredentials: [],
preferredAuthenticatorType: 'localDevice',
preferredAuthenticatorType: "localDevice",
authenticatorSelection: {
authenticatorAttachment: "cross-platform",
userVerification: "preferred",
authenticatorAttachment: "cross-platform",
userVerification: "preferred",
residentKey: "preferred",
requireResidentKey: false
requireResidentKey: false,
},
});
logger.info('[passkey] 注册选项:', JSON.stringify(options));
logger.info("[passkey] 注册选项:", JSON.stringify(options));
cache.set(`passkey:registration:${options.challenge}`, userId, {
ttl: 5 * 60 * 1000,
});
@@ -78,12 +76,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
};
}
async verifyRegistrationResponse(
userId: number,
response: any,
challenge: string,
ctx: any
) {
async verifyRegistrationResponse(userId: number, response: any, challenge: string, ctx: any) {
const { verifyRegistrationResponse } = await import("@simplewebauthn/server");
const storedUserId = cache.get(`passkey:registration:${challenge}`);
@@ -105,13 +98,12 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
verification = await verifyRegistrationResponse(verifyReq);
} catch (error) {
// 后端验证时
logger.error('[passkey] 注册验证失败:', JSON.stringify(verifyReq));
logger.error("[passkey] 注册验证失败:", JSON.stringify(verifyReq));
throw new AuthException(`注册验证失败:${error.message || error}`);
}
if (!verification.verified) {
throw new AuthException("注册验证失败");
}
cache.delete(`passkey:registration:${challenge}`);
@@ -129,7 +121,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
rpID: rpId,
timeout: 60000,
allowCredentials: [],
userVerification: 'preferred' //'required' | 'preferred' | 'discouraged';
userVerification: "preferred", //'required' | 'preferred' | 'discouraged';
});
// cache.set(`passkey:authentication:${options.challenge}`, userId, {
@@ -141,11 +133,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
};
}
async verifyAuthenticationResponse(
credential: any,
challenge: string,
ctx: any
) {
async verifyAuthenticationResponse(credential: any, challenge: string, ctx: any) {
const { verifyAuthenticationResponse } = await import("@simplewebauthn/server");
const passkey = await this.repository.findOne({
@@ -168,7 +156,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
requireUserVerification: false,
credential: {
id: passkey.passkeyId,
publicKey: new Uint8Array(Buffer.from(passkey.publicKey, 'base64')),
publicKey: new Uint8Array(Buffer.from(passkey.publicKey, "base64")),
counter: passkey.counter,
transports: passkey.transports as any,
},
@@ -187,24 +175,13 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
};
}
async registerPasskey(
userId: number,
response: any,
challenge: string,
deviceName: string,
ctx: any
) {
const verification = await this.verifyRegistrationResponse(
userId,
response,
challenge,
ctx
);
async registerPasskey(userId: number, response: any, challenge: string, deviceName: string, ctx: any) {
const verification = await this.verifyRegistrationResponse(userId, response, challenge, ctx);
await this.add({
userId,
passkeyId: verification.credentialId,
publicKey: Buffer.from(verification.credentialPublicKey).toString('base64'),
publicKey: Buffer.from(verification.credentialPublicKey).toString("base64"),
counter: verification.counter,
deviceName,
registeredAt: Date.now(),
@@ -214,11 +191,7 @@ export class PasskeyService extends BaseService<PasskeyEntity> {
}
async loginByPasskey(credential: any, challenge: string, ctx: any) {
const verification = await this.verifyAuthenticationResponse(
credential,
challenge,
ctx
);
const verification = await this.verifyAuthenticationResponse(credential, challenge, ctx);
const passkey = await this.repository.findOne({
where: {