]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/initializers/installer.js
Server: add webserver url log at startup
[github/Chocobozzz/PeerTube.git] / server / initializers / installer.js
index 53b07903c3b46af6a1cc1f5170e35f82c9d1f026..1df300ba8d467fb76d3a7b5647fe1efc76559294 100644 (file)
@@ -1,22 +1,28 @@
 'use strict'
 
-const async = require('async')
 const config = require('config')
+const each = require('async/each')
 const mkdirp = require('mkdirp')
+const mongoose = require('mongoose')
 const passwordGenerator = require('password-generator')
 const path = require('path')
+const series = require('async/series')
 
 const checker = require('./checker')
+const constants = require('./constants')
 const logger = require('../helpers/logger')
-const peertubeCrypto = require('../helpers/peertubeCrypto')
-const Users = require('../models/users')
+const peertubeCrypto = require('../helpers/peertube-crypto')
+
+const Application = mongoose.model('Application')
+const Client = mongoose.model('OAuthClient')
+const User = mongoose.model('User')
 
 const installer = {
-  installApplication: installApplication
+  installApplication
 }
 
 function installApplication (callback) {
-  async.series([
+  series([
     function createDirectories (callbackAsync) {
       createDirectoriesIfNotExist(callbackAsync)
     },
@@ -30,7 +36,7 @@ function installApplication (callback) {
     },
 
     function createOAuthUser (callbackAsync) {
-      createOAuthUserIfNotExist(callbackAsync)
+      createOAuthAdminIfNotExist(callbackAsync)
     }
   ], callback)
 }
@@ -44,7 +50,7 @@ module.exports = installer
 function createDirectoriesIfNotExist (callback) {
   const storages = config.get('storage')
 
-  async.each(Object.keys(storages), function (key, callbackEach) {
+  each(Object.keys(storages), function (key, callbackEach) {
     const dir = storages[key]
     mkdirp(path.join(__dirname, '..', '..', dir), callbackEach)
   }, callback)
@@ -60,18 +66,23 @@ function createOAuthClientIfNotExist (callback) {
     logger.info('Creating a default OAuth Client.')
 
     const secret = passwordGenerator(32, false)
-    Users.createClient(secret, [ 'password' ], function (err, id) {
+    const client = new Client({
+      clientSecret: secret,
+      grants: [ 'password', 'refresh_token' ]
+    })
+
+    client.save(function (err, createdClient) {
       if (err) return callback(err)
 
-      logger.info('Client id: ' + id)
-      logger.info('Client secret: ' + secret)
+      logger.info('Client id: ' + createdClient._id)
+      logger.info('Client secret: ' + createdClient.clientSecret)
 
       return callback(null)
     })
   })
 }
 
-function createOAuthUserIfNotExist (callback) {
+function createOAuthAdminIfNotExist (callback) {
   checker.usersExist(function (err, exist) {
     if (err) return callback(err)
 
@@ -81,15 +92,35 @@ function createOAuthUserIfNotExist (callback) {
     logger.info('Creating the administrator.')
 
     const username = 'root'
-    const password = passwordGenerator(8, true)
+    const role = constants.USER_ROLES.ADMIN
+    let password = ''
+
+    // Do not generate a random password for tests
+    if (process.env.NODE_ENV === 'test') {
+      password = 'test'
+
+      if (process.env.NODE_APP_INSTANCE) {
+        password += process.env.NODE_APP_INSTANCE
+      }
+    } else {
+      password = passwordGenerator(8, true)
+    }
 
-    Users.createUser(username, password, function (err) {
+    const user = new User({
+      username,
+      password,
+      role
+    })
+
+    user.save(function (err, createdUser) {
       if (err) return callback(err)
 
       logger.info('Username: ' + username)
       logger.info('User password: ' + password)
 
-      return callback(null)
+      logger.info('Creating Application collection.')
+      const application = new Application({ mongoSchemaVersion: constants.LAST_MONGO_SCHEMA_VERSION })
+      application.save(callback)
     })
   })
 }