Improved device logging, do not delete current used device. Delete also sessions of device.

This commit is contained in:
Martin Edenhofer 2015-08-17 18:14:44 +02:00
parent 6fe9276ba7
commit f2ef65d67d
4 changed files with 26 additions and 4 deletions

View file

@ -21,7 +21,7 @@
<td><%= device.name %></td> <td><%= device.name %></td>
<td><%= device.location %></td> <td><%= device.location %></td>
<td><%- @humanTime(device.updated_at) %></td> <td><%- @humanTime(device.updated_at) %></td>
<td><a href="#" data-device-id="<%- device.id %>" data-type="delete" title="<%- @Ti('Delete') %>"><svg class="icon-trash"><use xlink:href="#icon-trash"></use></svg></a></td> <td><a href="#" data-device-id="<%- device.id %>" data-type="delete" title="<%- @Ti('Delete') %>"<% if device.current: %>disabled<% end %>><svg class="icon-trash"><use xlink:href="#icon-trash"></use></svg></a></td>
</tr> </tr>
<% end %> <% end %>
<tbody> <tbody>

View file

@ -98,6 +98,9 @@ class ApplicationController < ActionController::Base
# check user device # check user device
def check_user_device def check_user_device
# return if we are in switch to user mode
return if session[:switched_from_user_id]
# only if user_id exists # only if user_id exists
return if !session[:user_id] return if !session[:user_id]
@ -108,11 +111,14 @@ class ApplicationController < ActionController::Base
return if session[:check_user_device_at] && session[:check_user_device_at] > Time.zone.now - 5.minutes return if session[:check_user_device_at] && session[:check_user_device_at] > Time.zone.now - 5.minutes
session[:check_user_device_at] = Time.zone.now session[:check_user_device_at] = Time.zone.now
UserDevice.add( user_device = UserDevice.add(
session[:user_agent], session[:user_agent],
session[:remote_id], session[:remote_id],
session[:user_id], session[:user_id],
) )
if user_device.id != session[:check_user_device_id]
session[:check_user_device_id] = user_device.id
end
end end
def authentication_check_only(auth_param) def authentication_check_only(auth_param)

View file

@ -14,13 +14,29 @@ class UserDevicesController < ApplicationController
attributes.delete('created_at') attributes.delete('created_at')
attributes.delete('device_details') attributes.delete('device_details')
attributes.delete('location_details') attributes.delete('location_details')
if session[:check_user_device_id] == device.id
attributes['current'] = true
end
devices_full.push attributes devices_full.push attributes
} }
model_index_render_result(devices_full) model_index_render_result(devices_full)
end end
def destroy def destroy
UserDevice.where(user_id: current_user.id, id: params[:id]).destroy_all # find device
user_device = UserDevice.find_by(user_id: current_user.id, id: params[:id])
# delete device and session's
if user_device
SessionHelper.list.each {|session|
next if !session.data['user_id']
next if !session.data['check_user_device_id']
next if session.data['check_user_device_id'] != user_device.id
SessionHelper.destroy( session.id )
}
user_device.destroy
end
render json: {}, status: :ok render json: {}, status: :ok
end end

View file

@ -9,7 +9,7 @@ class UserDevice < ApplicationModel
store device for user store device for user
UserDevice.add( user_device = UserDevice.add(
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36',
'172.0.0.1', '172.0.0.1',
user.id, user.id,