aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/initializers/checker.js31
-rw-r--r--server/initializers/installer.js94
-rw-r--r--server/models/users.js10
3 files changed, 121 insertions, 14 deletions
diff --git a/server/initializers/checker.js b/server/initializers/checker.js
index a21e54982..cb62fabf4 100644
--- a/server/initializers/checker.js
+++ b/server/initializers/checker.js
@@ -1,12 +1,13 @@
1'use strict' 1'use strict'
2 2
3const config = require('config') 3const config = require('config')
4const mkdirp = require('mkdirp') 4
5const path = require('path') 5const Users = require('../models/users')
6 6
7const checker = { 7const checker = {
8 checkConfig: checkConfig, 8 checkConfig: checkConfig,
9 createDirectoriesIfNotExist: createDirectoriesIfNotExist 9 clientsExist: clientsExist,
10 usersExist: usersExist
10} 11}
11 12
12// Check the config files 13// Check the config files
@@ -27,18 +28,20 @@ function checkConfig () {
27 return miss 28 return miss
28} 29}
29 30
30// Create directories for the storage if it doesn't exist 31function clientsExist (callback) {
31function createDirectoriesIfNotExist () { 32 Users.getClients(function (err, clients) {
32 const storages = config.get('storage') 33 if (err) return callback(err)
33 34
34 for (const key of Object.keys(storages)) { 35 return callback(null, clients.length !== 0)
35 const dir = storages[key] 36 })
36 try { 37}
37 mkdirp.sync(path.join(__dirname, '..', '..', dir)) 38
38 } catch (error) { 39function usersExist (callback) {
39 throw new Error('Cannot create ' + path + ':' + error) 40 Users.getUsers(function (err, users) {
40 } 41 if (err) return callback(err)
41 } 42
43 return callback(null, users.length !== 0)
44 })
42} 45}
43 46
44// --------------------------------------------------------------------------- 47// ---------------------------------------------------------------------------
diff --git a/server/initializers/installer.js b/server/initializers/installer.js
new file mode 100644
index 000000000..750eb2c59
--- /dev/null
+++ b/server/initializers/installer.js
@@ -0,0 +1,94 @@
1'use strict'
2
3const async = require('async')
4const config = require('config')
5const mkdirp = require('mkdirp')
6const path = require('path')
7
8const checker = require('./checker')
9const logger = require('../helpers/logger')
10const peertubeCrypto = require('../helpers/peertubeCrypto')
11const Users = require('../models/users')
12
13const installer = {
14 installApplication: installApplication
15}
16
17function installApplication (callback) {
18 // Creates directories
19 createDirectoriesIfNotExist(function (err) {
20 if (err) return callback(err)
21
22 // ----------- Create the certificates if they don't already exist -----------
23 peertubeCrypto.createCertsIfNotExist(function (err) {
24 if (err) return callback(err)
25
26 createOAuthClientIfNotExist(function (err) {
27 if (err) return callback(err)
28
29 createOAuthUserIfNotExist(callback)
30 })
31 })
32 })
33}
34
35// ---------------------------------------------------------------------------
36
37module.exports = installer
38
39// ---------------------------------------------------------------------------
40
41function createDirectoriesIfNotExist (callback) {
42 const storages = config.get('storage')
43
44 async.each(Object.keys(storages), function (key, callbackEach) {
45 const dir = storages[key]
46 mkdirp(path.join(__dirname, '..', '..', dir), callbackEach)
47 }, callback)
48}
49
50function createOAuthClientIfNotExist (callback) {
51 checker.clientsExist(function (err, exist) {
52 if (err) return callback(err)
53
54 // Nothing to do, clients already exist
55 if (exist === true) return callback(null)
56
57 logger.info('Creating a default OAuth Client.')
58
59 // TODO: generate password
60 const password = 'megustalabanana'
61 Users.createClient(password, [ 'password' ], function (err, id) {
62 if (err) return callback(err)
63
64 logger.info('Client id: ' + id)
65 logger.info('Client password: ' + password)
66
67 return callback(null)
68 })
69 })
70}
71
72function createOAuthUserIfNotExist (callback) {
73 checker.usersExist(function (err, exist) {
74 if (err) return callback(err)
75
76 // Nothing to do, users already exist
77 if (exist === true) return callback(null)
78
79 logger.info('Creating the administrator.')
80
81 // TODO: generate password
82 const username = 'admin'
83 const password = 'nomegustalabanana'
84
85 Users.createUser(username, password, function (err) {
86 if (err) return callback(err)
87
88 logger.info('Username: ' + username)
89 logger.info('User password: ' + password)
90
91 return callback(null)
92 })
93 })
94}
diff --git a/server/models/users.js b/server/models/users.js
index 355d991bd..367c206ab 100644
--- a/server/models/users.js
+++ b/server/models/users.js
@@ -34,8 +34,10 @@ const Users = {
34 createUser: createUser, 34 createUser: createUser,
35 getAccessToken: getAccessToken, 35 getAccessToken: getAccessToken,
36 getClient: getClient, 36 getClient: getClient,
37 getClients: getClients,
37 getRefreshToken: getRefreshToken, 38 getRefreshToken: getRefreshToken,
38 getUser: getUser, 39 getUser: getUser,
40 getUsers: getUsers,
39 saveToken: saveToken 41 saveToken: saveToken
40} 42}
41 43
@@ -70,6 +72,10 @@ function getClient (clientId, clientSecret) {
70 return OAuthClientsDB.findOne({ _id: mongo_id, clientSecret: clientSecret }) 72 return OAuthClientsDB.findOne({ _id: mongo_id, clientSecret: clientSecret })
71} 73}
72 74
75function getClients (callback) {
76 return OAuthClientsDB.find(callback)
77}
78
73function getRefreshToken (refreshToken) { 79function getRefreshToken (refreshToken) {
74 logger.debug('Getting RefreshToken (refreshToken: ' + refreshToken + ').') 80 logger.debug('Getting RefreshToken (refreshToken: ' + refreshToken + ').')
75 81
@@ -81,6 +87,10 @@ function getUser (username, password) {
81 return UsersDB.findOne({ username: username, password: password }) 87 return UsersDB.findOne({ username: username, password: password })
82} 88}
83 89
90function getUsers (callback) {
91 return UsersDB.find(callback)
92}
93
84function saveToken (token, client, user) { 94function saveToken (token, client, user) {
85 logger.debug('Saving token for client ' + client.id + ' and user ' + user.id + '.') 95 logger.debug('Saving token for client ' + client.id + ' and user ' + user.id + '.')
86 96