Ensure push subscription is immediately removed when application is revoked (#7548)
* Ensure push subscription is immediately removed when application is revoked * When token is revoked from app, unsubscribe too
This commit is contained in:
		
							parent
							
								
									5910eb9b61
								
							
						
					
					
						commit
						8378b72eba
					
				
					 8 changed files with 76 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -50,6 +50,15 @@ class Web::PushSubscription < ApplicationRecord
 | 
			
		|||
                               end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class << self
 | 
			
		||||
    def unsubscribe_for(application_id, resource_owner)
 | 
			
		||||
      access_token_ids = Doorkeeper::AccessToken.where(application_id: application_id, resource_owner_id: resource_owner.id, revoked_at: nil)
 | 
			
		||||
                                                .pluck(:id)
 | 
			
		||||
 | 
			
		||||
      where(access_token_id: access_token_ids).delete_all
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def push_payload(message, ttl = 5.minutes.seconds)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue