UNPKG

1.68 kBJavaScriptView Raw
1'use strict'
2
3let cli = require('heroku-cli-util')
4let _ = require('lodash')
5let Utils = require('../../lib/utils')
6let error = require('../../lib/error')
7let co = require('co')
8
9function * run (context, heroku) {
10 let appName = context.app
11 let permissions = context.flags.permissions || context.flags.privileges
12 if (!permissions) error.exit(1, 'Required flag: --permissions PERMISSIONS')
13
14 permissions = permissions.split(',')
15
16 let appInfo = yield heroku.get(`/apps/${appName}`)
17
18 if (context.flags.privileges) cli.warn('DEPRECATION WARNING: use `--permissions` not `--privileges`')
19 if (!Utils.isOrgApp(appInfo.owner.email)) error.exit(1, `Error: cannot update permissions. The app ${cli.color.cyan(appName)} is not owned by an organization`)
20
21 // Give implicit `view` access
22 permissions.push('view')
23 permissions = _.uniq(permissions.sort())
24
25 let request = heroku.patch(`/organizations/apps/${appName}/collaborators/${context.args.email}`, {
26 body: { permissions: permissions }
27 })
28 yield cli.action(`Updating ${context.args.email} in application ${cli.color.cyan(appName)} with ${permissions} permissions`, request)
29}
30
31module.exports = {
32 topic: 'access',
33 needsAuth: true,
34 needsApp: true,
35 command: 'update',
36 description: 'Update existing collaborators in an org app',
37 help: 'heroku access:update user@email.com --app APP --privileges deploy,manage,operate',
38 args: [{name: 'email', optional: false}],
39 flags: [
40 { name: 'permissions', hasValue: true, description: 'comma-delimited list of permissions to update (deploy,manage,operate)' },
41 { name: 'privileges', hasValue: true, hidden: true }
42 ],
43 run: cli.command(co.wrap(run))
44}