-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadd_user.js
executable file
·59 lines (51 loc) · 2.07 KB
/
add_user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const { MongoClient } = require("mongodb");
const { exec } = require("child_process");
const config = require("./config.js");
const bcrypt = require("bcryptjs");
const crypto = require("crypto");
async function add_user(){
var argv = require('minimist')(process.argv.slice(2));
if (argv.hasOwnProperty('pass') && argv.hasOwnProperty('name') && argv.hasOwnProperty('email')){
var new_user = {};
var real_token = crypto.randomBytes(32).toString('hex');
new_user['pass'] = await bcrypt.hash(argv['pass'], 8);
new_user['token'] = await bcrypt.hash(real_token, 8);
new_user['dir'] = argv['name']; // TODO: Clear from ugly characters
new_user['name'] = argv['name'];
new_user['email'] = argv['email'];
const client = new MongoClient(config.url);
try {
await client.connect();
const dbName = "stormy";
const collectionName = "users";
const database = client.db(dbName);
const collection = database.collection(collectionName);
const find_result = await collection.findOne({ name: new_user['name'] });
if (find_result===null) {
const insert_result = await collection.insertOne(new_user);
const dir_collection = client.db(dbName).collection("dir");
const insert_result_dir = await dir_collection.insertOne({owner: new_user["name"], dir: "/", depth: 0, parent: ''});
exec("mkdir " + config.stormy_folder + "/storage/" + new_user["dir"], (error, stdout, stderr) => {});
console.log("Created new user!");
console.log("Name: " + new_user["name"]);
console.log("Email: " + new_user["email"]);
console.log("Dir: " + new_user["dir"]);
console.log("");
console.log("---Stormy CLI config---");
console.log('token="' + real_token + '"');
console.log('dir="storage/' + new_user["dir"] + '"');
console.log('user="' + new_user["name"] + '"');
} else {
console.log("This username is already taken!");
}
} catch (err) {
console.log(err.stack);
}
finally {
await client.close();
}
} else {
console.log("To create new user you need to specify:\n --email\n --name\n --pass\n");
}
}
add_user().catch(console.dir);