netlify
Version:
Netlify command line tool
49 lines • 1.59 kB
JavaScript
import { NetlifyAPI } from '@netlify/api';
import { log, logAndThrowError, logJson } from '../../utils/command-helpers.js';
import { storeToken } from '../base-command.js';
export const loginCheck = async (options, apiOpts, globalConfig) => {
const ticketId = options.check;
const api = new NetlifyAPI('', apiOpts);
let ticket;
try {
ticket = await api.showTicket({ ticketId });
}
catch (error) {
const status = error.status;
if (status === 401 || status === 404) {
logJson({ status: 'denied' });
log('Status: denied');
return;
}
throw error;
}
if (!ticket.authorized) {
logJson({ status: 'pending' });
log('Status: pending');
return;
}
const tokenResponse = await api.exchangeTicket({ ticketId });
const accessToken = tokenResponse.access_token;
if (!accessToken) {
return logAndThrowError('Could not retrieve access token');
}
api.accessToken = accessToken;
const user = await api.getCurrentUser();
if (!user.id) {
return logAndThrowError('Could not retrieve user ID from Netlify API');
}
storeToken(globalConfig, {
userId: user.id,
name: user.full_name,
email: user.email,
accessToken,
});
logJson({
status: 'authorized',
user: { id: user.id, email: user.email, name: user.full_name },
});
log('Status: authorized');
log(`Name: ${user.full_name ?? ''}`);
log(`Email: ${user.email ?? ''}`);
};
//# sourceMappingURL=login-check.js.map