Created
March 28, 2019 09:43
-
-
Save kctam/a55e5861e4c51819be757806a0202c16 to your computer and use it in GitHub Desktop.
adopted from fabric-samples/fabcar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* SPDX-License-Identifier: Apache-2.0 | |
*/ | |
'use strict'; | |
const { FileSystemWallet, Gateway, X509WalletMixin } = require('fabric-network'); | |
const fs = require('fs'); | |
const path = require('path'); | |
const ccpPath = path.resolve(__dirname, '..', 'basic-network', 'connection.json'); | |
const ccpJSON = fs.readFileSync(ccpPath, 'utf8'); | |
const ccp = JSON.parse(ccpJSON); | |
async function main() { | |
try { | |
// Create a new file system based wallet for managing identities. | |
const walletPath = path.join(process.cwd(), 'wallet'); | |
const wallet = new FileSystemWallet(walletPath); | |
console.log(`Wallet path: ${walletPath}`); | |
const user = process.argv[2]; | |
// Check to see if we've already enrolled the user. | |
const userExists = await wallet.exists(user); | |
if (userExists) { | |
console.log('An identity for the user ' + user + ' already exists in the wallet'); | |
return; | |
} | |
// Check to see if we've already enrolled the admin user. | |
const adminExists = await wallet.exists('admin'); | |
if (!adminExists) { | |
console.log('An identity for the admin user "admin" does not exist in the wallet'); | |
console.log('Run the enrollAdmin.js application before retrying'); | |
return; | |
} | |
// Create a new gateway for connecting to our peer node. | |
const gateway = new Gateway(); | |
await gateway.connect(ccp, { wallet, identity: 'admin', discovery: { enabled: false } }); | |
// Get the CA client object from the gateway for interacting with the CA. | |
const ca = gateway.getClient().getCertificateAuthority(); | |
const adminIdentity = gateway.getCurrentIdentity(); | |
// Register the user, enroll the user, and import the new identity into the wallet. | |
const secret = await ca.register({ affiliation: 'org1.department1', enrollmentID: user, role: 'client' }, adminIdentity); | |
const enrollment = await ca.enroll({ enrollmentID: user, enrollmentSecret: secret }); | |
const userIdentity = X509WalletMixin.createIdentity('Org1MSP', enrollment.certificate, enrollment.key.toBytes()); | |
wallet.import(process.argv[2], userIdentity); | |
console.log('Successfully registered and enrolled user ' + user + ' and imported it into the wallet'); | |
} catch (error) { | |
console.error(`Failed to register user: ${error}`); | |
process.exit(1); | |
} | |
} | |
main(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment