@walletpack/core
Version:
> TODO: description
116 lines (102 loc) • 3.54 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _Hasher = _interopRequireDefault(require("../util/Hasher"));
var _IdGenerator = _interopRequireDefault(require("../util/IdGenerator"));
var _StoreService = _interopRequireDefault(require("../services/utility/StoreService"));
var _Identity = require("./Identity");
var Permission =
/*#__PURE__*/
function () {
function Permission() {
(0, _classCallCheck2["default"])(this, Permission);
this.id = _IdGenerator["default"].numeric(24); // Mandatory
this.origin = '';
this.identity = '';
this.accounts = []; // Optional
this.contract = null;
this.contractHash = null;
this.action = null;
this.mutableActionFields = [];
this.immutableActionFields = [];
this.timestamp = 0;
this.identityRequirements = [];
this.isIdentity = false;
this.isIdentityRequirements = false;
this.isContractAction = false;
}
(0, _createClass2["default"])(Permission, [{
key: "clone",
value: function clone() {
return Permission.fromJson(JSON.parse(JSON.stringify(this)));
}
}, {
key: "checksum",
value: function checksum() {
return _Hasher["default"].unsaltedQuickHash(this.origin + this.identity + (this.accounts || []).join(',') + this.contract + this.contractHash + this.action + (this.identityRequirements || []).join(','));
}
}, {
key: "getIdentity",
value: function getIdentity() {
return _StoreService["default"].get().state.scatter.keychain.findIdentity(this.identity);
}
}, {
key: "getAccounts",
value: function getAccounts() {
var accounts = _StoreService["default"].get().state.scatter.keychain.accounts;
return this.accounts.map(function (unique) {
return accounts.find(function (x) {
return x.unique() === unique;
});
});
}
}, {
key: "isIdentityPermissionFor",
value: function isIdentityPermissionFor(origin) {
return this.isIdentity && this.origin === origin;
}
}, {
key: "asIdentityRequirements",
value: function asIdentityRequirements() {
return _Identity.IdentityRequiredFields.fromPermission(this.identityRequirements);
}
}], [{
key: "placeholder",
value: function placeholder() {
return new Permission();
}
}, {
key: "fromJson",
value: function fromJson(json) {
return Object.assign(this.placeholder(), json);
}
}, {
key: "fromAction",
value: function fromAction(origin, identity, accounts, added) {
var base = Permission.fromJson({
origin: origin,
identity: identity.id,
accounts: accounts.map(function (x) {
return x.unique();
})
});
return Object.assign(base, added);
}
}, {
key: "createImmutableFieldsHash",
value: function createImmutableFieldsHash(allFields, mutableFields) {
return _Hasher["default"].unsaltedQuickHash(Object.keys(allFields).map(function (key) {
if (!mutableFields.includes(key)) return allFields[key];else return null;
}).filter(function (x) {
return x;
}).sort().join(','));
}
}]);
return Permission;
}();
exports["default"] = Permission;