])),
m('tbody', [
Object.keys(sessions).map(function(uuidPrefix) {
- var session = sessions[uuidPrefix]
+ var session = sessions[uuidPrefix];
return m('tr', [
session.token && session.user ? [
m('td', session.user.is_active ?
m('span.label.label-success', 'logged in') :
m('span.label.label-warning', 'inactive')),
m('td', {title: session.baseURL}, [
+ session.isFromRails ? uuidPrefix :
m('a', {
href: db.workbenchBaseURL(session) + '?api_token=' + session.token
}, uuidPrefix)
fallbackLogin = true;
}
var session = db.loadLocal();
- var uuidPrefix = session.user.owner_uuid.slice(0, 5);
var apiHostname = new URL(session.baseURL).hostname;
m.request(session.baseURL+'discovery/v1/apis/arvados/v1/rest').then(function(localDD) {
+ var uuidPrefix = localDD.uuidPrefix;
m.request(baseURL+'discovery/v1/apis/arvados/v1/rest').then(function(dd) {
if (uuidPrefix in dd.remoteHosts ||
- (dd.remoteHostsViaDNS && apiHostname.indexOf('arvadosapi.com') >= 0)) {
+ (dd.remoteHostsViaDNS && apiHostname.endsWith('.arvadosapi.com'))) {
// Federated identity login via salted token
db.saltedToken(dd.uuidPrefix).then(function(token) {
m.request(baseURL+'arvados/v1/users/current', {
var sessions = db.loadActive();
Object.keys(sessions).map(function(uuidPrefix) {
session = sessions[uuidPrefix];
- if (!session.isFromRails && session.token && session.token.indexOf('v2/') < 0) {
- // Only try the federated login
- db.login(session.baseURL, false);
+ if (!session.isFromRails && session.token) {
+ db.saltedToken(uuidPrefix).then(function(saltedToken) {
+ if (session.token != saltedToken) {
+ // Only try the federated login
+ db.login(session.baseURL, false);
+ }
+ });
}
});
},