ParseSession.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. "use strict";
  2. var _Reflect$construct = require("@babel/runtime-corejs3/core-js-stable/reflect/construct");
  3. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  4. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  5. _Object$defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
  10. var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
  11. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
  12. var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
  13. var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/inherits"));
  14. var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/possibleConstructorReturn"));
  15. var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/getPrototypeOf"));
  16. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  17. var _isRevocableSession = _interopRequireDefault(require("./isRevocableSession"));
  18. var _ParseObject2 = _interopRequireDefault(require("./ParseObject"));
  19. var _ParseUser = _interopRequireDefault(require("./ParseUser"));
  20. function _createSuper(Derived) {
  21. var hasNativeReflectConstruct = _isNativeReflectConstruct();
  22. return function () {
  23. var Super = (0, _getPrototypeOf2.default)(Derived),
  24. result;
  25. if (hasNativeReflectConstruct) {
  26. var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;
  27. result = _Reflect$construct(Super, arguments, NewTarget);
  28. } else {
  29. result = Super.apply(this, arguments);
  30. }
  31. return (0, _possibleConstructorReturn2.default)(this, result);
  32. };
  33. }
  34. function _isNativeReflectConstruct() {
  35. if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  36. if (_Reflect$construct.sham) return false;
  37. if (typeof Proxy === "function") return true;
  38. try {
  39. Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
  40. return true;
  41. } catch (e) {
  42. return false;
  43. }
  44. } /**
  45. * @flow
  46. */
  47. /*:: import type { AttributeMap } from './ObjectStateMutations';*/
  48. /*:: import type { RequestOptions, FullOptions } from './RESTController';*/
  49. /**
  50. * <p>A Parse.Session object is a local representation of a revocable session.
  51. * This class is a subclass of a Parse.Object, and retains the same
  52. * functionality of a Parse.Object.</p>
  53. *
  54. * @alias Parse.Session
  55. * @augments Parse.Object
  56. */
  57. var ParseSession = /*#__PURE__*/function (_ParseObject) {
  58. (0, _inherits2.default)(ParseSession, _ParseObject);
  59. var _super = _createSuper(ParseSession);
  60. /**
  61. * @param {object} attributes The initial set of data to store in the user.
  62. */
  63. function ParseSession(attributes /*: ?AttributeMap*/) {
  64. var _this;
  65. (0, _classCallCheck2.default)(this, ParseSession);
  66. _this = _super.call(this, '_Session');
  67. if (attributes && (0, _typeof2.default)(attributes) === 'object') {
  68. if (!_this.set(attributes || {})) {
  69. throw new Error("Can't create an invalid Session");
  70. }
  71. }
  72. return _this;
  73. }
  74. /**
  75. * Returns the session token string.
  76. *
  77. * @returns {string}
  78. */
  79. (0, _createClass2.default)(ParseSession, [{
  80. key: "getSessionToken",
  81. value: function () /*: string*/{
  82. var token = this.get('sessionToken');
  83. if (typeof token === 'string') {
  84. return token;
  85. }
  86. return '';
  87. }
  88. }], [{
  89. key: "readOnlyAttributes",
  90. value: function () {
  91. return ['createdWith', 'expiresAt', 'installationId', 'restricted', 'sessionToken', 'user'];
  92. }
  93. /**
  94. * Retrieves the Session object for the currently logged in session.
  95. *
  96. * @param {object} options useMasterKey
  97. * @static
  98. * @returns {Promise} A promise that is resolved with the Parse.Session
  99. * object after it has been fetched. If there is no current user, the
  100. * promise will be rejected.
  101. */
  102. }, {
  103. key: "current",
  104. value: function (options /*: FullOptions*/) {
  105. options = options || {};
  106. var controller = _CoreManager.default.getSessionController();
  107. var sessionOptions = {};
  108. if (options.hasOwnProperty('useMasterKey')) {
  109. sessionOptions.useMasterKey = options.useMasterKey;
  110. }
  111. return _ParseUser.default.currentAsync().then(function (user) {
  112. if (!user) {
  113. return _promise.default.reject('There is no current user.');
  114. }
  115. sessionOptions.sessionToken = user.getSessionToken();
  116. return controller.getSession(sessionOptions);
  117. });
  118. }
  119. /**
  120. * Determines whether the current session token is revocable.
  121. * This method is useful for migrating Express.js or Node.js web apps to
  122. * use revocable sessions. If you are migrating an app that uses the Parse
  123. * SDK in the browser only, please use Parse.User.enableRevocableSession()
  124. * instead, so that sessions can be automatically upgraded.
  125. *
  126. * @static
  127. * @returns {boolean}
  128. */
  129. }, {
  130. key: "isCurrentSessionRevocable",
  131. value: function () /*: boolean*/{
  132. var currentUser = _ParseUser.default.current();
  133. if (currentUser) {
  134. return (0, _isRevocableSession.default)(currentUser.getSessionToken() || '');
  135. }
  136. return false;
  137. }
  138. }]);
  139. return ParseSession;
  140. }(_ParseObject2.default);
  141. _ParseObject2.default.registerSubclass('_Session', ParseSession);
  142. var DefaultController = {
  143. getSession: function (options /*: RequestOptions*/) /*: Promise<ParseSession>*/{
  144. var RESTController = _CoreManager.default.getRESTController();
  145. var session = new ParseSession();
  146. return RESTController.request('GET', 'sessions/me', {}, options).then(function (sessionData) {
  147. session._finishFetch(sessionData);
  148. session._setExisted(true);
  149. return session;
  150. });
  151. }
  152. };
  153. _CoreManager.default.setSessionController(DefaultController);
  154. var _default = ParseSession;
  155. exports.default = _default;