From b9d0602e3152945d70c240c80aa6de04e84a1cdf Mon Sep 17 00:00:00 2001 From: dudleyneedham Date: Fri, 17 Nov 2023 14:38:29 +0100 Subject: [PATCH 1/4] feat: adding config for required props and trusted attester and ctypehash --- backend/src/config.ts | 10 +++++++- backend/src/credentials/listOfRequests.ts | 31 ++++++++++++++++++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/backend/src/config.ts b/backend/src/config.ts index 4d67d40e..3d262170 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -17,12 +17,20 @@ const envPath = path.resolve(__dirname, '../..', '.env') dotenv.config({ path: envPath }) export const WSS_ADDRESS = process.env.WSS_ADDRESS ?? 'wss://peregrine.kilt.io' -export const BACKEND_PORT = process.env.BACKEND_PORT ?? 2525 +export const BACKEND_PORT = process.env.BACKEND_PORT ?? 3000 export const DAPP_ACCOUNT_MNEMONIC = loadEnv('DAPP_ACCOUNT_MNEMONIC') export const DAPP_DID_MNEMONIC = loadEnv('DAPP_DID_MNEMONIC') export const DAPP_DID_URI = loadEnv('DAPP_DID_URI') as Kilt.DidUri export const DAPP_NAME = process.env.DAPP_NAME ?? 'Web3-Login-Demo' export const JWT_SIGNER_SECRET = loadEnv('JWT_SIGNER_SECRET') +export const CTYPE_HASH = + loadEnv('CTYPE_HASH') || + '0x3291bb126e33b4862d421bfaa1d2f272e6cdfc4f96658988fbcffea8914bd9ac' +export const TRUSTED_ATTESTERS = + loadEnv('TRUSTED_ATTESTERS') || + 'did:kilt:4pehddkhEanexVTTzWAtrrfo2R7xPnePpuiJLC7shQU894aY' + +export const REQUIRED_PROPERTIES = loadEnv('REQUIRED_PROPERTIES') || 'Email' export let DAPP_ACCOUNT_ADDRESS: string diff --git a/backend/src/credentials/listOfRequests.ts b/backend/src/credentials/listOfRequests.ts index b9ea9036..7820132e 100644 --- a/backend/src/credentials/listOfRequests.ts +++ b/backend/src/credentials/listOfRequests.ts @@ -1,5 +1,7 @@ import * as Kilt from '@kiltprotocol/sdk-js' +import { CTYPE_HASH, REQUIRED_PROPERTIES, TRUSTED_ATTESTERS } from '../config' + // Establish which cTypes our dApp accepts and which attesters we trust: /** @@ -14,14 +16,29 @@ export const emailRequest: Kilt.IRequestCredentialContent = { 'did:kilt:4pehddkhEanexVTTzWAtrrfo2R7xPnePpuiJLC7shQU894aY' ], requiredProperties: ['Email'] - }, + } + ] +} +const trustedAttestersValues = TRUSTED_ATTESTERS.split(',') +const requiredPropertiesValues = REQUIRED_PROPERTIES.split(',') + +const requiredProperties = requiredPropertiesValues.map( + (requiredProperties) => requiredProperties +) + +const trustedAttesters = trustedAttestersValues.map( + (trustedAttesters) => trustedAttesters as Kilt.DidUri +) + +/** + * Email Credential Type attested from SocialKYC.io + */ +export const requestedCType: Kilt.IRequestCredentialContent = { + cTypes: [ { - cTypeHash: - '0xae5bc64e500eb576b7b137288cec5d532094e103be46872f1ad54641e477d9fe', - trustedAttesters: [ - 'did:kilt:4pehddkhEanexVTTzWAtrrfo2R7xPnePpuiJLC7shQU894aY' - ], - requiredProperties: ['Email'] + cTypeHash: CTYPE_HASH as `0x${string}`, + trustedAttesters, + requiredProperties } ] } From 21fc21eb90ce58aef1d9775b0cc7cbfc4a4be4b7 Mon Sep 17 00:00:00 2001 From: dudleyneedham Date: Tue, 21 Nov 2023 10:25:07 +0100 Subject: [PATCH 2/4] feat: adding config infrmation and defaults --- backend/src/access/login.ts | 6 +----- backend/src/config.ts | 4 +++- backend/src/credentials/listOfRequests.ts | 22 +++++----------------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/backend/src/access/login.ts b/backend/src/access/login.ts index 27e01d6e..acc4071c 100644 --- a/backend/src/access/login.ts +++ b/backend/src/access/login.ts @@ -1,15 +1,11 @@ import { Response, Request } from 'express' -import { emailRequest } from '../credentials/listOfRequests' +import { requestedCTypeForLogin } from '../credentials/listOfRequests' import { buildCredentialRequest } from '../credentials/buildCredentialRequest' import { verifySubmittedCredential } from '../credentials/verifySubmittedCredential' import { setAccessCookie } from './setAccessCookie' -// Here you can set which type of credential (cType) your dApp will request users to login. -// You can change it by importing a different one from the list. -const requestedCTypeForLogin = emailRequest - /** First half of the login with credentials.*/ export async function buildLoginCredentialRequest( request: Request, diff --git a/backend/src/config.ts b/backend/src/config.ts index 3d262170..b7503bd5 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -16,6 +16,7 @@ import { getApi } from './utils/connection' const envPath = path.resolve(__dirname, '../..', '.env') dotenv.config({ path: envPath }) +// Blockchain address with a default of Peregrine the testnet export const WSS_ADDRESS = process.env.WSS_ADDRESS ?? 'wss://peregrine.kilt.io' export const BACKEND_PORT = process.env.BACKEND_PORT ?? 3000 export const DAPP_ACCOUNT_MNEMONIC = loadEnv('DAPP_ACCOUNT_MNEMONIC') @@ -23,13 +24,14 @@ export const DAPP_DID_MNEMONIC = loadEnv('DAPP_DID_MNEMONIC') export const DAPP_DID_URI = loadEnv('DAPP_DID_URI') as Kilt.DidUri export const DAPP_NAME = process.env.DAPP_NAME ?? 'Web3-Login-Demo' export const JWT_SIGNER_SECRET = loadEnv('JWT_SIGNER_SECRET') + +// CType information export const CTYPE_HASH = loadEnv('CTYPE_HASH') || '0x3291bb126e33b4862d421bfaa1d2f272e6cdfc4f96658988fbcffea8914bd9ac' export const TRUSTED_ATTESTERS = loadEnv('TRUSTED_ATTESTERS') || 'did:kilt:4pehddkhEanexVTTzWAtrrfo2R7xPnePpuiJLC7shQU894aY' - export const REQUIRED_PROPERTIES = loadEnv('REQUIRED_PROPERTIES') || 'Email' export let DAPP_ACCOUNT_ADDRESS: string diff --git a/backend/src/credentials/listOfRequests.ts b/backend/src/credentials/listOfRequests.ts index 7820132e..58fabe8f 100644 --- a/backend/src/credentials/listOfRequests.ts +++ b/backend/src/credentials/listOfRequests.ts @@ -2,23 +2,11 @@ import * as Kilt from '@kiltprotocol/sdk-js' import { CTYPE_HASH, REQUIRED_PROPERTIES, TRUSTED_ATTESTERS } from '../config' +// Here you can set which type of credential (cType) your dApp will request users to login. +// You can change it by importing a different one from the list. +// The default is the Email CType by SocialKYC and SocialKYC as the Issuer // Establish which cTypes our dApp accepts and which attesters we trust: -/** - * Email Credential Type attested from SocialKYC.io - */ -export const emailRequest: Kilt.IRequestCredentialContent = { - cTypes: [ - { - cTypeHash: - '0x3291bb126e33b4862d421bfaa1d2f272e6cdfc4f96658988fbcffea8914bd9ac', - trustedAttesters: [ - 'did:kilt:4pehddkhEanexVTTzWAtrrfo2R7xPnePpuiJLC7shQU894aY' - ], - requiredProperties: ['Email'] - } - ] -} const trustedAttestersValues = TRUSTED_ATTESTERS.split(',') const requiredPropertiesValues = REQUIRED_PROPERTIES.split(',') @@ -31,9 +19,9 @@ const trustedAttesters = trustedAttestersValues.map( ) /** - * Email Credential Type attested from SocialKYC.io + * Credential for users to configure default as SocialKYC Email Credential */ -export const requestedCType: Kilt.IRequestCredentialContent = { +export const requestedCTypeForLogin: Kilt.IRequestCredentialContent = { cTypes: [ { cTypeHash: CTYPE_HASH as `0x${string}`, From 3cdfc2b9e4b5a9c52f5b8e5f4f4ce1ba189ea0ff Mon Sep 17 00:00:00 2001 From: dudleyneedham Date: Thu, 23 Nov 2023 10:42:18 +0100 Subject: [PATCH 3/4] feat: updating the examples --- .env.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.env.example b/.env.example index 39d4caea..c9e9aaf5 100644 --- a/.env.example +++ b/.env.example @@ -6,3 +6,6 @@ DAPP_DID_MNEMONIC= DAPP_DID_URI= DAPP_NAME= JWT_SIGNER_SECRET= +CTYPE_HASH= +TRUSTED_ATTESTERS= +REQUIRED_PROPERTIES= From fbba4743a3fd15c32f95b71076964d1a9787a7fd Mon Sep 17 00:00:00 2001 From: dudleyneedham Date: Tue, 28 Nov 2023 09:35:09 +0100 Subject: [PATCH 4/4] feat: updating the config and including consts --- backend/src/config.ts | 17 ++++++++++++----- backend/src/credentials/listOfRequests.ts | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/backend/src/config.ts b/backend/src/config.ts index b7503bd5..a136fb25 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -26,13 +26,20 @@ export const DAPP_NAME = process.env.DAPP_NAME ?? 'Web3-Login-Demo' export const JWT_SIGNER_SECRET = loadEnv('JWT_SIGNER_SECRET') // CType information -export const CTYPE_HASH = - loadEnv('CTYPE_HASH') || +const SOCIAL_KYC_EMAIL_CTYPE = '0x3291bb126e33b4862d421bfaa1d2f272e6cdfc4f96658988fbcffea8914bd9ac' -export const TRUSTED_ATTESTERS = - loadEnv('TRUSTED_ATTESTERS') || +// Required properties for socialKYC +export const SOCIAL_KYC_EMAIL_REQUIRED_PORPERTIES = 'Email' +// Social KYC Trusted Attester +export const SOCIAL_KYC_ATTESTER = 'did:kilt:4pehddkhEanexVTTzWAtrrfo2R7xPnePpuiJLC7shQU894aY' -export const REQUIRED_PROPERTIES = loadEnv('REQUIRED_PROPERTIES') || 'Email' + +// Configerable Credential types +export const CTYPE_HASH = loadEnv('CTYPE_HASH') || SOCIAL_KYC_EMAIL_CTYPE +export const TRUSTED_ATTESTERS = + loadEnv('TRUSTED_ATTESTERS') || SOCIAL_KYC_ATTESTER +export const REQUIRED_PROPERTIES = + loadEnv('REQUIRED_PROPERTIES') || SOCIAL_KYC_EMAIL_REQUIRED_PORPERTIES export let DAPP_ACCOUNT_ADDRESS: string diff --git a/backend/src/credentials/listOfRequests.ts b/backend/src/credentials/listOfRequests.ts index 58fabe8f..6b2eff2a 100644 --- a/backend/src/credentials/listOfRequests.ts +++ b/backend/src/credentials/listOfRequests.ts @@ -3,7 +3,7 @@ import * as Kilt from '@kiltprotocol/sdk-js' import { CTYPE_HASH, REQUIRED_PROPERTIES, TRUSTED_ATTESTERS } from '../config' // Here you can set which type of credential (cType) your dApp will request users to login. -// You can change it by importing a different one from the list. +// You can change it by importing a different one. // The default is the Email CType by SocialKYC and SocialKYC as the Issuer // Establish which cTypes our dApp accepts and which attesters we trust: