31 lines
		
	
	
		
			824 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			824 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| class Api::V1::InvitesController < Api::BaseController
 | |
|   include RegistrationHelper
 | |
| 
 | |
|   skip_before_action :require_authenticated_user!
 | |
|   skip_around_action :set_locale
 | |
| 
 | |
|   before_action :set_invite
 | |
|   before_action :check_enabled_registrations!
 | |
| 
 | |
|   # Override `current_user` to avoid reading session cookies
 | |
|   def current_user; end
 | |
| 
 | |
|   def show
 | |
|     render json: { invite_code: params[:invite_code], instance_api_url: api_v2_instance_url }, status: 200
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def set_invite
 | |
|     @invite = Invite.find_by!(code: params[:invite_code])
 | |
|   end
 | |
| 
 | |
|   def check_enabled_registrations!
 | |
|     return render json: { error: I18n.t('invites.invalid') }, status: 401 unless @invite.valid_for_use?
 | |
| 
 | |
|     raise Mastodon::NotPermittedError unless allowed_registration?(request.remote_ip, @invite)
 | |
|   end
 | |
| end
 |