Validate Web::PushSubscription (#11971)
parent
059945c97c
commit
07b057eabb
|
@ -20,6 +20,10 @@ class Web::PushSubscription < ApplicationRecord
|
||||||
|
|
||||||
has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription
|
has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription
|
||||||
|
|
||||||
|
validates :endpoint, presence: true
|
||||||
|
validates :key_p256dh, presence: true
|
||||||
|
validates :key_auth, presence: true
|
||||||
|
|
||||||
def push(notification)
|
def push(notification)
|
||||||
I18n.with_locale(associated_user&.locale || I18n.default_locale) do
|
I18n.with_locale(associated_user&.locale || I18n.default_locale) do
|
||||||
push_payload(payload_for_notification(notification), 48.hours.seconds)
|
push_payload(payload_for_notification(notification), 48.hours.seconds)
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class RemoveInvalidWebPushSubscription < ActiveRecord::Migration[5.2]
|
||||||
|
disable_ddl_transaction!
|
||||||
|
|
||||||
|
def up
|
||||||
|
invalid_web_push_subscriptions = Web::PushSubscription.where(endpoint: '')
|
||||||
|
.or(Web::PushSubscription.where(key_p256dh: ''))
|
||||||
|
.or(Web::PushSubscription.where(key_auth: ''))
|
||||||
|
.preload(:session_activation)
|
||||||
|
invalid_web_push_subscriptions.find_each do |web_push_subscription|
|
||||||
|
web_push_subscription.session_activation&.update!(web_push_subscription_id: nil)
|
||||||
|
web_push_subscription.destroy!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down; end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2019_09_17_213523) do
|
ActiveRecord::Schema.define(version: 2019_09_27_124642) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
Reference in New Issue