-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathadd-all-permissions-to-custom-profiles.js
More file actions
35 lines (32 loc) · 1.5 KB
/
Copy pathadd-all-permissions-to-custom-profiles.js
File metadata and controls
35 lines (32 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const _ = require('lodash')
const chalk = require('chalk')
const { remapProfileName, retrievePermissionsList } = require('./utils')
const get = require('lodash').get
const { definePlugin } = require('../../plugin')
const { transformXml } = require('../v2-utils')
module.exports = definePlugin({
name: 'core-add-all-custom-profile-permissions',
stage: 'metadata',
enabled: ({ files, config }) =>
!!get(config, 'profiles.addAllUserPermissions') && files.match('profiles/**/*').length > 0,
async onRetrieve ({ files, salesforce, log }) {
const services = {
query: _.memoize(salesforce.query.bind(salesforce)),
salesforce
}
const permissionsFor = _.memoize(profileName => retrievePermissionsList(profileName, services))
await transformXml(files, 'profiles/**/*', async (fJson, file) => {
const isCustom = fJson.custom && fJson.custom[0] === 'true'
if (!isCustom) return
log.info(chalk.blue(`----> Processing ${file.path}: Adding all permissions`))
log.info(chalk.grey('Remapping profile name...'))
const realProfileName = await remapProfileName(file.path, services)
log.info(chalk.grey('Retrieving permission list...'))
const allPermissions = await permissionsFor(realProfileName)
log.info(chalk.grey('Patching profile...'))
const finalPermissions = { ..._.keyBy(allPermissions, 'name') }
fJson.userPermissions = Object.keys(finalPermissions).sort().map(x => finalPermissions[x])
log.info(chalk.blue('----> Done'))
})
}
})