Improved device logging, do not delete current used device. Delete also sessions of device.
This commit is contained in:
parent
6fe9276ba7
commit
f2ef65d67d
4 changed files with 26 additions and 4 deletions
|
@ -21,7 +21,7 @@
|
|||
<td><%= device.name %></td>
|
||||
<td><%= device.location %></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>
|
||||
<% end %>
|
||||
<tbody>
|
||||
|
|
|
@ -98,6 +98,9 @@ class ApplicationController < ActionController::Base
|
|||
# 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
|
||||
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
|
||||
session[:check_user_device_at] = Time.zone.now
|
||||
|
||||
UserDevice.add(
|
||||
user_device = UserDevice.add(
|
||||
session[:user_agent],
|
||||
session[:remote_id],
|
||||
session[:user_id],
|
||||
)
|
||||
if user_device.id != session[:check_user_device_id]
|
||||
session[:check_user_device_id] = user_device.id
|
||||
end
|
||||
end
|
||||
|
||||
def authentication_check_only(auth_param)
|
||||
|
|
|
@ -14,13 +14,29 @@ class UserDevicesController < ApplicationController
|
|||
attributes.delete('created_at')
|
||||
attributes.delete('device_details')
|
||||
attributes.delete('location_details')
|
||||
|
||||
if session[:check_user_device_id] == device.id
|
||||
attributes['current'] = true
|
||||
end
|
||||
devices_full.push attributes
|
||||
}
|
||||
model_index_render_result(devices_full)
|
||||
end
|
||||
|
||||
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
|
||||
end
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ class UserDevice < ApplicationModel
|
|||
|
||||
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',
|
||||
'172.0.0.1',
|
||||
user.id,
|
||||
|
|
Loading…
Reference in a new issue