Files
fizzy/saas/app/controllers/users/devices_controller.rb
T
Fernando Olivares 3c54cd84fc Add native push notification infrastructure
- Add action_push_native gem and SaaS configuration
- Add device registration API and UI
- Add User::Devices concern
- Add NotificationPusher::Native for push delivery
- Add tests and fixtures for native push
2026-02-25 19:31:13 +01:00

30 lines
947 B
Ruby

class Users::DevicesController < ApplicationController
def index
@devices = Current.user.devices.order(created_at: :desc)
end
def create
attrs = device_params
device = Current.user.devices.find_or_create_by(uuid: attrs[:uuid])
device.update!(token: attrs[:token], name: attrs[:name], platform: attrs[:platform])
head :created
rescue ActiveRecord::RecordInvalid
head :unprocessable_entity
end
def destroy
Current.user.devices.find_by(id: params[:id])&.destroy
redirect_to users_devices_path, notice: "Device removed"
end
private
def device_params
params.permit(:uuid, :token, :platform, :name).tap do |p|
p[:platform] = p[:platform].to_s.downcase
raise ActionController::BadRequest unless p[:platform].in?(%w[apple google])
raise ActionController::BadRequest if p[:uuid].blank?
raise ActionController::BadRequest if p[:token].blank?
end
end
end