MCPcopy Create free account
hub / github.com/firebase/firebase-tools / loginWithLocalhost

Function loginWithLocalhost

src/auth.ts:573–621  ·  view source on GitHub ↗
(
  port: number,
  callbackUrl: string,
  authUrl: string,
  successHtml: string,
  getTokens: (queryCode: string, callbackUrl: string) => Promise<ResultType>,
)

Source from the content-addressed store, hash-verified

571}
572
573async function loginWithLocalhost<ResultType>(
574 port: number,
575 callbackUrl: string,
576 authUrl: string,
577 successHtml: string,
578 getTokens: (queryCode: string, callbackUrl: string) => Promise<ResultType>,
579): Promise<ResultType> {
580 return new Promise<ResultType>((resolve, reject) => {
581 const server = http.createServer(async (req, res) => {
582 const query = url.parse(`${req.url}`, true).query || {};
583 const queryState = query.state;
584 const queryCode = query.code;
585
586 if (queryState !== _nonce || typeof queryCode !== "string") {
587 const html = await readTemplate("loginFailure.html");
588 respondHtml(req, res, 400, html);
589 reject(new FirebaseError("Unexpected error while logging in"));
590 server.close();
591 return;
592 }
593
594 try {
595 const tokens = await getTokens(queryCode, callbackUrl);
596 respondHtml(req, res, 200, successHtml);
597 resolve(tokens);
598 } catch (err: unknown) {
599 const html = await readTemplate("loginFailure.html");
600 respondHtml(req, res, 400, html);
601 reject(err);
602 }
603 server.close();
604 return;
605 });
606
607 server.listen(port, () => {
608 logger.info();
609 logger.info("Visit this URL on this device to log in:");
610 logger.info(clc.bold(clc.underline(authUrl)));
611 logger.info();
612 logger.info("Waiting for authentication...");
613
614 open(authUrl);
615 });
616
617 server.on("error", (err) => {
618 reject(err);
619 });
620 });
621}
622
623export async function loginGoogle(localhost: boolean, userHint?: string): Promise<UserCredentials> {
624 if (localhost) {

Callers 2

loginWithLocalhostGoogleFunction · 0.85
loginWithLocalhostGitHubFunction · 0.85

Calls 9

readTemplateFunction · 0.90
respondHtmlFunction · 0.85
resolveFunction · 0.85
openFunction · 0.85
parseMethod · 0.80
closeMethod · 0.80
listenMethod · 0.80
onMethod · 0.80
rejectFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…