@did-connect/handler
Advanced tools
Comparing version 2.0.15 to 2.0.16
121
lib/index.js
@@ -161,3 +161,3 @@ "use strict"; | ||
updaterPk, | ||
strategy, | ||
strategy: onlyConnect && strategy === 'smart' ? 'default' : strategy, | ||
authUrl, | ||
@@ -254,33 +254,5 @@ connectUrl, | ||
target: (0, did_1.isValid)(strategy) ? strategy : '', | ||
supervised: onlyConnect || !!previousConnected, | ||
supervised: onlyConnect || !previousConnected, | ||
}; | ||
}; | ||
const handleClaimRequest = (context) => __awaiter(this, void 0, void 0, function* () { | ||
const { sessionId, session, didwallet, locale } = context; | ||
try { | ||
if (isValidContext(context) === false) { | ||
throw new types_1.CustomError('CONTEXT_INVALID', errors.invalidContext[locale]); | ||
} | ||
if (storage.isFinalized(session.status)) { | ||
throw new types_1.CustomError('SESSION_FINALIZED', (0, types_1.t)(errors.sessionFinalized[locale], { | ||
status: `${session.status}${session.error ? `: ${session.error}` : ''}`, | ||
})); | ||
} | ||
// if we are in created status, we should return authPrincipal claim | ||
if (session.status === 'created') { | ||
logger.debug('session.walletScanned', sessionId); | ||
wsServer.broadcast(sessionId, { status: 'walletScanned', didwallet }); | ||
yield storage.update(sessionId, { status: 'walletScanned' }); | ||
return signClaims([getAuthPrincipalRequest(session)], context); | ||
} | ||
// else we should perform a step by step style | ||
return signClaims(session.requestedClaims[session.currentStep], context); | ||
} | ||
catch (err) { | ||
logger.error(err); | ||
wsServer.broadcast(sessionId, { status: 'error', error: err.message }); | ||
yield storage.update(sessionId, { status: 'error', error: err.message }); | ||
return signJson({ error: err.message }, context); | ||
} | ||
}); | ||
const waitForSession = (sessionId, timeout, checkFn, reason, locale) => __awaiter(this, void 0, void 0, function* () { | ||
@@ -323,2 +295,5 @@ let session = {}; | ||
catch (err) { | ||
if (err.response) { | ||
console.warn(err.response); | ||
} | ||
throw new types_1.CustomError('AppError', (0, types_1.t)(errors.invalidConnectUrl[locale], { url: session.connectUrl, error: err.message })); | ||
@@ -343,5 +318,72 @@ } | ||
catch (err) { | ||
if (err.response) { | ||
console.warn(err.response); | ||
} | ||
throw new types_1.CustomError('AppError', (0, types_1.t)(errors.invalidApproveUrl[locale], { url: session.approveUrl, error: err.message })); | ||
} | ||
}); | ||
const ensureAppConnected = (session, locale) => __awaiter(this, void 0, void 0, function* () { | ||
let newSession; | ||
// If our claims are populated already, move to appConnected without waiting | ||
if (session.requestedClaims.length > 0) { | ||
newSession = yield storage.update(session.sessionId, { status: 'appConnected' }); | ||
} | ||
else if (session.connectUrl) { | ||
// If we should fetch claims from some url, fetch and verify | ||
const requestedClaims = yield fetchRequestList(session, locale); | ||
newSession = yield storage.update(session.sessionId, { status: 'appConnected', requestedClaims }); | ||
} | ||
else { | ||
// else wait for webapp to fill the claims | ||
newSession = yield waitForAppConnect(session.sessionId, session.timeout.app, locale); | ||
yield storage.update(session.sessionId, { status: 'appConnected' }); | ||
} | ||
wsServer.broadcast(session.sessionId, { status: 'appConnected', requestedClaims: newSession.requestedClaims }); | ||
logger.debug('session.appConnected', session.sessionId); | ||
return newSession; | ||
}); | ||
const handleClaimRequest = (context) => __awaiter(this, void 0, void 0, function* () { | ||
const { sessionId, session, didwallet, locale } = context; | ||
try { | ||
if (isValidContext(context) === false) { | ||
throw new types_1.CustomError('CONTEXT_INVALID', errors.invalidContext[locale]); | ||
} | ||
if (storage.isFinalized(session.status)) { | ||
throw new types_1.CustomError('SESSION_FINALIZED', (0, types_1.t)(errors.sessionFinalized[locale], { | ||
status: `${session.status}${session.error ? `: ${session.error}` : ''}`, | ||
})); | ||
} | ||
let newSession; | ||
// if we are in created status, | ||
if (session.status === 'created') { | ||
logger.debug('session.walletScanned', sessionId); | ||
wsServer.broadcast(sessionId, { status: 'walletScanned', didwallet }); | ||
yield storage.update(sessionId, { status: 'walletScanned' }); | ||
// skip authPrincipal step if we are using smart strategy | ||
if (session.strategy === 'smart' && session.previousConnected) { | ||
logger.debug('session.walletConnected', sessionId); | ||
newSession = yield storage.update(sessionId, { | ||
status: 'walletConnected', | ||
currentConnected: Object.assign(Object.assign({}, session.previousConnected), { didwallet }), | ||
}); | ||
wsServer.broadcast(sessionId, { | ||
status: 'walletConnected', | ||
currentConnected: Object.assign(Object.assign({}, session.previousConnected), { didwallet }), | ||
}); | ||
newSession = yield ensureAppConnected(newSession, locale); | ||
return signClaims(newSession.requestedClaims[session.currentStep], Object.assign(Object.assign({}, context), { session: newSession })); | ||
} | ||
// else we should return authPrincipal claim | ||
return signClaims([getAuthPrincipalRequest(session)], context); | ||
} | ||
// else we should perform a step by step style | ||
return signClaims(session.requestedClaims[session.currentStep], context); | ||
} | ||
catch (err) { | ||
logger.error(err); | ||
wsServer.broadcast(sessionId, { status: 'error', error: err.message }); | ||
yield storage.update(sessionId, { status: 'error', error: err.message }); | ||
return signJson({ error: err.message }, context); | ||
} | ||
}); | ||
const handleClaimResponse = (context) => __awaiter(this, void 0, void 0, function* () { | ||
@@ -407,3 +449,3 @@ const { sessionId, session, body, locale, didwallet } = context; | ||
logger.debug('session.walletConnected', sessionId); | ||
yield storage.update(sessionId, { | ||
newSession = yield storage.update(sessionId, { | ||
status: 'walletConnected', | ||
@@ -424,18 +466,3 @@ currentConnected: { userDid, userPk, didwallet }, | ||
} | ||
// If our claims are populated already, move to appConnected without waiting | ||
if (session.requestedClaims.length > 0) { | ||
newSession = yield storage.update(sessionId, { status: 'appConnected' }); | ||
} | ||
else if (session.connectUrl) { | ||
// If we should fetch claims from some url, fetch and verify | ||
const requestedClaims = yield fetchRequestList(session, locale); | ||
newSession = yield storage.update(sessionId, { status: 'appConnected', requestedClaims }); | ||
} | ||
else { | ||
// else wait for webapp to fill the claims | ||
newSession = yield waitForAppConnect(sessionId, session.timeout.app, locale); | ||
yield storage.update(sessionId, { status: 'appConnected' }); | ||
} | ||
wsServer.broadcast(sessionId, { status: 'appConnected', requestedClaims: newSession.requestedClaims }); | ||
logger.debug('session.appConnected', sessionId); | ||
newSession = yield ensureAppConnected(newSession, locale); | ||
return signClaims(newSession.requestedClaims[session.currentStep], Object.assign(Object.assign({}, context), { session: newSession })); | ||
@@ -442,0 +469,0 @@ } |
{ | ||
"name": "@did-connect/handler", | ||
"description": "Abstract handler for did-connect relay server", | ||
"version": "2.0.15", | ||
"version": "2.0.16", | ||
"author": { | ||
@@ -24,5 +24,5 @@ "name": "wangshijun", | ||
"@arcblock/ws": "^1.17.5", | ||
"@did-connect/authenticator": "2.0.15", | ||
"@did-connect/storage": "2.0.15", | ||
"@did-connect/types": "2.0.15", | ||
"@did-connect/authenticator": "2.0.16", | ||
"@did-connect/storage": "2.0.16", | ||
"@did-connect/types": "2.0.16", | ||
"@ocap/mcrypto": "^1.17.5", | ||
@@ -74,3 +74,3 @@ "@ocap/util": "^1.17.5", | ||
"resolutions": {}, | ||
"gitHead": "d3ffabd337e3e0b41f642b3243da99c20f2dd75e" | ||
"gitHead": "2cba02ab1605e1404795f1f8d0879919cd57f72a" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
41590
658
+ Added@did-connect/authenticator@2.0.16(transitive)
+ Added@did-connect/storage@2.0.16(transitive)
+ Added@did-connect/types@2.0.16(transitive)
- Removed@did-connect/authenticator@2.0.15(transitive)
- Removed@did-connect/storage@2.0.15(transitive)
- Removed@did-connect/types@2.0.15(transitive)
Updated@did-connect/storage@2.0.16
Updated@did-connect/types@2.0.16