MoralisErd.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _ParseUser = _interopRequireDefault(require("./ParseUser"));
  7. var _ParseQuery = _interopRequireDefault(require("./ParseQuery"));
  8. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  9. var _ParseACL = _interopRequireDefault(require("./ParseACL"));
  10. var _createSigningData = _interopRequireDefault(require("./createSigningData"));
  11. function _interopRequireDefault(obj) {
  12. return obj && obj.__esModule ? obj : {
  13. default: obj
  14. };
  15. }
  16. /* global window */
  17. const INIT_ERROR = 'Could not initialise ledger app, make sure Elrond app is open';
  18. function getErdJs() {
  19. return MoralisErd.getErdJs();
  20. }
  21. class MoralisErd {
  22. static getErdJs() {
  23. if (typeof window !== 'undefined' && window.erdjs) return window.erdjs;
  24. throw new Error('Please add erdjs scripts');
  25. }
  26. static gatewayAddress() {
  27. return 'https://gateway.elrond.com';
  28. }
  29. static async hwProxy() {
  30. if (MoralisErd._proxy) return MoralisErd._proxy;
  31. const {
  32. ProxyProvider
  33. } = getErdJs();
  34. const proxy = new ProxyProvider(MoralisErd.gatewayAddress());
  35. MoralisErd._proxy = proxy;
  36. return MoralisErd._proxy;
  37. }
  38. static hwProvider() {
  39. return MoralisErd._hw;
  40. }
  41. static async enable() {
  42. const {
  43. HWProvider
  44. } = getErdJs();
  45. const proxy = await MoralisErd.hwProxy();
  46. const hw = new HWProvider(proxy);
  47. const success = await hw.init();
  48. if (!success) {
  49. throw new Error(INIT_ERROR);
  50. }
  51. MoralisErd._hw = hw;
  52. return hw;
  53. }
  54. static async authenticate() {
  55. // const proxy = new ProxyProvider();
  56. // const { Transaction } = getErdJs();
  57. const hw = await MoralisErd.enable();
  58. const address = await hw.login(); // const account = await proxy.getAccount(address);
  59. const erdAddress = address.toLowerCase();
  60. const message = MoralisErd.getSigningData();
  61. const data = await (0, _createSigningData.default)(message);
  62. const signature = await MoralisErd.sign(data);
  63. const user = await _ParseUser.default.logInWith('moralisErd', {
  64. authData: {
  65. id: erdAddress,
  66. signature,
  67. data
  68. }
  69. });
  70. if (!user) throw new Error('Could not get user');
  71. await user.setACL(new _ParseACL.default(user));
  72. user.addAllUnique('erdAccounts', [erdAddress]);
  73. user.set('erdAddress', erdAddress);
  74. await user.save();
  75. return user;
  76. }
  77. static async link(account, options) {
  78. const message = (options === null || options === void 0 ? void 0 : options.signingMessage) || MoralisErd.getSigningData();
  79. const user = await _ParseUser.default.current();
  80. const erdAddress = account.toLowerCase();
  81. const ErdAddress = _ParseObject.default.extend('_ErdAddress');
  82. const query = new _ParseQuery.default(ErdAddress);
  83. const erdAddressRecord = await query.get(erdAddress).catch(() => null);
  84. if (!erdAddressRecord) {
  85. const data = await (0, _createSigningData.default)(message);
  86. const signature = await MoralisErd.sign(data);
  87. await user.linkWith('moralisErd', {
  88. authData: {
  89. id: erdAddress,
  90. signature,
  91. data
  92. }
  93. });
  94. }
  95. user.addAllUnique('erdAccounts', [erdAddress]);
  96. user.set('erdAddress', erdAddress);
  97. await user.save();
  98. return user;
  99. }
  100. static async unlink(account) {
  101. var _user$get;
  102. const accountsLower = account.toLowerCase();
  103. const ErdAddress = _ParseObject.default.extend('_ErdAddress');
  104. const query = new _ParseQuery.default(ErdAddress);
  105. const erdAddressRecord = await query.get(accountsLower);
  106. await erdAddressRecord.destroy();
  107. const user = await _ParseUser.default.current();
  108. const accounts = (_user$get = user.get('erdAccounts')) !== null && _user$get !== void 0 ? _user$get : [];
  109. const nextAccounts = accounts.filter(v => v !== accountsLower);
  110. user.set('erdAccounts', nextAccounts);
  111. user.set('erdAddress', nextAccounts[0]);
  112. await user._unlinkFrom('moralisErd');
  113. await user.save();
  114. return user;
  115. }
  116. static async sign(data) {
  117. return data;
  118. }
  119. static getSigningData() {
  120. return 'Moralis Authentication';
  121. }
  122. }
  123. var _default = MoralisErd;
  124. exports.default = _default;