UNPKG

backport

Version:

A CLI tool that automates the process of backporting commits

50 lines 2.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInvalidAccessTokenMessage = void 0; const lodash_1 = require("lodash"); const maybe_1 = require("../../../utils/maybe"); const env_1 = require("../../env"); const logger_1 = require("../../logger"); function getInvalidAccessTokenMessage({ result, repoOwner, repoName, globalConfigFile, }) { function getSSOAuthUrl(ssoHeader) { const matches = ssoHeader?.match(/url=(.*)/); if (matches) { return matches[1]; } } const { statusCode } = result; const graphQLErrors = (result.error?.graphQLErrors ?? []); switch (statusCode) { case 200: { const repoNotFound = graphQLErrors.some(({ originalError, path }) => originalError?.type === 'NOT_FOUND' && path?.join('.') === 'repository'); const grantedScopes = result.responseHeaders?.get('x-oauth-scopes') || ''; const requiredScopes = result.responseHeaders?.get('x-accepted-oauth-scopes') || ''; const ssoHeader = (0, maybe_1.maybe)(result.responseHeaders?.get('x-github-sso')); if (repoNotFound) { const hasRequiredScopes = (0, lodash_1.isEmpty)((0, lodash_1.difference)(requiredScopes.split(','), grantedScopes.split(','))); // user does not have permission to the repo if (!hasRequiredScopes) { return `You do not have access to the repository "${repoOwner}/${repoName}". Please make sure your access token has the required scopes.\n\nRequired scopes: ${requiredScopes}\nAccess token scopes: ${grantedScopes}`; } // repo does not exist return `The repository "${repoOwner}/${repoName}" doesn't exist`; } const repoAccessForbidden = graphQLErrors.some(({ extensions }) => extensions.saml_failure === true); const ssoAuthUrl = getSSOAuthUrl(ssoHeader); // user does not have permissions if (repoAccessForbidden && ssoAuthUrl) { return `Please follow the link to authorize your personal access token with SSO:\n\n${ssoAuthUrl}`; } break; } case 401: return `Please check your access token and make sure it is valid.\nConfig: ${(0, env_1.getGlobalConfigPath)(globalConfigFile)}`; default: logger_1.logger.warn(`Unexpected status code: ${statusCode}`); return undefined; } } exports.getInvalidAccessTokenMessage = getInvalidAccessTokenMessage; //# sourceMappingURL=getInvalidAccessTokenMessage.js.map