]>
git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blob - admin
5 var program
= require('commander'),
6 safe
= require('safetydance'),
7 bcrypt
= require('bcryptjs'),
8 path
= require('path');
10 function exit(error
) {
11 if (error
) console
.error(error
);
12 process
.exit(error
? 1 : 0);
15 var LOCAL_AUTH_FILE
= path
.resolve(process
.env
.LOCAL_AUTH_FILE
|| './.users.json');
17 console
.log('Using local auth file: ', LOCAL_AUTH_FILE
);
19 function addUser(options
) {
20 if (!options
.username
) exit('missing --username');
21 if (!options
.password
) exit('missing --password');
23 var users
= safe
.require(LOCAL_AUTH_FILE
);
24 if (!users
) users
= {};
25 if (users
[options
.username
]) exit('User already exists');
27 bcrypt
.hash(options
.password
, 8, function(error
, hash
) {
28 users
[options
.username
] = { username: options
.username
, passwordHash: hash
};
29 safe
.fs
.writeFileSync(LOCAL_AUTH_FILE
, JSON
.stringify(users
, null, 4));
35 function editUser(options
) {
36 if (!options
.username
) exit('missing --username');
37 if (!options
.password
) exit('missing --password');
39 var users
= safe
.require(LOCAL_AUTH_FILE
);
40 if (!users
) users
= {};
41 if (!users
[options
.username
]) exit('No such user');
43 bcrypt
.hash(options
.password
, 8, function(error
, hash
) {
44 users
[options
.username
] = { username: options
.username
, passwordHash: hash
};
45 safe
.fs
.writeFileSync(LOCAL_AUTH_FILE
, JSON
.stringify(users
, null, 4));
51 function delUser(options
) {
52 if (!options
.username
) exit('missing --username');
54 var users
= safe
.require(LOCAL_AUTH_FILE
);
55 if (!users
) exit('No such user');
57 if (!users
[options
.username
]) exit('No such user');
59 delete users
[options
.username
];
60 safe
.fs
.writeFileSync(LOCAL_AUTH_FILE
, JSON
.stringify(users
, null, 4));
65 function listUsers() {
66 var users
= safe
.require(LOCAL_AUTH_FILE
);
67 if (!users
) exit('No users. Use `admin user-add` to add some.');
72 program
.version('0.1.0');
74 program
.command('user-add')
75 .description('Add local user')
76 .option('-u --username <username>', 'New username')
77 .option('-p --password <password>', 'New password')
80 program
.command('user-edit')
81 .description('Edit local user')
82 .option('-u --username <username>', 'Username')
83 .option('-p --password <password>', 'New password')
86 program
.command('user-del')
87 .description('Delete local user')
88 .option('-u --username <username>', 'Username')
91 program
.command('users')
92 .description('List local users')
95 program
.parse(process
.argv
);
97 if (!process
.argv
.slice(2).length
) {
99 } else { // https://github.com/tj/commander.js/issues/338
100 var knownCommand
= program
.commands
.some(function (command
) { return command
._name
=== process
.argv
[2]; });
102 console
.error('Unknown command: ' + process
.argv
[2]);