var session = sessions[uuidPrefix]
return m('tr', [
session.token && session.user ? [
- m('td', m('a.btn.btn-xs.btn-default', {
+ m('td', session.isFromRails ? null : m('a.btn.btn-xs.btn-default', {
uuidPrefix: uuidPrefix,
onclick: m.withAttr('uuidPrefix', db.logout),
}, 'log out')),
m('td'),
m('td'),
],
- m('td', m('a.glyphicon.glyphicon-trash', {
+ m('td', session.isFromRails ? null : m('a.glyphicon.glyphicon-trash', {
uuidPrefix: uuidPrefix,
onclick: m.withAttr('uuidPrefix', db.trash),
})),
window.models.SessionDB = function() {
var db = this
Object.assign(db, {
- loadAll: function() {
+ loadFromLocalStorage: function() {
try {
return JSON.parse(window.localStorage.getItem('sessions')) || {}
} catch(e) {}
return {}
},
+ loadAll: function() {
+ var all = db.loadFromLocalStorage()
+ if (window.defaultSession) {
+ window.defaultSession.isFromRails = true
+ all[window.defaultSession.user.uuid.slice(0, 5)] = window.defaultSession
+ }
+ return all
+ },
save: function(k, v) {
var sessions = db.loadAll()
sessions[k] = v
+ Object.keys(sessions).forEach(function(key) {
+ if (sessions[key].isFromRails)
+ delete sessions[key]
+ })
window.localStorage.setItem('sessions', JSON.stringify(sessions))
},
trash: function(k) {
# SPDX-License-Identifier: AGPL-3.0
class SessionsController < ApplicationController
- skip_around_filter :require_thread_api_token, :only => [:destroy, :index]
- skip_around_filter :set_thread_api_token, :only => [:destroy, :index]
- skip_before_filter :find_object_by_uuid, :only => [:destroy, :index]
+ skip_around_filter :require_thread_api_token, :only => [:destroy, :logged_out]
+ skip_around_filter :set_thread_api_token, :only => [:destroy, :logged_out]
+ skip_before_filter :find_object_by_uuid
skip_before_filter :find_objects_for_index
skip_before_filter :ensure_arvados_api_exists
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<meta name="description" content="">
<meta name="author" content="">
+ <% if current_user %>
+ <% content_for :js do %>
+ window.defaultSession = <%=raw({baseURL: Rails.configuration.arvados_v1_base.sub(/\/arvados\/v1$/, '/'), token: Thread.current[:arvados_api_token], user: current_user}.to_json)%>
+ <% end %>
+ <% end %>
<% if current_user and $arvados_api_client.discovery[:websocketUrl] %>
<meta name="arv-websocket-url" content="<%=$arvados_api_client.discovery[:websocketUrl]%>?api_token=<%=Thread.current[:arvados_api_token]%>">
<% end %>