usersQueries.js 11 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.load = exports.getUserFromSessionToken = void 0;
  6. var _graphql = require("graphql");
  7. var _graphqlListFields = _interopRequireDefault(require("graphql-list-fields"));
  8. var _node = _interopRequireDefault(require("parse/node"));
  9. var _rest = _interopRequireDefault(require("../../rest"));
  10. var _parseClassTypes = require("./parseClassTypes");
  11. var _Auth = require("../../Auth");
  12. function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
  13. const getUserFromSessionToken = async (context, queryInfo, keysPrefix, userId) => {
  14. const {
  15. info,
  16. config
  17. } = context;
  18. if (!info || !info.sessionToken) {
  19. throw new _node.default.Error(_node.default.Error.INVALID_SESSION_TOKEN, 'Invalid session token');
  20. }
  21. const sessionToken = info.sessionToken;
  22. const selectedFields = (0, _graphqlListFields.default)(queryInfo).filter(field => field.startsWith(keysPrefix)).map(field => field.replace(keysPrefix, ''));
  23. const keysAndInclude = (0, _parseClassTypes.extractKeysAndInclude)(selectedFields);
  24. const {
  25. keys
  26. } = keysAndInclude;
  27. let {
  28. include
  29. } = keysAndInclude;
  30. if (userId && !keys && !include) {
  31. return {
  32. sessionToken
  33. };
  34. } else if (keys && !include) {
  35. include = 'user';
  36. }
  37. if (userId) {
  38. // We need to re create the auth context
  39. // to avoid security breach if userId is provided
  40. context.auth = new _Auth.Auth({
  41. config,
  42. isMaster: context.auth.isMaster,
  43. user: {
  44. id: userId
  45. }
  46. });
  47. }
  48. const options = {};
  49. if (keys) {
  50. options.keys = keys.split(',').map(key => `${key}`).join(',');
  51. }
  52. if (include) {
  53. options.include = include.split(',').map(included => `${included}`).join(',');
  54. }
  55. const response = await _rest.default.find(config, context.auth, '_User',
  56. // Get the user it self from auth object
  57. {
  58. objectId: context.auth.user.id
  59. }, options, info.clientVersion, info.context);
  60. if (!response.results || response.results.length == 0) {
  61. throw new _node.default.Error(_node.default.Error.INVALID_SESSION_TOKEN, 'Invalid session token');
  62. } else {
  63. const user = response.results[0];
  64. return {
  65. sessionToken,
  66. user
  67. };
  68. }
  69. };
  70. exports.getUserFromSessionToken = getUserFromSessionToken;
  71. const load = parseGraphQLSchema => {
  72. if (parseGraphQLSchema.isUsersClassDisabled) {
  73. return;
  74. }
  75. parseGraphQLSchema.addGraphQLQuery('viewer', {
  76. description: 'The viewer query can be used to return the current user data.',
  77. type: new _graphql.GraphQLNonNull(parseGraphQLSchema.viewerType),
  78. async resolve(_source, _args, context, queryInfo) {
  79. try {
  80. return await getUserFromSessionToken(context, queryInfo, 'user.', false);
  81. } catch (e) {
  82. parseGraphQLSchema.handleError(e);
  83. }
  84. }
  85. }, true, true);
  86. };
  87. exports.load = load;
  88. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJfZ3JhcGhxbExpc3RGaWVsZHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX25vZGUiLCJfcmVzdCIsIl9wYXJzZUNsYXNzVHlwZXMiLCJfQXV0aCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImdldFVzZXJGcm9tU2Vzc2lvblRva2VuIiwiY29udGV4dCIsInF1ZXJ5SW5mbyIsImtleXNQcmVmaXgiLCJ1c2VySWQiLCJpbmZvIiwiY29uZmlnIiwic2Vzc2lvblRva2VuIiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsInNlbGVjdGVkRmllbGRzIiwiZ2V0RmllbGROYW1lcyIsImZpbHRlciIsImZpZWxkIiwic3RhcnRzV2l0aCIsIm1hcCIsInJlcGxhY2UiLCJrZXlzQW5kSW5jbHVkZSIsImV4dHJhY3RLZXlzQW5kSW5jbHVkZSIsImtleXMiLCJpbmNsdWRlIiwiYXV0aCIsIkF1dGgiLCJpc01hc3RlciIsInVzZXIiLCJpZCIsIm9wdGlvbnMiLCJzcGxpdCIsImtleSIsImpvaW4iLCJpbmNsdWRlZCIsInJlc3BvbnNlIiwicmVzdCIsImZpbmQiLCJvYmplY3RJZCIsImNsaWVudFZlcnNpb24iLCJyZXN1bHRzIiwibGVuZ3RoIiwiZXhwb3J0cyIsImxvYWQiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJpc1VzZXJzQ2xhc3NEaXNhYmxlZCIsImFkZEdyYXBoUUxRdWVyeSIsImRlc2NyaXB0aW9uIiwidHlwZSIsIkdyYXBoUUxOb25OdWxsIiwidmlld2VyVHlwZSIsInJlc29sdmUiLCJfc291cmNlIiwiX2FyZ3MiLCJoYW5kbGVFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML2xvYWRlcnMvdXNlcnNRdWVyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxOb25OdWxsIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgZ2V0RmllbGROYW1lcyBmcm9tICdncmFwaHFsLWxpc3QtZmllbGRzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCByZXN0IGZyb20gJy4uLy4uL3Jlc3QnO1xuaW1wb3J0IHsgZXh0cmFjdEtleXNBbmRJbmNsdWRlIH0gZnJvbSAnLi9wYXJzZUNsYXNzVHlwZXMnO1xuaW1wb3J0IHsgQXV0aCB9IGZyb20gJy4uLy4uL0F1dGgnO1xuXG5jb25zdCBnZXRVc2VyRnJvbVNlc3Npb25Ub2tlbiA9IGFzeW5jIChjb250ZXh0LCBxdWVyeUluZm8sIGtleXNQcmVmaXgsIHVzZXJJZCkgPT4ge1xuICBjb25zdCB7IGluZm8sIGNvbmZpZyB9ID0gY29udGV4dDtcbiAgaWYgKCFpbmZvIHx8ICFpbmZvLnNlc3Npb25Ub2tlbikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdJbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgfVxuICBjb25zdCBzZXNzaW9uVG9rZW4gPSBpbmZvLnNlc3Npb25Ub2tlbjtcbiAgY29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBnZXRGaWVsZE5hbWVzKHF1ZXJ5SW5mbylcbiAgICAuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnN0YXJ0c1dpdGgoa2V5c1ByZWZpeCkpXG4gICAgLm1hcChmaWVsZCA9PiBmaWVsZC5yZXBsYWNlKGtleXNQcmVmaXgsICcnKSk7XG5cbiAgY29uc3Qga2V5c0FuZEluY2x1ZGUgPSBleHRyYWN0S2V5c0FuZEluY2x1ZGUoc2VsZWN0ZWRGaWVsZHMpO1xuICBjb25zdCB7IGtleXMgfSA9IGtleXNBbmRJbmNsdWRlO1xuICBsZXQgeyBpbmNsdWRlIH0gPSBrZXlzQW5kSW5jbHVkZTtcblxuICBpZiAodXNlcklkICYmICFrZXlzICYmICFpbmNsdWRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlc3Npb25Ub2tlbixcbiAgICB9O1xuICB9IGVsc2UgaWYgKGtleXMgJiYgIWluY2x1ZGUpIHtcbiAgICBpbmNsdWRlID0gJ3VzZXInO1xuICB9XG5cbiAgaWYgKHVzZXJJZCkge1xuICAgIC8vIFdlIG5lZWQgdG8gcmUgY3JlYXRlIHRoZSBhdXRoIGNvbnRleHRcbiAgICAvLyB0byBhdm9pZCBzZWN1cml0eSBicmVhY2ggaWYgdXNlcklkIGlzIHByb3ZpZGVkXG4gICAgY29udGV4dC5hdXRoID0gbmV3IEF1dGgoe1xuICAgICAgY29uZmlnLFxuICAgICAgaXNNYXN0ZXI6IGNvbnRleHQuYXV0aC5pc01hc3RlcixcbiAgICAgIHVzZXI6IHsgaWQ6IHVzZXJJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuICBpZiAoa2V5cykge1xuICAgIG9wdGlvbnMua2V5cyA9IGtleXNcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKGtleSA9PiBgJHtrZXl9YClcbiAgICAgIC5qb2luKCcsJyk7XG4gIH1cbiAgaWYgKGluY2x1ZGUpIHtcbiAgICBvcHRpb25zLmluY2x1ZGUgPSBpbmNsdWRlXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcChpbmNsdWRlZCA9PiBgJHtpbmNsdWRlZH1gKVxuICAgICAgLmpvaW4oJywnKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVzdC5maW5kKFxuICAgIGNvbmZpZyxcbiAgICBjb250ZXh0LmF1dGgsXG4gICAgJ19Vc2VyJyxcbiAgICAvLyBHZXQgdGhlIHVzZXIgaXQgc2VsZiBmcm9tIGF1dGggb2JqZWN0XG4gICAgeyBvYmplY3RJZDogY29udGV4dC5hdXRoLnVzZXIuaWQgfSxcbiAgICBvcHRpb25zLFxuICAgIGluZm8uY2xpZW50VmVyc2lvbixcbiAgICBpbmZvLmNvbnRleHRcbiAgKTtcbiAgaWYgKCFyZXNwb25zZS5yZXN1bHRzIHx8IHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXNlciA9IHJlc3BvbnNlLnJlc3VsdHNbMF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlc3Npb25Ub2tlbixcbiAgICAgIHVzZXIsXG4gICAgfTtcbiAgfVxufTtcblxuY29uc3QgbG9hZCA9IHBhcnNlR3JhcGhRTFNjaGVtYSA9PiB7XG4gIGlmIChwYXJzZUdyYXBoUUxTY2hlbWEuaXNVc2Vyc0NsYXNzRGlzYWJsZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFF1ZXJ5KFxuICAgICd2aWV3ZXInLFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHZpZXdlciBxdWVyeSBjYW4gYmUgdXNlZCB0byByZXR1cm4gdGhlIGN1cnJlbnQgdXNlciBkYXRhLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwocGFyc2VHcmFwaFFMU2NoZW1hLnZpZXdlclR5cGUpLFxuICAgICAgYXN5bmMgcmVzb2x2ZShfc291cmNlLCBfYXJncywgY29udGV4dCwgcXVlcnlJbmZvKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGdldFVzZXJGcm9tU2Vzc2lvblRva2VuKGNvbnRleHQsIHF1ZXJ5SW5mbywgJ3VzZXIuJywgZmFsc2UpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLmhhbmRsZUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgdHJ1ZSxcbiAgICB0cnVlXG4gICk7XG59O1xuXG5leHBvcnQgeyBsb2FkLCBnZXRVc2VyRnJvbVNlc3Npb25Ub2tlbiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxrQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FB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