24 lines
		
	
	
		
			789 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			789 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module WellKnown
 | |
|   class OauthMetadataController < ActionController::Base # rubocop:disable Rails/ApplicationController
 | |
|     include CacheConcern
 | |
| 
 | |
|     # Prevent `active_model_serializer`'s `ActionController::Serialization` from calling `current_user`
 | |
|     # and thus re-issuing session cookies
 | |
|     serialization_scope nil
 | |
| 
 | |
|     def show
 | |
|       # Due to this document potentially changing between Mastodon versions (as
 | |
|       # new OAuth scopes are added), we don't use expires_in to cache upstream,
 | |
|       # instead just caching in the rails cache:
 | |
|       render_with_cache(
 | |
|         json: ::OauthMetadataPresenter.new,
 | |
|         serializer: ::OauthMetadataSerializer,
 | |
|         content_type: 'application/json',
 | |
|         expires_in: 15.minutes
 | |
|       )
 | |
|     end
 | |
|   end
 | |
| end
 |