Fixing build issue,.
This commit is contained in:
parent
4bfda10fbb
commit
395969e0f0
|
@ -215,21 +215,23 @@ async function getAllUserRoles(userRoleId?: string): Promise<RoleDoc[]> {
|
||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getUserRoleIdHierarchy(
|
||||||
|
userRoleId?: string
|
||||||
|
): Promise<string[]> {
|
||||||
|
const roles = await getUserRoleHierarchy(userRoleId)
|
||||||
|
return roles.map(role => role._id!)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an ordered array of the user's inherited role IDs, this can be used
|
* Returns an ordered array of the user's inherited role IDs, this can be used
|
||||||
* to determine if a user can access something that requires a specific role.
|
* to determine if a user can access something that requires a specific role.
|
||||||
* @param {string} userRoleId The user's role ID, this can be found in their access token.
|
* @param {string} userRoleId The user's role ID, this can be found in their access token.
|
||||||
* @param {object} opts Various options, such as whether to only retrieve the IDs (default true).
|
* @returns {Promise<object[]>} returns an ordered array of the roles, with the first being their
|
||||||
* @returns {Promise<string[]|object[]>} returns an ordered array of the roles, with the first being their
|
|
||||||
* highest level of access and the last being the lowest level.
|
* highest level of access and the last being the lowest level.
|
||||||
*/
|
*/
|
||||||
export async function getUserRoleHierarchy(
|
export async function getUserRoleHierarchy(userRoleId?: string) {
|
||||||
userRoleId?: string,
|
|
||||||
opts = { idOnly: true }
|
|
||||||
) {
|
|
||||||
// special case, if they don't have a role then they are a public user
|
// special case, if they don't have a role then they are a public user
|
||||||
const roles = await getAllUserRoles(userRoleId)
|
return getAllUserRoles(userRoleId)
|
||||||
return opts.idOnly ? roles.map(role => role._id) : roles
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this function checks that the provided permissions are in an array format
|
// this function checks that the provided permissions are in an array format
|
||||||
|
@ -249,14 +251,16 @@ export function checkForRoleResourceArray(
|
||||||
return rolePerms
|
return rolePerms
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getAllRoleIds(appId?: string) {
|
||||||
|
const roles = await getAllRoles(appId)
|
||||||
|
return roles.map(role => role._id)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an app ID this will retrieve all of the roles that are currently within that app.
|
* Given an app ID this will retrieve all of the roles that are currently within that app.
|
||||||
* @return {Promise<object[]>} An array of the role objects that were found.
|
* @return {Promise<object[]>} An array of the role objects that were found.
|
||||||
*/
|
*/
|
||||||
export async function getAllRoles(
|
export async function getAllRoles(appId?: string): Promise<RoleDoc[]> {
|
||||||
appId?: string,
|
|
||||||
opts?: { idOnly: boolean }
|
|
||||||
): Promise<RoleDoc[]> {
|
|
||||||
if (appId) {
|
if (appId) {
|
||||||
return doWithDB(appId, internal)
|
return doWithDB(appId, internal)
|
||||||
} else {
|
} else {
|
||||||
|
@ -311,7 +315,7 @@ export async function getAllRoles(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return opts?.idOnly ? roles.map(role => role._id) : roles
|
return roles
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,9 +339,7 @@ export class AccessController {
|
||||||
}
|
}
|
||||||
let roleIds = userRoleId ? this.userHierarchies[userRoleId] : null
|
let roleIds = userRoleId ? this.userHierarchies[userRoleId] : null
|
||||||
if (!roleIds && userRoleId) {
|
if (!roleIds && userRoleId) {
|
||||||
roleIds = (await getUserRoleHierarchy(userRoleId, {
|
roleIds = await getUserRoleIdHierarchy(userRoleId)
|
||||||
idOnly: true,
|
|
||||||
})) as string[]
|
|
||||||
this.userHierarchies[userRoleId] = roleIds
|
this.userHierarchies[userRoleId] = roleIds
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,8 +139,8 @@ export async function accessible(ctx: UserCtx) {
|
||||||
}
|
}
|
||||||
if (ctx.user && sharedSdk.users.isAdminOrBuilder(ctx.user)) {
|
if (ctx.user && sharedSdk.users.isAdminOrBuilder(ctx.user)) {
|
||||||
const appId = context.getAppId()
|
const appId = context.getAppId()
|
||||||
ctx.body = await roles.getAllRoles(appId, { idOnly: true })
|
ctx.body = await roles.getAllRoleIds(appId)
|
||||||
} else {
|
} else {
|
||||||
ctx.body = await roles.getUserRoleHierarchy(roleId!, { idOnly: true })
|
ctx.body = await roles.getUserRoleIdHierarchy(roleId!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,9 +63,7 @@ export async function fetch(ctx: UserCtx) {
|
||||||
export async function clientFetch(ctx: UserCtx) {
|
export async function clientFetch(ctx: UserCtx) {
|
||||||
const routing = await getRoutingStructure()
|
const routing = await getRoutingStructure()
|
||||||
let roleId = ctx.user?.role?._id
|
let roleId = ctx.user?.role?._id
|
||||||
const roleIds = (await roles.getUserRoleHierarchy(roleId, {
|
const roleIds = await roles.getUserRoleIdHierarchy(roleId)
|
||||||
idOnly: true,
|
|
||||||
})) as string[]
|
|
||||||
for (let topLevel of Object.values(routing.routes) as any) {
|
for (let topLevel of Object.values(routing.routes) as any) {
|
||||||
for (let subpathKey of Object.keys(topLevel.subpaths)) {
|
for (let subpathKey of Object.keys(topLevel.subpaths)) {
|
||||||
let found = false
|
let found = false
|
||||||
|
|
|
@ -55,9 +55,7 @@ const checkAuthorizedResource = async (
|
||||||
) => {
|
) => {
|
||||||
// get the user's roles
|
// get the user's roles
|
||||||
const roleId = ctx.roleId || roles.BUILTIN_ROLE_IDS.PUBLIC
|
const roleId = ctx.roleId || roles.BUILTIN_ROLE_IDS.PUBLIC
|
||||||
const userRoles = (await roles.getUserRoleHierarchy(roleId, {
|
const userRoles = await roles.getUserRoleIdHierarchy(roleId)
|
||||||
idOnly: false,
|
|
||||||
})) as Role[]
|
|
||||||
const permError = "User does not have permission"
|
const permError = "User does not have permission"
|
||||||
// check if the user has the required role
|
// check if the user has the required role
|
||||||
if (resourceRoles.length > 0) {
|
if (resourceRoles.length > 0) {
|
||||||
|
|
Loading…
Reference in New Issue