subscriptionUtils.js 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. // Licensed under the MIT License. See License.txt in the project root for license information.
  4. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  5. return new (P || (P = Promise))(function (resolve, reject) {
  6. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  7. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  8. function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
  9. step((generator = generator.apply(thisArg, _arguments || [])).next());
  10. });
  11. };
  12. Object.defineProperty(exports, "__esModule", { value: true });
  13. const msRest = require("@azure/ms-rest-js");
  14. const applicationTokenCredentialsBase_1 = require("../credentials/applicationTokenCredentialsBase");
  15. const authConstants_1 = require("../util/authConstants");
  16. /**
  17. * Builds an array of tenantIds.
  18. * @param {TokenCredentialsBase} credentials The credentials.
  19. * @param {string} apiVersion default value 2016-06-01
  20. * @returns {Promise<string[]>} resolves to an array of tenantIds and rejects with an error.
  21. */
  22. function buildTenantList(credentials, apiVersion = "2016-06-01") {
  23. return __awaiter(this, void 0, void 0, function* () {
  24. if (credentials.domain && credentials.domain !== authConstants_1.AuthConstants.AAD_COMMON_TENANT) {
  25. return Promise.resolve([credentials.domain]);
  26. }
  27. const client = new msRest.ServiceClient(credentials);
  28. const baseUrl = credentials.environment.resourceManagerEndpointUrl;
  29. const reqUrl = `${baseUrl}${baseUrl.endsWith("/") ? "" : "/"}tenants?api-version=${apiVersion}`;
  30. const req = {
  31. url: reqUrl,
  32. method: "GET",
  33. };
  34. let res;
  35. try {
  36. res = yield client.sendRequest(req);
  37. }
  38. catch (err) {
  39. return Promise.reject(err);
  40. }
  41. const result = [];
  42. const tenants = res.parsedBody;
  43. for (const tenant in tenants.value) {
  44. result.push(tenant.tenantId);
  45. }
  46. return Promise.resolve(result);
  47. });
  48. }
  49. exports.buildTenantList = buildTenantList;
  50. function getSubscriptionsFromTenants(credentials, tenantList, apiVersion = "2016-06-01") {
  51. return __awaiter(this, void 0, void 0, function* () {
  52. let subscriptions = [];
  53. let userType = "user";
  54. let username;
  55. const originalDomain = credentials.domain;
  56. if (credentials instanceof applicationTokenCredentialsBase_1.ApplicationTokenCredentialsBase) {
  57. userType = "servicePrincipal";
  58. username = credentials.clientId;
  59. }
  60. else {
  61. username = credentials.username;
  62. }
  63. for (const tenant of tenantList) {
  64. credentials.domain = tenant;
  65. const client = new msRest.ServiceClient(credentials);
  66. const baseUrl = credentials.environment.resourceManagerEndpointUrl;
  67. const reqUrl = `${baseUrl}${baseUrl.endsWith("/") ? "" : "/"}subscriptions?api-version=${apiVersion}`;
  68. const req = {
  69. url: reqUrl,
  70. method: "GET",
  71. };
  72. let res;
  73. try {
  74. res = yield client.sendRequest(req);
  75. }
  76. catch (err) {
  77. return Promise.reject(err);
  78. }
  79. const subscriptionList = res.parsedBody.value;
  80. subscriptions = subscriptions.concat(subscriptionList.map((s) => {
  81. s.tenantId = tenant;
  82. s.user = { name: username, type: userType };
  83. s.environmentName = credentials.environment.name;
  84. s.name = s.displayName;
  85. s.id = s.subscriptionId;
  86. delete s.displayName;
  87. delete s.subscriptionId;
  88. delete s.subscriptionPolicies;
  89. return s;
  90. }));
  91. }
  92. // Reset the original domain.
  93. credentials.domain = originalDomain;
  94. return Promise.resolve(subscriptions);
  95. });
  96. }
  97. exports.getSubscriptionsFromTenants = getSubscriptionsFromTenants;
  98. //# sourceMappingURL=subscriptionUtils.js.map