Files
mini-loader/packages/cli/src/commands/auth/auth.login.ts
2024-01-12 15:31:44 +01:00

49 lines
1.2 KiB
TypeScript

import { Command } from 'commander';
import inquerer from 'inquirer';
import { Context } from '../../context/context.js';
import { step } from '../../utils/step.js';
import { Config } from '../../config/config.js';
const login = new Command('login');
login.description('Login to your account');
login.action(async () => {
const config = new Config();
const context = new Context(config.context);
const { host, token } = await inquerer.prompt([
{
type: 'input',
name: 'host',
message: 'Enter the host of your server',
default: context.host ?? 'http://localhost:4500',
},
{
type: 'password',
name: 'token',
message: 'Enter your token',
},
]);
const healthResponse = await step('Getting auth status', async () => {
return await fetch(`${host}/health`, {
headers: {
authorization: `Bearer ${token}`,
},
});
});
if (!healthResponse.ok) {
throw new Error('Invalid token');
}
const health = await healthResponse.json();
if (!health.authorized) {
throw new Error('Invalid token');
}
await step('Saving login', async () => {
await context.saveLogin(host, token);
});
});
export { login };