12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.requireAuth = void 0;
- const google_auth_library_1 = require("google-auth-library");
- const clc = require("colorette");
- const api = require("./api");
- const apiv2 = require("./apiv2");
- const error_1 = require("./error");
- const logger_1 = require("./logger");
- const utils = require("./utils");
- const scopes = require("./scopes");
- const auth_1 = require("./auth");
- const AUTH_ERROR_MESSAGE = `Command requires authentication, please run ${clc.bold("firebase login")}`;
- let authClient;
- function getAuthClient(config) {
- if (authClient) {
- return authClient;
- }
- authClient = new google_auth_library_1.GoogleAuth(config);
- return authClient;
- }
- async function autoAuth(options, authScopes) {
- const client = getAuthClient({ scopes: authScopes, projectId: options.project });
- const token = await client.getAccessToken();
- token !== null ? apiv2.setAccessToken(token) : false;
- }
- async function requireAuth(options) {
- api.setScopes([scopes.CLOUD_PLATFORM, scopes.FIREBASE_PLATFORM]);
- options.authScopes = api.getScopes();
- const tokens = options.tokens;
- const user = options.user;
- let tokenOpt = utils.getInheritedOption(options, "token");
- if (tokenOpt) {
- logger_1.logger.debug("> authorizing via --token option");
- utils.logWarning("Authenticating with `--token` is deprecated and will be removed in a future major version of `firebase-tools`. " +
- "Instead, use a service account key with `GOOGLE_APPLICATION_CREDENTIALS`: https://cloud.google.com/docs/authentication/getting-started");
- }
- else if (process.env.FIREBASE_TOKEN) {
- logger_1.logger.debug("> authorizing via FIREBASE_TOKEN environment variable");
- utils.logWarning("Authenticating with `FIREBASE_TOKEN` is deprecated and will be removed in a future major version of `firebase-tools`. " +
- "Instead, use a service account key with `GOOGLE_APPLICATION_CREDENTIALS`: https://cloud.google.com/docs/authentication/getting-started");
- }
- else if (user) {
- logger_1.logger.debug(`> authorizing via signed-in user (${user.email})`);
- }
- else {
- try {
- return await autoAuth(options, options.authScopes);
- }
- catch (e) {
- throw new error_1.FirebaseError(`Failed to authenticate, have you run ${clc.bold("firebase login")}?`, { original: e });
- }
- }
- tokenOpt = tokenOpt || process.env.FIREBASE_TOKEN;
- if (tokenOpt) {
- (0, auth_1.setRefreshToken)(tokenOpt);
- return;
- }
- if (!user || !tokens) {
- throw new error_1.FirebaseError(AUTH_ERROR_MESSAGE);
- }
- (0, auth_1.setActiveAccount)(options, { user, tokens });
- }
- exports.requireAuth = requireAuth;
|