})();
}
-function getProfile(accessToken, callback) {
+function initWithToken(accessToken) {
superagent.get('/api/profile').query({ access_token: accessToken }).end(function (error, result) {
app.ready = true;
- if (error && !error.response) return callback(error);
+ if (error && !error.response) return console.error(error);
if (result.statusCode !== 200) {
delete localStorage.accessToken;
- return callback('Invalid access token');
+ return;
}
localStorage.accessToken = accessToken;
app.folderListingEnabled = !!result.body.folderListingEnabled;
- callback();
+ loadDirectory(decode(window.location.hash.slice(1)));
+
+ app.refreshAccessTokens();
});
});
}
password: '',
busy: false
},
- entries: []
+ entries: [],
+ accessTokens: [],
+ accessTokensDialogVisible: false
},
methods: {
onLogin: function () {
if (error && !result) return that.$message.error(error.message);
if (result.statusCode === 401) return that.$message.error('Wrong username or password');
- getProfile(result.body.accessToken, function (error) {
- if (error) return console.error(error);
-
- loadDirectory(decode(window.location.hash.slice(1)));
- });
+ initWithToken(result.body.accessToken);
});
},
onOptionsMenu: function (command) {
}).then(function () {}).catch(function () {});
} else if (command === 'logout') {
logout();
+ } else if (command === 'apiAccess') {
+ this.accessTokensDialogVisible = true;
}
},
onDownload: function (entry) {
});
}).catch(function () {});
},
+ refreshAccessTokens: function () {
+ var that = this;
+
+ superagent.get('/api/tokens').query({ access_token: localStorage.accessToken }).end(function (error, result) {
+ if (error && !result) return that.$message.error(error.message);
+
+ that.accessTokens = result.body.accessTokens;
+ });
+ },
+ onCopyAccessToken: function (event) {
+ event.target.select();
+ document.execCommand('copy');
+
+ this.$message({ type: 'success', message: 'Access token copied to clipboard' });
+ },
+ onCreateAccessToken: function () {
+ var that = this;
+
+ superagent.post('/api/tokens').query({ access_token: localStorage.accessToken }).end(function (error, result) {
+ if (error && !result) return that.$message.error(error.message);
+
+ that.refreshAccessTokens();
+ });
+ },
+ onDeleteAccessToken: function (token) {
+ var that = this;
+
+ this.$confirm('All actions from apps using this token will fail!', 'Really delete this access token?', { confirmButtonText: 'Yes Delete', cancelButtonText: 'No' }).then(function () {
+ superagent.delete('/api/tokens/' + token).query({ access_token: localStorage.accessToken }).end(function (error, result) {
+ if (error && !result) return that.$message.error(error.message);
+
+ that.refreshAccessTokens();
+ });
+ }).catch(function () {});
+
+ },
prettyDate: function (row, column, cellValue, index) {
var date = new Date(cellValue),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
}
});
-getProfile(localStorage.accessToken, function (error) {
- if (error) return console.error(error);
-
- loadDirectory(decode(window.location.hash.slice(1)));
-});
+initWithToken(localStorage.accessToken);
$(window).on('hashchange', function () {
loadDirectory(decode(window.location.hash.slice(1)));