Commit c6bb4457 authored by Fabien's avatar Fabien Committed by GitHub

Merge pull request #174 from steemit/add-broadcast-addAccountAuth

Add broadcast add account auth
parents ef4db1d8 3618ef32
......@@ -2,5 +2,9 @@
"presets": [
"es2015",
"es2017"
],
"plugins": [
"transform-async-to-generator",
"transform-regenerator"
]
}
}
\ No newline at end of file
require("babel-polyfill");
const api = require("./lib/api");
const auth = require("./lib/auth");
const broadcast = require("./lib/broadcast");
......
import api from "../api";
const defaultWeight = 1;
exports = module.exports = steemBroadcast => {
steemBroadcast.addAccountAuth = async (
activeWif,
username,
authorizedUsername,
role = "posting",
cb
) => {
const [userAccount] = await api.getAccountsAsync([username]);
const updatedAuthority = userAccount[role];
const authorizedAccounts = updatedAuthority.account_auths.map(
auth => auth[0]
);
const hasAuthority = authorizedAccounts.indexOf(authorizedUsername) !== -1;
if (hasAuthority) {
// user does already exist in authorized list
return cb(null, null);
}
updatedAuthority.account_auths.push([authorizedUsername, defaultWeight]);
const owner = role === "owner" ? updatedAuthority : undefined;
const active = role === "active" ? updatedAuthority : undefined;
const posting = role === "posting" ? updatedAuthority : undefined;
/** Add authority on user account */
steemBroadcast.accountUpdate(
activeWif,
userAccount.name,
owner,
active,
posting,
userAccount.memo_key,
userAccount.json_metadata,
cb
);
};
steemBroadcast.removeAccountAuth = async (
activeWif,
username,
authorizedUsername,
role = "posting",
cb
) => {
const [userAccount] = await api.getAccountsAsync([username]);
const updatedAuthority = userAccount[role];
const totalAuthorizedUser = updatedAuthority.account_auths.length;
for (let i = 0; i < totalAuthorizedUser; i++) {
const user = updatedAuthority.account_auths[i];
if (user[0] === authorizedUsername) {
updatedAuthority.account_auths.splice(i, 1);
break;
}
}
// user does not exist in authorized list
if (totalAuthorizedUser === updatedAuthority.account_auths.length) {
return cb(null, null);
}
const owner = role === "owner" ? updatedAuthority : undefined;
const active = role === "active" ? updatedAuthority : undefined;
const posting = role === "posting" ? updatedAuthority : undefined;
steemBroadcast.accountUpdate(
activeWif,
userAccount.name,
owner,
active,
posting,
userAccount.memo_key,
userAccount.json_metadata,
cb
);
};
};
......@@ -2,6 +2,7 @@ import Promise from 'bluebird';
import newDebug from 'debug';
import noop from 'lodash/noop';
import broadcastHelpers from './helpers';
import formatterFactory from '../formatter';
import operations from './operations.json';
import steemApi from '../api';
......@@ -116,6 +117,7 @@ operations.forEach((operation) => {
});
const toString = obj => typeof obj === 'object' ? JSON.stringify(obj) : obj;
broadcastHelpers(steemBroadcast);
Promise.promisifyAll(steemBroadcast);
......
require("babel-polyfill");
const api = require("./api");
const auth = require("./auth");
const broadcast = require("./broadcast");
......
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment