replace staff access with role based sytem (#30004)
- remove references to staff access GitOrigin-RevId: 5d7df3ae8bc78aa02b65ec0dac0a323520c3df15
This commit is contained in:
committed by
Copybot
parent
37b8bb15e6
commit
ff8f77d85c
@@ -1,94 +0,0 @@
|
||||
import {
|
||||
db,
|
||||
READ_PREFERENCE_SECONDARY,
|
||||
} from '../app/src/infrastructure/mongodb.mjs'
|
||||
import UserSessionsManager from '../app/src/Features/User/UserSessionsManager.mjs'
|
||||
import { scriptRunner } from './lib/ScriptRunner.mjs'
|
||||
|
||||
const COMMIT = process.argv.includes('--commit')
|
||||
const KEEP_SESSIONS = process.argv.includes('--keep-sessions')
|
||||
|
||||
const FULL_STAFF_ACCESS = {
|
||||
publisherMetrics: true,
|
||||
publisherManagement: true,
|
||||
institutionMetrics: true,
|
||||
institutionManagement: true,
|
||||
groupMetrics: true,
|
||||
groupManagement: true,
|
||||
adminMetrics: true,
|
||||
splitTestMetrics: true,
|
||||
splitTestManagement: true,
|
||||
}
|
||||
|
||||
function doesNotHaveFullStaffAccess(user) {
|
||||
if (!user.staffAccess) {
|
||||
return true
|
||||
}
|
||||
for (const field of Object.keys(FULL_STAFF_ACCESS)) {
|
||||
if (!user.staffAccess[field]) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function formatUser(user) {
|
||||
user = Object.assign({}, user, user.staffAccess)
|
||||
delete user.staffAccess
|
||||
return user
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const adminUsers = await db.users
|
||||
.find(
|
||||
{ isAdmin: true },
|
||||
{
|
||||
projection: {
|
||||
_id: 1,
|
||||
email: 1,
|
||||
staffAccess: 1,
|
||||
},
|
||||
readPreference: READ_PREFERENCE_SECONDARY,
|
||||
}
|
||||
)
|
||||
.toArray()
|
||||
|
||||
console.log('All Admin users:')
|
||||
console.table(adminUsers.map(formatUser))
|
||||
|
||||
const incompleteUsers = adminUsers.filter(doesNotHaveFullStaffAccess)
|
||||
if (incompleteUsers.length === 0) {
|
||||
console.warn('All Admin users have full staff access.')
|
||||
return
|
||||
}
|
||||
|
||||
console.log()
|
||||
console.log('Incomplete staff access:')
|
||||
console.table(incompleteUsers.map(formatUser))
|
||||
|
||||
if (COMMIT) {
|
||||
for (const user of incompleteUsers) {
|
||||
console.error(
|
||||
`Granting ${user.email} (${user._id.toString()}) full staff access`
|
||||
)
|
||||
await db.users.updateOne(
|
||||
{ _id: user._id, isAdmin: true },
|
||||
{ $set: { staffAccess: FULL_STAFF_ACCESS } }
|
||||
)
|
||||
if (!KEEP_SESSIONS) {
|
||||
await UserSessionsManager.promises.removeSessionsFromRedis(user)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.warn('Use --commit to grant missing staff access.')
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
await scriptRunner(main)
|
||||
console.error('Done.')
|
||||
process.exit(0)
|
||||
} catch (error) {
|
||||
console.error({ error })
|
||||
process.exit(1)
|
||||
}
|
||||
Reference in New Issue
Block a user