Skip to content

Commit

Permalink
Merge pull request #1 from API-market/refactor/permissions
Browse files Browse the repository at this point in the history
Refactor/permissions
  • Loading branch information
traylewin authored Jan 9, 2020
2 parents d1e865f + ae9f7f5 commit 61f2e27
Show file tree
Hide file tree
Showing 25 changed files with 528 additions and 257 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ ChainJS is a low-level Javascript helper library that helps you write code that

// new account options
const accounOptions = {
payerAccountName: 'mypayeraccnt',
payerAccountPermissionName: 'active'
creatorAccountName: 'mypayeraccnt',
creatorPermission: 'active'
}

// get an account creator class
Expand Down
188 changes: 134 additions & 54 deletions examples/account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Chain, ChainFactory, ChainType } from '../src/index'
import { ChainEndpoint, ChainSettings, AccountType } from '../src/models'
import { toEosEntityName, toEosPrivateKey, toEosPublicKey } from '../src/chains/eos_1_8/models'
import { CreateAccountOptions } from '../src/chains/eos_1_8/eosCreateAccount'
import { EosAccount } from '../src/chains/eos_1_8/eosAccount'

require('dotenv').config()

Expand Down Expand Up @@ -45,8 +46,8 @@ const { env } = process
// Kylin createbridge - moonlighting
const createAccountOptions_createBridge = {
accountNamePrefix: 'ore',
payerAccountName: toEosEntityName('oreidfunding'),
payerAccountPermissionName: toEosEntityName('active'),
creatorAccountName: toEosEntityName('oreidfunding'),
creatorPermission: toEosEntityName('active'),
newKeysOptions: {
newKeysPassword: '2233',
newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin
Expand All @@ -60,92 +61,171 @@ const { env } = process
// ore-staging native account
const createAccountOptions_OreNative = {
accountNamePrefix: 'ore',
payerAccountName: 'app.oreid',
payerAccountPermissionName: 'active',
creatorAccountName: 'app.oreid',
creatorPermission: 'active',
publicKeys: {
owner: 'EOS7rNR9AhgcqkmMAoUSHrjTXgxM4PnpGYDXhS3B4UW3jjZgBATXL',
// active: 'EOS5GaFNg8Vdmddg5NSLUvixsVJtMrWvEWUD2hqJz59wH2vcZTqxj',
},
newKeysOptions: {
newKeysPassword: '2233',
newKeysSalt: env.ORE_TESTNET_PK_SALT_V0, // ore staging
},
permissionsToAdd: [
{
name: toEosEntityName('nwpermission'),
parent: toEosEntityName('active'),
},
{
name: toEosEntityName('n2permission'),
parent: toEosEntityName('nwpermission'),
},
],
// permissionsToAdd: [
// // {
// // name: toEosEntityName('nwpermission'),
// // parent: toEosEntityName('active'),
// // },
// // {
// // name: toEosEntityName('n2permission'),
// // parent: toEosEntityName('active'),
// // },
// // {
// // name: toEosEntityName('n3permission'),
// // parent: toEosEntityName('nwpermission'),
// // },
// ],
}

// ore-staging native account
const createAccountOptions_OreRecycleNative = {
recycleExistingAccount: true,
// kylin virutal account - moonlighting
const createAccountOptions_virtualNested = {
accountNamePrefix: 'ore',
payerAccountName: 'app.oreid',
payerAccountPermissionName: 'active',
creatorAccountName: 'moonlightore',
creatorPermission: 'active',
newKeysOptions: {
newKeysPassword: '2233',
newKeysSalt: env.ORE_TESTNET_PK_SALT_V0, // ore staging
newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin
},
createEscrowOptions: {
contractName: 'createbridge',
appName: 'free',
},
createVirtualNestedOptions: {
parentAccountName: 'moonlightore',
rootPermission: toEosEntityName('mloreidusers'),
},
}

// kylin virutal account - moonlighting
const createAccountOptions_virtualNested = {
accountNamePrefix: 'ore',
payerAccountName: 'moonlightore',
payerAccountPermissionName: 'active',
const permissionNewKeysOptions = {
newKeysOptions: {
newKeysPassword: '2233',
newKeysSalt: env.EOS_KYLIN_PK_SALT_V0, // kylin
},
// createEscrowOptions: {
// contractName: 'createbridge',
// appName: 'free'
// },
// createVirtualNestedOptions: {
// parentAccountName: 'moonlightore',
// rootPermission: toEosEntityName('mloreidusers'),
// }
}

const permissions = [
{
name: toEosEntityName('nwpermission'),
parent: toEosEntityName('active'),
},
{
name: toEosEntityName('n2permission'),
parent: toEosEntityName('active'),
},
{
name: toEosEntityName('n3permission'),
parent: toEosEntityName('nwpermission'),
},
]

// -----> CreateAccount - createbridge
// let createAccount = kylin.newCreateAccount()
// const createAccount = kylin.newCreateAccount()
// await createAccount.composeTransaction(AccountType.CreateEscrow, null, createAccountOptions_createBridge)
// // let privateKey = kylin.crypto.decrypt(env.KYLIN_moonlightore_PRIVATE_KEY_ENCRYPTED, env.ORE_TESTNET_APPOREID_PRIVATE_KEY, env.ORE_TESTNET_ENCRYPTION_SALT)
// // console.log('privateKey:',privateKey)
// createAccount.transaction.sign([env.EOS_KYLIN_OREIDFUNDING_PRIVATE_KEY])
// console.log('missing signatures:', createAccount.transaction.missingSignatures)
// // await createAccount.transaction.send()
// console.log(createAccount.transaction.toJson())
// const response = await createAccount.transaction.send()
// console.log(JSON.stringify(createAccount.transaction.toJson()))
// console.log('response:', response)

// -----> CreateAccount - create native ORE account
await oreStaging.connect()
const createAccount = oreStaging.newCreateAccount()
await createAccount.composeTransaction(AccountType.NativeOre, null, createAccountOptions_OreNative)
createAccount.transaction.sign([env.ORE_TESTNET_APPOREID_PRIVATE_KEY])
console.log('missing sigs:', await createAccount.transaction.missingSignatures)
// let response = await createAccount.transaction.send()
// console.log('createAccount response: ', response)
console.log(JSON.stringify(createAccount.transaction.toJson()))
// createAccount.transaction.sign([env.ORE_TESTNET_APPOREID_PRIVATE_KEY])
console.log('missing sigs:', createAccount.transaction.missingSignatures)
console.log('transction:', JSON.stringify(createAccount.transaction.toJson()))
console.log('createAccount.generatedKeys:', JSON.stringify(createAccount.generatedKeys))
// const response = await createAccount.transaction.send()
// console.log('createAccount response: ', response)

// ------> AddPermissions to account
// await oreStaging.connect()
// const account = (await oreStaging.newAccount('ore1qafpgffi')) as EosAccount
// console.log('ore1qafpgffi account permissions:', account.permissions)
// const { generatedKeys, actions } = await account.composeAddPermissionsActions(
// toEosEntityName('ore1qafpgffi'),
// toEosEntityName('owner'),
// permissions,
// permissionNewKeysOptions,
// )

// const transaction = oreStaging.newTransaction()
// transaction.actions = actions
// await transaction.generateSerialized()
// await transaction.validate()
// transaction.sign([env.ORE_TESTNET_APPOREID_PRIVATE_KEY])
// const response = await transaction.send()
// // console.log('permission add actions:', generatedKeys, JSON.stringify(actions))
// console.log('transaction response:', response)
// console.log('transaction:', JSON.stringify(transaction.toJson()))

// -----> CreateAccount - create virtual nested account
// await kylin.connect()
// let createAccount = kylin.newCreateAccount()
// const createAccount = kylin.newCreateAccount()
// await createAccount.composeTransaction(AccountType.VirtualNested, null, createAccountOptions_virtualNested)
// createAccount.transaction.sign([env.KYLIN_moonlightore_PRIVATE_KEY]);
// let response = await createAccount.transaction.send()
// console.log(createAccount.transaction.toJson())
// console.log('response: ', response);
// createAccount.transaction.sign([env.KYLIN_moonlightore_PRIVATE_KEY])
// const response = await createAccount.transaction.send()
// console.log('missing signatures: ', createAccount.transaction.missingSignatures)
// console.log(JSON.stringify(createAccount.transaction.toJson()))
// console.log('response: ', response)

// // -----> CreateAccount - recycle native ORE account
// // -----> Reset account to be recyclable

// const resetPermissions = [
// {
// name: toEosEntityName('active'),
// parent: toEosEntityName('owner'),
// publicKey: toEosPublicKey(chainSettings.unusedAccountPublicKey),
// },
// ]
// await oreStaging.connect()
// let recycleAccount = oreStaging.newCreateAccount()
// await recycleAccount.composeTransaction(AccountType.NativeOre,'ore1qadesjxm', createAccountOptions_OreRecycleNative)
// recycleAccount.transaction.sign([env.ORE_TESTNET_APPOREID_PRIVATE_KEY])
// let response = await recycleAccount.transaction.send()
// // console.log('createAccount response: ', response)
// console.log(JSON.stringify(recycleAccount.transaction.actions))
// console.log('missing sigs:', await recycleAccount.transaction.missingSignatures)
// const recycleAccount = (await oreStaging.newAccount('ore1qadesjxm')) as EosAccount
// console.log('ore1qadesjxm account permissions:', recycleAccount.permissions)
// const { generatedKeys, actions } = await recycleAccount.composeAddPermissionsActions(
// toEosEntityName('ore1qadesjxm'),
// toEosEntityName('owner'),
// resetPermissions,
// )
// const transaction = oreStaging.newTransaction()
// transaction.actions = actions
// await transaction.generateSerialized()
// await transaction.validate()
// transaction.sign([env.ORE_TESTNET_APPOREID_PRIVATE_KEY])
// const response = await transaction.send()
// console.log('createAccount response: ', response)

// // -----> CreateAccount - recycle native ORE account
// ore-staging native account
// const createAccountOptions_OreRecycleNative = {
// recycleExistingAccount: true,
// accountNamePrefix: 'ore',
// creatorAccountName: 'ore1qadesjxm',
// creatorPermission: 'owner',
// newKeysOptions: {
// newKeysPassword: '2233',
// newKeysSalt: env.ORE_TESTNET_PK_SALT_V0, // ore staging
// },
// }
// await oreStaging.connect()
// const recycleAccount = oreStaging.newCreateAccount()
// await recycleAccount.composeTransaction(AccountType.NativeOre, 'ore1qadesjxm', createAccountOptions_OreRecycleNative)
// recycleAccount.transaction.sign([env.ORE_TESTNET_APPOREID_PRIVATE_KEY])
// console.log(JSON.stringify(recycleAccount.transaction.toJson()))
// // const response = await recycleAccount.transaction.send()
// // console.log('createAccount response: ', response)
// console.log(JSON.stringify(recycleAccount.transaction.actions))
// console.log('signatures:', recycleAccount.transaction.signatures)
// console.log('missing sigs:', recycleAccount.transaction.missingSignatures)
})()
2 changes: 1 addition & 1 deletion examples/misc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const { env } = process
console.log('create bridge balances:', await kylin.fetchContractData('createbridge', 'balances', 'createbridge'))

// compose
// const deleteAuthAction = kylin.composeAction(kylin.ChainActionType.Account_DeleteAuth, {authAccountName:'accountName', authPermission:'authPermission', permission:'permission'})
// const deleteAuthAction = kylin.composeAction(kylin.ChainActionType.Account_DeleteAuth, {authAccount:'accountName', authPermission:'authPermission', permission:'permission'})
// console.log('deleteAuthAction action:',deleteAuthAction);

// crypto
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"build": "tsc --build tsconfig.json",
"lint": "./node_modules/.bin/eslint src",
"lint-fix": "./node_modules/.bin/eslint src --fix",
"prepare" : "npm run build",
"prepare": "npm run build",
"prepublishOnly": "npm test && npm run lint",
"test": "jest --runInBand --coverage --detectOpenHandles"
},
Expand Down
Loading

0 comments on commit 61f2e27

Please sign in to comment.