Check token validity against the API when login

Consider the following case:

The SDK is configured to point to staging, but the user passes a token
from production, or viceversa. Since the token is valid in a sense that
is valid JWT and contains real data, the CLI will report as a success.

The user will then get Unauthorized errors when using the API.
This commit is contained in:
Juan Cruz Viotti 2015-09-05 20:17:34 +03:00
parent 4bdcd3d2ee
commit dc257b5cab
2 changed files with 12 additions and 1 deletions
build/actions
lib/actions

@ -41,7 +41,14 @@
type: 'input'
});
});
}).then(resin.auth.loginWithToken).then(resin.auth.whoami).tap(function(username) {
}).then(resin.auth.loginWithToken).then(function(token) {
return resin.auth.isLoggedIn().then(function(isLoggedIn) {
if (isLoggedIn) {
return token;
}
throw new Error('Authentication failed');
});
}).then(resin.auth.whoami).tap(function(username) {
console.info("Successfully logged in as: " + username);
return events.send('user.login');
}).nodeify(done);

@ -48,6 +48,10 @@ exports.login =
type: 'input'
.then(resin.auth.loginWithToken)
.then (token) ->
resin.auth.isLoggedIn().then (isLoggedIn) ->
return token if isLoggedIn
throw new Error('Authentication failed')
.then(resin.auth.whoami)
.tap (username) ->
console.info("Successfully logged in as: #{username}")