Initial commit: PicUpper webcam upload service
This commit is contained in:
150
manage-users.js
Normal file
150
manage-users.js
Normal file
@@ -0,0 +1,150 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import {
|
||||
addUser,
|
||||
removeUser,
|
||||
listUsers,
|
||||
regenerateApiKey,
|
||||
setUserEnabled
|
||||
} from './users.js';
|
||||
|
||||
const command = process.argv[2];
|
||||
const args = process.argv.slice(3);
|
||||
|
||||
function printUsage() {
|
||||
console.log(`
|
||||
PicUpper User Management CLI
|
||||
|
||||
Usage: node manage-users.js <command> [options]
|
||||
|
||||
Commands:
|
||||
add <username> [description] Add a new user and generate API key
|
||||
remove <username> Remove a user
|
||||
list List all users
|
||||
regenerate <username> Regenerate API key for a user
|
||||
enable <username> Enable a user
|
||||
disable <username> Disable a user
|
||||
|
||||
Examples:
|
||||
node manage-users.js add webcam1 "Front door camera"
|
||||
node manage-users.js add backyard "Backyard camera"
|
||||
node manage-users.js list
|
||||
node manage-users.js regenerate webcam1
|
||||
node manage-users.js disable webcam1
|
||||
`);
|
||||
}
|
||||
|
||||
try {
|
||||
switch (command) {
|
||||
case 'add': {
|
||||
const username = args[0];
|
||||
const description = args.slice(1).join(' ') || '';
|
||||
|
||||
if (!username) {
|
||||
console.error('Error: Username is required');
|
||||
printUsage();
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const apiKey = addUser(username, description);
|
||||
console.log(`\nUser '${username}' created successfully!`);
|
||||
console.log(`\nAPI Key (save this, it won't be shown again):`);
|
||||
console.log(`\n ${apiKey}\n`);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'remove': {
|
||||
const username = args[0];
|
||||
|
||||
if (!username) {
|
||||
console.error('Error: Username is required');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
removeUser(username);
|
||||
console.log(`User '${username}' removed successfully.`);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'list': {
|
||||
const users = listUsers();
|
||||
|
||||
if (users.length === 0) {
|
||||
console.log('No users found. Use "add" command to create one.');
|
||||
break;
|
||||
}
|
||||
|
||||
console.log('\nRegistered Users:');
|
||||
console.log('─'.repeat(80));
|
||||
|
||||
for (const user of users) {
|
||||
const status = user.enabled ? '✓ enabled' : '✗ disabled';
|
||||
console.log(` ${user.username}`);
|
||||
console.log(` Key: ${user.keyPreview}`);
|
||||
console.log(` Status: ${status}`);
|
||||
if (user.description) {
|
||||
console.log(` Description: ${user.description}`);
|
||||
}
|
||||
console.log(` Created: ${user.createdAt}`);
|
||||
console.log('');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'regenerate': {
|
||||
const username = args[0];
|
||||
|
||||
if (!username) {
|
||||
console.error('Error: Username is required');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const newApiKey = regenerateApiKey(username);
|
||||
console.log(`\nAPI key regenerated for '${username}'!`);
|
||||
console.log(`\nNew API Key (save this, it won't be shown again):`);
|
||||
console.log(`\n ${newApiKey}\n`);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'enable': {
|
||||
const username = args[0];
|
||||
|
||||
if (!username) {
|
||||
console.error('Error: Username is required');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
setUserEnabled(username, true);
|
||||
console.log(`User '${username}' enabled.`);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'disable': {
|
||||
const username = args[0];
|
||||
|
||||
if (!username) {
|
||||
console.error('Error: Username is required');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
setUserEnabled(username, false);
|
||||
console.log(`User '${username}' disabled.`);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'help':
|
||||
case '--help':
|
||||
case '-h':
|
||||
case undefined:
|
||||
printUsage();
|
||||
break;
|
||||
|
||||
default:
|
||||
console.error(`Unknown command: ${command}`);
|
||||
printUsage();
|
||||
process.exit(1);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error: ${error.message}`);
|
||||
process.exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user