ParseSession.js 5.0 KB

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