mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-04-08 11:54:12 +00:00
Make use of Capitano permissions feature
This commit is contained in:
parent
5abc4e550f
commit
d49677581b
@ -2,7 +2,6 @@ _ = require('lodash-contrib')
|
||||
async = require('async')
|
||||
resin = require('resin-sdk')
|
||||
ui = require('../ui')
|
||||
permissions = require('../permissions/permissions')
|
||||
commandOptions = require('./command-options')
|
||||
|
||||
exports.create =
|
||||
@ -29,7 +28,8 @@ exports.create =
|
||||
alias: 't'
|
||||
}
|
||||
]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
async.waterfall([
|
||||
|
||||
(callback) ->
|
||||
@ -58,7 +58,8 @@ exports.list =
|
||||
Examples:
|
||||
$ resin apps
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.application.getAll (error, applications) ->
|
||||
return done(error) if error?
|
||||
console.log ui.widgets.table.horizontal applications, [
|
||||
@ -79,7 +80,8 @@ exports.info =
|
||||
Examples:
|
||||
$ resin app 91
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.application.get params.id, (error, application) ->
|
||||
return done(error) if error?
|
||||
console.log ui.widgets.table.vertical application, [
|
||||
@ -100,7 +102,8 @@ exports.restart =
|
||||
Examples:
|
||||
$ resin app restart 91
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.application.restart(params.id, done)
|
||||
|
||||
exports.remove =
|
||||
@ -117,7 +120,8 @@ exports.remove =
|
||||
$ resin app rm 91 --yes
|
||||
'''
|
||||
options: [ commandOptions.yes ]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
ui.patterns.remove 'application', options.yes, (callback) ->
|
||||
resin.models.application.remove(params.id, callback)
|
||||
, done
|
||||
@ -134,7 +138,8 @@ exports.init =
|
||||
Examples:
|
||||
$ cd myApp && resin init 91
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
currentDirectory = process.cwd()
|
||||
|
||||
async.waterfall [
|
||||
|
@ -3,7 +3,6 @@ url = require('url')
|
||||
async = require('async')
|
||||
resin = require('resin-sdk')
|
||||
ui = require('../ui')
|
||||
permissions = require('../permissions/permissions')
|
||||
helpers = require('../helpers/helpers')
|
||||
|
||||
exports.login =
|
||||
@ -43,7 +42,8 @@ exports.logout =
|
||||
Examples:
|
||||
$ resin logout
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.auth.logout(done)
|
||||
|
||||
exports.signup =
|
||||
@ -90,7 +90,8 @@ exports.whoami =
|
||||
Examples:
|
||||
$ resin whoami
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.auth.whoami (error, username) ->
|
||||
|
||||
if not username?
|
||||
|
@ -2,7 +2,6 @@ _ = require('lodash-contrib')
|
||||
async = require('async')
|
||||
resin = require('resin-sdk')
|
||||
ui = require('../ui')
|
||||
permissions = require('../permissions/permissions')
|
||||
commandOptions = require('./command-options')
|
||||
|
||||
exports.list =
|
||||
@ -15,7 +14,8 @@ exports.list =
|
||||
$ resin devices --application 91
|
||||
'''
|
||||
options: [ commandOptions.application ]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.device.getAllByApplication options.application, (error, devices) ->
|
||||
return done(error) if error?
|
||||
console.log ui.widgets.table.horizontal devices, [
|
||||
@ -39,7 +39,8 @@ exports.info =
|
||||
Examples:
|
||||
$ resin device 317
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.device.get params.id, (error, device) ->
|
||||
return done(error) if error?
|
||||
console.log ui.widgets.table.vertical device, [
|
||||
@ -74,7 +75,8 @@ exports.remove =
|
||||
$ resin device rm 317 --yes
|
||||
'''
|
||||
options: [ commandOptions.yes ]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
ui.patterns.remove 'device', options.yes, (callback) ->
|
||||
resin.models.device.remove(params.id, callback)
|
||||
, done
|
||||
@ -90,7 +92,8 @@ exports.identify =
|
||||
Examples:
|
||||
$ resin device identify 23c73a12e3527df55c60b9ce647640c1b7da1b32d71e6a39849ac0f00db828
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.device.identify(params.uuid, done)
|
||||
|
||||
exports.rename =
|
||||
@ -105,7 +108,8 @@ exports.rename =
|
||||
$ resin device rename 317 MyPi
|
||||
$ resin device rename 317
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
async.waterfall [
|
||||
|
||||
(callback) ->
|
||||
@ -127,6 +131,7 @@ exports.supported =
|
||||
Examples:
|
||||
$ resin devices supported
|
||||
'''
|
||||
action: permissions.user ->
|
||||
permission: 'user'
|
||||
action: ->
|
||||
devices = resin.models.device.getSupportedDeviceTypes()
|
||||
_.each(devices, _.unary(console.log))
|
||||
|
@ -1,7 +1,6 @@
|
||||
_ = require('lodash-contrib')
|
||||
resin = require('resin-sdk')
|
||||
ui = require('../ui')
|
||||
permissions = require('../permissions/permissions')
|
||||
commandOptions = require('./command-options')
|
||||
|
||||
exports.list =
|
||||
@ -29,7 +28,8 @@ exports.list =
|
||||
alias: 'v'
|
||||
}
|
||||
]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.environmentVariables.getAllByApplication options.application, (error, environmentVariables) ->
|
||||
return done(error) if error?
|
||||
|
||||
@ -55,7 +55,8 @@ exports.remove =
|
||||
$ resin env rm 215 --yes
|
||||
'''
|
||||
options: [ commandOptions.yes ]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
ui.patterns.remove 'environment variable', options.yes, (callback) ->
|
||||
resin.models.environmentVariables.remove(params.id, callback)
|
||||
, done
|
||||
@ -79,7 +80,8 @@ exports.add =
|
||||
$ resin env add TERM -a 91
|
||||
'''
|
||||
options: [ commandOptions.application ]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
if not params.value?
|
||||
params.value = process.env[params.key]
|
||||
|
||||
@ -99,5 +101,6 @@ exports.rename =
|
||||
Examples:
|
||||
$ resin env rename 376 emacs
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.environmentVariables.update(params.id, params.value, done)
|
||||
|
@ -4,7 +4,6 @@ path = require('path')
|
||||
_ = require('lodash')
|
||||
gitCli = require('git-cli')
|
||||
resin = require('resin-sdk')
|
||||
permissions = require('../permissions/permissions')
|
||||
ui = require('../ui')
|
||||
examplesData = require('../data/examples.json')
|
||||
|
||||
@ -17,7 +16,8 @@ exports.list =
|
||||
Example:
|
||||
$ resin examples
|
||||
'''
|
||||
action: permissions.user ->
|
||||
permission: 'user'
|
||||
action: ->
|
||||
examplesData = _.map examplesData, (example, index) ->
|
||||
example.id = index + 1
|
||||
return example
|
||||
@ -42,7 +42,8 @@ exports.info =
|
||||
Example:
|
||||
$ resin example 3
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
id = params.id - 1
|
||||
example = examplesData[id]
|
||||
|
||||
@ -74,7 +75,8 @@ exports.clone =
|
||||
Example:
|
||||
$ resin example clone 3
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
example = examplesData[params.id - 1]
|
||||
|
||||
if not example?
|
||||
|
@ -5,7 +5,6 @@ fs = require('fs')
|
||||
resin = require('resin-sdk')
|
||||
helpers = require('../helpers/helpers')
|
||||
ui = require('../ui')
|
||||
permissions = require('../permissions/permissions')
|
||||
commandOptions = require('./command-options')
|
||||
|
||||
exports.list =
|
||||
@ -17,7 +16,8 @@ exports.list =
|
||||
Examples:
|
||||
$ resin keys
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.key.getAll (error, keys) ->
|
||||
return done(error) if error?
|
||||
console.log ui.widgets.table.horizontal keys, [ 'ID', 'Title' ]
|
||||
@ -32,7 +32,8 @@ exports.info =
|
||||
Examples:
|
||||
$ resin key 17
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.models.key.get params.id, (error, key) ->
|
||||
return done(error) if error?
|
||||
key.public_key = '\n' + _.str.chop(key.public_key, resin.settings.get('sshKeyWidth')).join('\n')
|
||||
@ -53,7 +54,8 @@ exports.remove =
|
||||
$ resin key rm 17 --yes
|
||||
'''
|
||||
options: [ commandOptions.yes ]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
ui.patterns.remove 'key', options.yes, (callback) ->
|
||||
resin.models.key.remove(params.id, callback)
|
||||
, done
|
||||
@ -71,7 +73,8 @@ exports.add =
|
||||
$ resin key add Main ~/.ssh/id_rsa.pub
|
||||
$ cat ~/.ssh/id_rsa.pub | resin key add Main
|
||||
'''
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
async.waterfall [
|
||||
|
||||
(callback) ->
|
||||
|
@ -1,6 +1,5 @@
|
||||
_ = require('lodash')
|
||||
resin = require('resin-sdk')
|
||||
permissions = require('../permissions/permissions')
|
||||
|
||||
LOGS_HISTORY_COUNT = 200
|
||||
|
||||
@ -41,7 +40,8 @@ exports.logs =
|
||||
alias: 't'
|
||||
}
|
||||
]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
resin.logs.subscribe params.uuid, {
|
||||
history: options.num or LOGS_HISTORY_COUNT
|
||||
tail: options.tail
|
||||
|
@ -1,5 +1,4 @@
|
||||
async = require('async')
|
||||
permissions = require('../permissions/permissions')
|
||||
helpers = require('../helpers/helpers')
|
||||
resin = require('resin-sdk')
|
||||
|
||||
@ -24,7 +23,8 @@ exports.set =
|
||||
alias: [ 'd', 'dev' ]
|
||||
required: 'You have to specify a device'
|
||||
]
|
||||
action: permissions.user (params, options, done) ->
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
async.waterfall([
|
||||
|
||||
(callback) ->
|
||||
|
@ -4,7 +4,6 @@ path = require('path')
|
||||
mkdirp = require('mkdirp')
|
||||
ProgressBar = require('progress')
|
||||
resin = require('resin-sdk')
|
||||
permissions = require('../permissions/permissions')
|
||||
|
||||
exports.download =
|
||||
signature: 'os download <id>'
|
||||
@ -53,6 +52,7 @@ exports.download =
|
||||
alias: 'o'
|
||||
}
|
||||
]
|
||||
permission: 'user'
|
||||
action: (params, options, done) ->
|
||||
osParams =
|
||||
network: options.network
|
||||
|
@ -1,7 +1,6 @@
|
||||
open = require('open')
|
||||
url = require('url')
|
||||
resin = require('resin-sdk')
|
||||
permissions = require('../permissions/permissions')
|
||||
|
||||
exports.preferences =
|
||||
signature: 'preferences'
|
||||
@ -15,7 +14,8 @@ exports.preferences =
|
||||
Examples:
|
||||
$ resin preferences
|
||||
'''
|
||||
action: permissions.user ->
|
||||
permission: 'user'
|
||||
action: ->
|
||||
preferencesUrl = resin.settings.get('urls.preferences')
|
||||
absUrl = url.resolve(resin.settings.get('remoteUrl'), preferencesUrl)
|
||||
open(absUrl)
|
||||
|
@ -6,6 +6,12 @@ actions = require('./actions')
|
||||
errors = require('./errors/errors')
|
||||
plugin = require('./plugin/plugin')
|
||||
|
||||
capitano.permission 'user', (done) ->
|
||||
resin.auth.isLoggedIn (isLoggedIn) ->
|
||||
if not isLoggedIn
|
||||
return done(new Error('You have to log in'))
|
||||
return done()
|
||||
|
||||
capitano.command
|
||||
signature: '*'
|
||||
action: ->
|
||||
|
@ -1,16 +0,0 @@
|
||||
resin = require('resin-sdk')
|
||||
|
||||
exports.user = (fn, onError) ->
|
||||
return ->
|
||||
args = arguments
|
||||
resin.auth.isLoggedIn (isLoggedIn) ->
|
||||
|
||||
if not isLoggedIn
|
||||
error = new Error('You have to log in')
|
||||
if onError?
|
||||
return onError(error)
|
||||
else
|
||||
console.error(error.message)
|
||||
process.exit(1)
|
||||
|
||||
fn.apply(null, args)
|
@ -1,59 +0,0 @@
|
||||
_ = require('lodash')
|
||||
sinon = require('sinon')
|
||||
expect = require('chai').expect
|
||||
resin = require('resin-sdk')
|
||||
permissions = require('./permissions')
|
||||
|
||||
describe 'Permissions:', ->
|
||||
|
||||
describe '#user()', ->
|
||||
|
||||
describe 'if not logged in', ->
|
||||
|
||||
beforeEach ->
|
||||
@isLoggedInStub = sinon.stub(resin.auth, 'isLoggedIn')
|
||||
@isLoggedInStub.yields(false)
|
||||
|
||||
afterEach ->
|
||||
@isLoggedInStub.restore()
|
||||
|
||||
it 'should not call the function', (done) ->
|
||||
spy = sinon.spy()
|
||||
permissions.user(spy, _.noop)()
|
||||
|
||||
_.defer ->
|
||||
expect(spy).to.not.have.been.called
|
||||
done()
|
||||
|
||||
it 'it should call the second function with an error', (done) ->
|
||||
func = permissions.user _.noop, (error) ->
|
||||
expect(error).to.be.an.instanceof(Error)
|
||||
done()
|
||||
func()
|
||||
|
||||
describe 'if logged in', ->
|
||||
|
||||
beforeEach ->
|
||||
@isLoggedInStub = sinon.stub(resin.auth, 'isLoggedIn')
|
||||
@isLoggedInStub.yields(true)
|
||||
|
||||
afterEach ->
|
||||
@isLoggedInStub.restore()
|
||||
|
||||
it 'should call the function with the correct arguments', (done) ->
|
||||
args = [ 1, 2, 3, 'foo', 'bar' ]
|
||||
|
||||
spy = sinon.spy()
|
||||
permissions.user(spy, _.noop).apply(null, args)
|
||||
|
||||
_.defer ->
|
||||
expect(spy).to.have.been.calledWith(args...)
|
||||
done()
|
||||
|
||||
it 'should not call the second function', (done) ->
|
||||
spy = sinon.spy()
|
||||
permissions.user(_.noop, spy)()
|
||||
|
||||
_.defer ->
|
||||
expect(spy).to.not.have.been.called
|
||||
done()
|
@ -46,7 +46,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"async": "~0.9.0",
|
||||
"capitano": "~1.2.0",
|
||||
"capitano": "~1.3.0",
|
||||
"cliff": "~0.1.9",
|
||||
"coffee-script": "~1.8.0",
|
||||
"conf.js": "^0.1.1",
|
||||
|
Loading…
x
Reference in New Issue
Block a user