X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Finitializers%2Finstaller.js;h=d5382364ed77d4ccc47c8624232a0ae53af56ebd;hb=b769007f733769d3afe2d29a3eb23e2e7693f301;hp=750eb2c5927d3072adf1adf123e3aabaa182b829;hpb=37dc07b292ae4b24011a99146150869bb9c17c65;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/initializers/installer.js b/server/initializers/installer.js index 750eb2c59..d5382364e 100644 --- a/server/initializers/installer.js +++ b/server/initializers/installer.js @@ -1,35 +1,45 @@ 'use strict' -const async = require('async') const config = require('config') +const each = require('async/each') const mkdirp = require('mkdirp') +const passwordGenerator = require('password-generator') const path = require('path') +const series = require('async/series') const checker = require('./checker') +const constants = require('./constants') +const db = require('./database') const logger = require('../helpers/logger') -const peertubeCrypto = require('../helpers/peertubeCrypto') -const Users = require('../models/users') +const peertubeCrypto = require('../helpers/peertube-crypto') const installer = { - installApplication: installApplication + installApplication } function installApplication (callback) { - // Creates directories - createDirectoriesIfNotExist(function (err) { - if (err) return callback(err) - - // ----------- Create the certificates if they don't already exist ----------- - peertubeCrypto.createCertsIfNotExist(function (err) { - if (err) return callback(err) - - createOAuthClientIfNotExist(function (err) { - if (err) return callback(err) - - createOAuthUserIfNotExist(callback) - }) - }) - }) + series([ + function createDatabase (callbackAsync) { + db.sequelize.sync().asCallback(callbackAsync) + // db.sequelize.sync({ force: true }).asCallback(callbackAsync) + }, + + function createDirectories (callbackAsync) { + createDirectoriesIfNotExist(callbackAsync) + }, + + function createCertificates (callbackAsync) { + peertubeCrypto.createCertsIfNotExist(callbackAsync) + }, + + function createOAuthClient (callbackAsync) { + createOAuthClientIfNotExist(callbackAsync) + }, + + function createOAuthUser (callbackAsync) { + createOAuthAdminIfNotExist(callbackAsync) + } + ], callback) } // --------------------------------------------------------------------------- @@ -41,7 +51,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) @@ -56,20 +66,26 @@ function createOAuthClientIfNotExist (callback) { logger.info('Creating a default OAuth Client.') - // TODO: generate password - const password = 'megustalabanana' - Users.createClient(password, [ 'password' ], function (err, id) { + const id = passwordGenerator(32, false, /[a-z0-9]/) + const secret = passwordGenerator(32, false, /[a-zA-Z0-9]/) + const client = db.OAuthClient.build({ + clientId: id, + clientSecret: secret, + grants: [ 'password', 'refresh_token' ] + }) + + client.save().asCallback(function (err, createdClient) { if (err) return callback(err) - logger.info('Client id: ' + id) - logger.info('Client password: ' + password) + logger.info('Client id: ' + createdClient.clientId) + 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) @@ -78,17 +94,35 @@ function createOAuthUserIfNotExist (callback) { logger.info('Creating the administrator.') - // TODO: generate password - const username = 'admin' - const password = 'nomegustalabanana' + const username = 'root' + 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) + } + + const user = db.User.build({ + username, + password, + role + }) - Users.createUser(username, password, function (err) { + user.save().asCallback(function (err, createdUser) { if (err) return callback(err) logger.info('Username: ' + username) logger.info('User password: ' + password) - return callback(null) + logger.info('Creating Application table.') + db.Application.create({ migrationVersion: constants.LAST_MIGRATION_VERSION }).asCallback(callback) }) }) }