feat: upgradeFromMongo (wip) + panel UI improvements
This commit is contained in:
parent
82ea0b50fb
commit
2668dde7bd
@ -51,8 +51,7 @@ export default {
|
||||
telemetry: true,
|
||||
title: siteConfig.title || 'Wiki',
|
||||
upgrade: false,
|
||||
upgMongo: 'mongodb://',
|
||||
upgUserGroups: false
|
||||
upgMongo: 'mongodb://'
|
||||
},
|
||||
considerations: {
|
||||
https: false,
|
||||
|
@ -33,7 +33,9 @@
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
background-color: mc('blue', '700');
|
||||
background-image: linear-gradient(to bottom, mc('blue', '700') 0%, mc('blue', '800') 100%);
|
||||
border-bottom-color: mc('blue', '900');
|
||||
box-shadow: inset 0 0 0 1px mc('blue', '600'), inset 0 0 0px 2px rgba(mc('blue', '800'), .5);
|
||||
color: #FFF;
|
||||
|
||||
> i::before {
|
||||
@ -42,6 +44,10 @@
|
||||
|
||||
}
|
||||
|
||||
& + .panel-content {
|
||||
box-shadow: inset 0 0 0 1px #FFF, inset 0 30px 80px -25px mc('blue', '100');
|
||||
}
|
||||
|
||||
> span {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
@ -108,4 +108,6 @@ langs:
|
||||
-
|
||||
id: es
|
||||
name: Spanish - Español
|
||||
rtlLangs:
|
||||
- fa
|
||||
# ---------------------------------
|
||||
|
@ -20,7 +20,7 @@ module.exports = () => {
|
||||
const favicon = require('serve-favicon')
|
||||
const http = require('http')
|
||||
const Promise = require('bluebird')
|
||||
const fs = require('fs-extra')
|
||||
const fs = Promise.promisifyAll(require('fs-extra'))
|
||||
const yaml = require('js-yaml')
|
||||
const _ = require('lodash')
|
||||
const cfgHelper = require('./helpers/config')
|
||||
@ -236,22 +236,37 @@ module.exports = () => {
|
||||
})
|
||||
}
|
||||
|
||||
// Load configuration file
|
||||
let confRaw = await fs.readFile(path.join(wiki.ROOTPATH, 'config.yml'), 'utf8')
|
||||
// Update config file
|
||||
let confRaw = await fs.readFileAsync(path.join(wiki.ROOTPATH, 'config.yml'), 'utf8')
|
||||
let conf = yaml.safeLoad(confRaw)
|
||||
|
||||
// Update config
|
||||
conf.host = req.body.host
|
||||
conf.port = req.body.port
|
||||
conf.paths.repo = req.body.pathRepo
|
||||
|
||||
// Generate session secret
|
||||
let sessionSecret = (await crypto.randomBytesAsync(32)).toString('hex')
|
||||
console.info(sessionSecret)
|
||||
|
||||
// Save updated config to file
|
||||
confRaw = yaml.safeDump(conf)
|
||||
await fs.writeFile(path.join(wiki.ROOTPATH, 'config.yml'), confRaw)
|
||||
await fs.writeFileAsync(path.join(wiki.ROOTPATH, 'config.yml'), confRaw)
|
||||
|
||||
// Populate config namespaces
|
||||
wiki.config.auth = wiki.config.auth || {}
|
||||
wiki.config.features = wiki.config.features || {}
|
||||
wiki.config.git = wiki.config.git || {}
|
||||
wiki.config.logging = wiki.config.logging || {}
|
||||
wiki.config.site = wiki.config.site || {}
|
||||
wiki.config.theme = wiki.config.theme || {}
|
||||
wiki.config.uploads = wiki.config.uploads || {}
|
||||
|
||||
// Site namespace
|
||||
wiki.config.site.title = req.body.title
|
||||
wiki.config.site.path = req.body.path
|
||||
wiki.config.site.lang = req.body.lang
|
||||
wiki.config.site.rtl = _.includes(wiki.data.rtlLangs, req.body.lang)
|
||||
wiki.config.site.sessionSecret = (await crypto.randomBytesAsync(32)).toString('hex')
|
||||
|
||||
// Auth namespace
|
||||
wiki.config.auth.public = (req.body.public === 'true')
|
||||
|
||||
// Logging namespace
|
||||
wiki.config.logging.telemetry = (req.body.telemetry === 'true')
|
||||
|
||||
res.json({ ok: true })
|
||||
} catch (err) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
const Promise = require('bluebird')
|
||||
// const pm2 = Promise.promisifyAll(require('pm2'))
|
||||
// const _ = require('lodash')
|
||||
const _ = require('lodash')
|
||||
const cfgHelper = require('../helpers/config')
|
||||
|
||||
module.exports = {
|
||||
@ -20,7 +20,7 @@ module.exports = {
|
||||
return new Promise((resolve, reject) => {
|
||||
// Connect to MongoDB
|
||||
|
||||
return mongo.connect(parsedMongoConStr, {
|
||||
mongo.connect(parsedMongoConStr, {
|
||||
autoReconnect: false,
|
||||
reconnectTries: 2,
|
||||
reconnectInterval: 1000,
|
||||
@ -34,19 +34,33 @@ module.exports = {
|
||||
|
||||
// Check if users table is populated
|
||||
let userCount = await users.count()
|
||||
if (userCount < 1) {
|
||||
throw new Error('Users table is empty or invalid!')
|
||||
if (userCount < 2) {
|
||||
throw new Error('MongoDB Upgrade: Users table is empty!')
|
||||
}
|
||||
|
||||
// Fetch all users
|
||||
let userData = await users.find({}).toArray()
|
||||
console.info(userData)
|
||||
// Import all users
|
||||
let userData = await users.find({
|
||||
email: {
|
||||
$not: 'guest'
|
||||
}
|
||||
}).toArray()
|
||||
await wiki.db.User.bulkCreate(_.map(userData, usr => {
|
||||
return {
|
||||
email: usr.email,
|
||||
name: usr.name || 'Imported User',
|
||||
password: usr.password || '',
|
||||
provider: usr.provider || 'local',
|
||||
providerId: usr.providerId || '',
|
||||
role: 'user',
|
||||
createdAt: usr.createdAt
|
||||
}
|
||||
}))
|
||||
|
||||
resolve(true)
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
db.close()
|
||||
}
|
||||
db.close()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
@ -319,11 +319,6 @@ block body
|
||||
label.label Connection String to Wiki.js 1.x MongoDB database
|
||||
input(type='text', placeholder='mongodb://', v-model='conf.upgMongo', data-vv-scope='upgrade', name='ipt-mongo', v-validate='{ required: true, min: 2 }')
|
||||
span.desc A MongoDB database connection string where a Wiki.js 1.x installation is located. #[strong No alterations will be made to this database. ]
|
||||
section
|
||||
p.control.is-fullwidth
|
||||
input#ipt-public(type='checkbox', v-model='conf.upgUserGroups', data-vv-scope='upgrade', name='ipt-public')
|
||||
label.label(for='ipt-public') Create groups based on individual permissions
|
||||
span.desc User groups will be created based on existing users permissions. If multiple users have the exact same permission rules, they will be put in the same user group.
|
||||
.panel-footer
|
||||
.progress-bar: div(v-bind:style='{width: currentProgress}')
|
||||
button.button.is-small.is-light-blue.is-outlined(v-on:click='proceedToAdmin', v-bind:disabled='loading') Back
|
||||
|
@ -29,9 +29,9 @@ const args = require('yargs')
|
||||
const dev = args.dev
|
||||
|
||||
if (dev) {
|
||||
console.info(colors.bgWhite.black(' Starting Fuse in DEVELOPER mode... '))
|
||||
console.info(colors.bgWhite.black(' Starting Wiki.js in DEVELOPER mode... '))
|
||||
} else {
|
||||
console.info(colors.bgWhite.black(' Starting Fuse in BUILD mode... '))
|
||||
console.info(colors.bgWhite.black(' Starting Wiki.js in BUILD mode... '))
|
||||
}
|
||||
|
||||
// -------------------------------------------------------
|
||||
|
92
wercker.yml
92
wercker.yml
@ -1,92 +0,0 @@
|
||||
build:
|
||||
box: node:8
|
||||
steps:
|
||||
- script:
|
||||
name: install dependencies
|
||||
code: |
|
||||
apt-get update
|
||||
apt-get install build-essential -y
|
||||
npm install -g yarn
|
||||
- script:
|
||||
name: yarn install
|
||||
code: |
|
||||
yarn config set cache-folder "$WERCKER_CACHE_DIR/yarn"
|
||||
yarn install
|
||||
- script:
|
||||
name: build
|
||||
code: yarn run build
|
||||
- npm-test
|
||||
- script:
|
||||
name: purge dev files
|
||||
code: |
|
||||
yarn install --production --ignore-scripts --prefer-offline
|
||||
|
||||
deploy-docker-master:
|
||||
box: node:8-alpine
|
||||
steps:
|
||||
- script:
|
||||
name: install dependencies
|
||||
code: |
|
||||
apk update
|
||||
apk add bash curl git openssh
|
||||
- script:
|
||||
name: copy app files
|
||||
code: |
|
||||
mkdir -p /var/wiki
|
||||
cp -LR assets node_modules server config.sample.yml package.json LICENSE /var/wiki
|
||||
rm -rf /pipeline
|
||||
- internal/docker-push:
|
||||
username: $DOCKER_HUB_USERNAME
|
||||
password: $DOCKER_HUB_PASSWORD
|
||||
tag: latest, master
|
||||
ports: "3000"
|
||||
working-dir: /var/wiki
|
||||
entrypoint: node server
|
||||
env: "WIKI_JS_HEROKU=1"
|
||||
repository: requarks/wiki
|
||||
registry: https://registry.hub.docker.com
|
||||
|
||||
deploy-docker-dev:
|
||||
box: node:8-alpine
|
||||
steps:
|
||||
- script:
|
||||
name: install dependencies
|
||||
code: |
|
||||
apk update
|
||||
apk add bash curl git openssh
|
||||
- script:
|
||||
name: copy app files
|
||||
code: |
|
||||
mkdir -p /var/wiki
|
||||
cp -LR assets node_modules server config.sample.yml package.json LICENSE /var/wiki
|
||||
rm -rf /pipeline
|
||||
- internal/docker-push:
|
||||
username: $DOCKER_HUB_USERNAME
|
||||
password: $DOCKER_HUB_PASSWORD
|
||||
tag: dev
|
||||
ports: "3000"
|
||||
working-dir: /var/wiki
|
||||
entrypoint: node server
|
||||
repository: requarks/wiki
|
||||
registry: https://registry.hub.docker.com
|
||||
|
||||
deploy-github:
|
||||
box: node:8
|
||||
steps:
|
||||
- script:
|
||||
name: package
|
||||
code: |
|
||||
tar -chzf wiki-js.tar.gz assets server config.sample.yml package.json wiki.js LICENSE
|
||||
tar -chzf node_modules.tar.gz node_modules
|
||||
SEMVER_NEXT=`curl --request POST --url https://beta.requarks.io/api/version/increment --header "authorization: $WIKIJSORG_TOKEN" --header 'cache-control: no-cache' --header 'content-type: application/json' --data '{"channel": "stable"}'`
|
||||
- github-create-release:
|
||||
token: $GITHUB_TOKEN
|
||||
tag: "v${SEMVER_NEXT}"
|
||||
prerelease: true
|
||||
title: "$SEMVER_NEXT Release"
|
||||
- github-upload-asset:
|
||||
token: $GITHUB_TOKEN
|
||||
file: wiki-js.tar.gz
|
||||
- github-upload-asset:
|
||||
token: $GITHUB_TOKEN
|
||||
file: node_modules.tar.gz
|
Loading…
Reference in New Issue
Block a user