2015-08-17 14:12:40 +00:00
|
|
|
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
|
|
|
|
class UserDevicesController < ApplicationController
|
|
|
|
before_action :authentication_check
|
|
|
|
|
|
|
|
def index
|
2016-03-25 07:19:59 +00:00
|
|
|
devices = UserDevice.where(user_id: current_user.id).order('updated_at DESC, name ASC')
|
2015-08-17 14:12:40 +00:00
|
|
|
devices_full = []
|
2016-06-30 20:04:48 +00:00
|
|
|
devices.each { |device|
|
2015-08-17 14:12:40 +00:00
|
|
|
attributes = device.attributes
|
2015-08-18 23:05:59 +00:00
|
|
|
if device.location_details['city_name'] && !device.location_details['city_name'].empty?
|
2015-08-18 22:36:58 +00:00
|
|
|
attributes['location'] += ", #{device.location_details['city_name']}"
|
2015-08-17 14:12:40 +00:00
|
|
|
end
|
|
|
|
attributes.delete('created_at')
|
|
|
|
attributes.delete('device_details')
|
|
|
|
attributes.delete('location_details')
|
2015-08-17 16:14:44 +00:00
|
|
|
|
2015-08-18 22:36:58 +00:00
|
|
|
if session[:user_device_id] == device.id
|
2015-08-17 16:14:44 +00:00
|
|
|
attributes['current'] = true
|
|
|
|
end
|
2015-08-17 14:12:40 +00:00
|
|
|
devices_full.push attributes
|
|
|
|
}
|
|
|
|
model_index_render_result(devices_full)
|
|
|
|
end
|
|
|
|
|
|
|
|
def destroy
|
2015-08-18 22:36:58 +00:00
|
|
|
|
2015-08-17 16:14:44 +00:00
|
|
|
# find device
|
|
|
|
user_device = UserDevice.find_by(user_id: current_user.id, id: params[:id])
|
|
|
|
|
|
|
|
# delete device and session's
|
|
|
|
if user_device
|
2016-06-30 20:04:48 +00:00
|
|
|
SessionHelper.list.each { |session|
|
2015-08-17 16:14:44 +00:00
|
|
|
next if !session.data['user_id']
|
2015-08-18 22:36:58 +00:00
|
|
|
next if !session.data['user_device_id']
|
|
|
|
next if session.data['user_device_id'] != user_device.id
|
2015-08-17 16:14:44 +00:00
|
|
|
SessionHelper.destroy( session.id )
|
|
|
|
}
|
|
|
|
user_device.destroy
|
|
|
|
end
|
2015-08-17 14:12:40 +00:00
|
|
|
render json: {}, status: :ok
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|