Commit 82ba7d0a authored by Nick's avatar Nick

feat: import users from v1 - db + create users

parent 41716e52
......@@ -597,6 +597,7 @@ $editor-height-mobile: calc(100vh - 112px - 16px);
position: relative;
height: $editor-height;
overflow: hidden;
padding: 1rem;
@at-root .theme--dark & {
background-color: mc('grey', '900');
......@@ -622,8 +623,8 @@ $editor-height-mobile: calc(100vh - 112px - 16px);
&-content {
height: $editor-height;
overflow-y: scroll;
padding: 1rem 1rem 1rem 1rem;
width: calc(100% + 1rem + 17px);
padding: 0;
width: calc(100% + 17px);
// -ms-overflow-style: none;
// &::-webkit-scrollbar {
......@@ -701,6 +702,8 @@ $editor-height-mobile: calc(100vh - 112px - 16px);
.CodeMirror {
height: auto;
font-family: 'Roboto Mono', monospace;
font-size: .9rem;
.cm-header-1 {
font-size: 1.5rem;
......
mutation($mongoDbConnString: String!, $groupMode: SystemImportUsersGroupMode!) {
system {
importUsersFromV1(mongoDbConnString: $mongoDbConnString, groupMode: $groupMode) {
responseResult {
succeeded
errorCode
slug
message
}
usersCount
groupsCount
failed {
provider
email
error
}
}
}
}
......@@ -196,7 +196,7 @@
// ---------------------------------
p {
padding: 1rem 24px 0 24px;
padding: 1rem 0 0 0;
margin: 0;
text-align: justify;
......@@ -319,7 +319,7 @@
// ---------------------------------
ol, ul {
padding: 1rem 24px 0 24px;
padding: 1rem 0 0 0;
list-style-position: inside;
li + li {
......@@ -396,7 +396,7 @@
}
&.grid-list {
margin: 1rem 24px 0 24px;
margin: 1rem 0 0 0;
background-color: #FFF;
border: 1px solid mc('grey', '200');
padding: 1px;
......@@ -476,7 +476,7 @@
box-shadow: initial;
background-color: mc('grey', '900');
padding: 1rem 1rem 1rem 3rem;
margin: 1rem 24px;
margin: 1rem 0;
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 5%);
......@@ -604,12 +604,12 @@
border: 1px solid mc('grey', '400');
}
&.uml-diagram {
margin: 1rem;
margin: 1rem 0;
}
}
figure.image {
margin: 1rem 24px 0 24px;
margin: 1rem 0 0 0;
img {
margin: 0 auto;
......
......@@ -84,6 +84,56 @@ module.exports = {
} catch (err) {
return graphHelper.generateError(err)
}
},
async importUsersFromV1(obj, args, context) {
try {
const MongoClient = require('mongodb').MongoClient
if (args.mongoDbConnString && args.mongoDbConnString.length > 10) {
const client = await MongoClient.connect(args.mongoDbConnString, {
appname: `Wiki.js ${WIKI.version} Migration Tool`
})
const dbUsers = client.db().collection('users')
const userCursor = dbUsers.find({ email: { '$ne': 'guest' } })
let failed = []
let usersCount = 0
let groupsCount = 0
while (await userCursor.hasNext()) {
const usr = await userCursor.next()
try {
await WIKI.models.users.createNewUser({
providerKey: usr.provider,
email: usr.email,
name: usr.name,
passwordRaw: usr.password,
mustChangePassword: false,
sendWelcomeEmail: false
})
usersCount++
} catch (err) {
failed.push({
provider: usr.provider,
email: usr.email,
error: err.message
})
WIKI.logger.warn(`${usr.email}: ${err}`)
}
}
client.close()
return {
responseResult: graphHelper.generateSuccess('Import completed.'),
usersCount: usersCount,
groupsCount: groupsCount,
failed: failed
}
} else {
throw new Error('MongoDB Connection String is missing or invalid.')
}
} catch (err) {
return graphHelper.generateError(err)
}
}
},
SystemInfo: {
......
......@@ -35,6 +35,11 @@ type SystemMutation {
): DefaultResponse @auth(requires: ["manage:system"])
performUpgrade: DefaultResponse @auth(requires: ["manage:system"])
importUsersFromV1(
mongoDbConnString: String!
groupMode: SystemImportUsersGroupMode!
): SystemImportUsersResponse @auth(requires: ["manage:system"])
}
# -----------------------------------------------
......@@ -73,3 +78,22 @@ type SystemInfo {
usersTotal: Int @auth(requires: ["manage:system", "manage:navigation", "manage:groups", "write:groups", "manage:users", "write:users"])
workingDirectory: String @auth(requires: ["manage:system"])
}
enum SystemImportUsersGroupMode {
MULTI
SINGLE
NONE
}
type SystemImportUsersResponse {
responseResult: ResponseStatus
usersCount: Int
groupsCount: Int
failed: [SystemImportUsersResponseFailed]
}
type SystemImportUsersResponseFailed {
provider: String
email: String
error: String
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment