ParseSession.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. "use strict";
  2. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  3. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  4. _Object$defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
  9. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  10. var _isRevocableSession = _interopRequireDefault(require("./isRevocableSession"));
  11. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  12. var _ParseUser = _interopRequireDefault(require("./ParseUser"));
  13. /**
  14. * <p>A Parse.Session object is a local representation of a revocable session.
  15. * This class is a subclass of a Parse.Object, and retains the same
  16. * functionality of a Parse.Object.</p>
  17. *
  18. * @alias Parse.Session
  19. * @augments Parse.Object
  20. */
  21. class ParseSession extends _ParseObject.default {
  22. /**
  23. * @param {object} attributes The initial set of data to store in the user.
  24. */
  25. constructor(attributes) {
  26. super('_Session');
  27. if (attributes && typeof attributes === 'object') {
  28. if (!this.set(attributes || {})) {
  29. throw new Error("Can't create an invalid Session");
  30. }
  31. }
  32. }
  33. /**
  34. * Returns the session token string.
  35. *
  36. * @returns {string}
  37. */
  38. getSessionToken() {
  39. const token = this.get('sessionToken');
  40. if (typeof token === 'string') {
  41. return token;
  42. }
  43. return '';
  44. }
  45. static readOnlyAttributes() {
  46. return ['createdWith', 'expiresAt', 'installationId', 'restricted', 'sessionToken', 'user'];
  47. }
  48. /**
  49. * Retrieves the Session object for the currently logged in session.
  50. *
  51. * @param {object} options useMasterKey
  52. * @static
  53. * @returns {Promise} A promise that is resolved with the Parse.Session
  54. * object after it has been fetched. If there is no current user, the
  55. * promise will be rejected.
  56. */
  57. static current(options) {
  58. options = options || {};
  59. const controller = _CoreManager.default.getSessionController();
  60. const sessionOptions = {};
  61. if (options.hasOwnProperty('useMasterKey')) {
  62. sessionOptions.useMasterKey = options.useMasterKey;
  63. }
  64. return _ParseUser.default.currentAsync().then(user => {
  65. if (!user) {
  66. return _promise.default.reject('There is no current user.');
  67. }
  68. sessionOptions.sessionToken = user.getSessionToken();
  69. return controller.getSession(sessionOptions);
  70. });
  71. }
  72. /**
  73. * Determines whether the current session token is revocable.
  74. * This method is useful for migrating Express.js or Node.js web apps to
  75. * use revocable sessions. If you are migrating an app that uses the Parse
  76. * SDK in the browser only, please use Parse.User.enableRevocableSession()
  77. * instead, so that sessions can be automatically upgraded.
  78. *
  79. * @static
  80. * @returns {boolean}
  81. */
  82. static isCurrentSessionRevocable() {
  83. const currentUser = _ParseUser.default.current();
  84. if (currentUser) {
  85. return (0, _isRevocableSession.default)(currentUser.getSessionToken() || '');
  86. }
  87. return false;
  88. }
  89. }
  90. _ParseObject.default.registerSubclass('_Session', ParseSession);
  91. const DefaultController = {
  92. getSession(options) {
  93. const RESTController = _CoreManager.default.getRESTController();
  94. const session = new ParseSession();
  95. return RESTController.request('GET', 'sessions/me', {}, options).then(sessionData => {
  96. session._finishFetch(sessionData);
  97. session._setExisted(true);
  98. return session;
  99. });
  100. }
  101. };
  102. _CoreManager.default.setSessionController(DefaultController);
  103. var _default = exports.default = ParseSession;