mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
Move the old programming model samples for FabCar, including the "node" (JavaScript!) chaincode sample and the JavaScript application in the top level into new subdirectories called "javascript-low-level". We still want to keep these samples around for comparision purposes, but most new developers should be using the new samples built using the new programming model. At the same time, update the startFabric.sh script to output correct help information on how to run the applications built using the new programming model after starting the Fabric network and deploying the chaincode. Change-Id: I1e3701737f105cba67f661bf893771ac8a3a0373 Signed-off-by: Simon Stone <sstone1@uk.ibm.com>
75 lines
2.7 KiB
JavaScript
75 lines
2.7 KiB
JavaScript
'use strict';
|
|
/*
|
|
* Copyright IBM Corp All Rights Reserved
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
/*
|
|
* Enroll the admin user
|
|
*/
|
|
|
|
var Fabric_Client = require('fabric-client');
|
|
var Fabric_CA_Client = require('fabric-ca-client');
|
|
|
|
var path = require('path');
|
|
var util = require('util');
|
|
var os = require('os');
|
|
|
|
//
|
|
var fabric_client = new Fabric_Client();
|
|
var fabric_ca_client = null;
|
|
var admin_user = null;
|
|
var member_user = null;
|
|
var store_path = path.join(__dirname, 'hfc-key-store');
|
|
console.log(' Store path:'+store_path);
|
|
|
|
// create the key value store as defined in the fabric-client/config/default.json 'key-value-store' setting
|
|
Fabric_Client.newDefaultKeyValueStore({ path: store_path
|
|
}).then((state_store) => {
|
|
// assign the store to the fabric client
|
|
fabric_client.setStateStore(state_store);
|
|
var crypto_suite = Fabric_Client.newCryptoSuite();
|
|
// use the same location for the state store (where the users' certificate are kept)
|
|
// and the crypto store (where the users' keys are kept)
|
|
var crypto_store = Fabric_Client.newCryptoKeyStore({path: store_path});
|
|
crypto_suite.setCryptoKeyStore(crypto_store);
|
|
fabric_client.setCryptoSuite(crypto_suite);
|
|
var tlsOptions = {
|
|
trustedRoots: [],
|
|
verify: false
|
|
};
|
|
// be sure to change the http to https when the CA is running TLS enabled
|
|
fabric_ca_client = new Fabric_CA_Client('http://localhost:7054', tlsOptions , 'ca.example.com', crypto_suite);
|
|
|
|
// first check to see if the admin is already enrolled
|
|
return fabric_client.getUserContext('admin', true);
|
|
}).then((user_from_store) => {
|
|
if (user_from_store && user_from_store.isEnrolled()) {
|
|
console.log('Successfully loaded admin from persistence');
|
|
admin_user = user_from_store;
|
|
return null;
|
|
} else {
|
|
// need to enroll it with CA server
|
|
return fabric_ca_client.enroll({
|
|
enrollmentID: 'admin',
|
|
enrollmentSecret: 'adminpw'
|
|
}).then((enrollment) => {
|
|
console.log('Successfully enrolled admin user "admin"');
|
|
return fabric_client.createUser(
|
|
{username: 'admin',
|
|
mspid: 'Org1MSP',
|
|
cryptoContent: { privateKeyPEM: enrollment.key.toBytes(), signedCertPEM: enrollment.certificate }
|
|
});
|
|
}).then((user) => {
|
|
admin_user = user;
|
|
return fabric_client.setUserContext(admin_user);
|
|
}).catch((err) => {
|
|
console.error('Failed to enroll and persist admin. Error: ' + err.stack ? err.stack : err);
|
|
throw new Error('Failed to enroll admin');
|
|
});
|
|
}
|
|
}).then(() => {
|
|
console.log('Assigned the admin user to the fabric client ::' + admin_user.toString());
|
|
}).catch((err) => {
|
|
console.error('Failed to enroll admin: ' + err);
|
|
});
|