mirror of https://github.com/Budibase/budibase.git
46 changed files with 5080 additions and 349 deletions
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,64 @@ |
|||
const CouchDB = require("../db") |
|||
const { |
|||
getMultiIDParams, |
|||
getGlobalIDFromUserMetadataID, |
|||
StaticDatabases, |
|||
} = require("../db/utils") |
|||
const { BUILTIN_ROLE_IDS } = require("@budibase/auth/roles") |
|||
const { getDeployedAppID } = require("@budibase/auth/db") |
|||
const { getGlobalUserParams } = require("@budibase/auth/db") |
|||
|
|||
exports.updateAppRole = (appId, user) => { |
|||
if (!user.roles) { |
|||
return user |
|||
} |
|||
if (user.builder && user.builder.global) { |
|||
user.roleId = BUILTIN_ROLE_IDS.ADMIN |
|||
} else { |
|||
// always use the deployed app
|
|||
user.roleId = user.roles[getDeployedAppID(appId)] |
|||
if (!user.roleId) { |
|||
user.roleId = BUILTIN_ROLE_IDS.PUBLIC |
|||
} |
|||
} |
|||
delete user.roles |
|||
return user |
|||
} |
|||
|
|||
exports.getGlobalUser = async (appId, userId) => { |
|||
const db = CouchDB(StaticDatabases.GLOBAL.name) |
|||
let user = await db.get(getGlobalIDFromUserMetadataID(userId)) |
|||
if (user) { |
|||
delete user.password |
|||
} |
|||
return exports.updateAppRole(appId, user) |
|||
} |
|||
|
|||
exports.getGlobalUsers = async (appId = null, users = null) => { |
|||
const db = CouchDB(StaticDatabases.GLOBAL.name) |
|||
let globalUsers |
|||
if (users) { |
|||
const globalIds = users.map(user => getGlobalIDFromUserMetadataID(user._id)) |
|||
globalUsers = (await db.allDocs(getMultiIDParams(globalIds))).rows.map( |
|||
row => row.doc |
|||
) |
|||
} else { |
|||
globalUsers = ( |
|||
await db.allDocs( |
|||
getGlobalUserParams(null, { |
|||
include_docs: true, |
|||
}) |
|||
) |
|||
).rows.map(row => row.doc) |
|||
} |
|||
globalUsers = globalUsers |
|||
.filter(user => user != null) |
|||
.map(user => { |
|||
delete user.password |
|||
return user |
|||
}) |
|||
if (!appId) { |
|||
return globalUsers |
|||
} |
|||
return globalUsers.map(user => exports.updateAppRole(appId, user)) |
|||
} |
|||
File diff suppressed because it is too large
File diff suppressed because it is too large
Loading…
Reference in new issue