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
|