1234567891011121314151617181920212223 |
- module ApplicationController::PreventsCsrf
- extend ActiveSupport::Concern
- included do
- before_action :verify_csrf_token
- after_action :set_csrf_token_headers
- end
- private
- def set_csrf_token_headers
- return true if @_auth_type.present? && @_auth_type != 'session'
- headers['CSRF-TOKEN'] = form_authenticity_token
- end
- def verify_csrf_token
- return true if request.method != 'POST' && request.method != 'PUT' && request.method != 'DELETE' && request.method != 'PATCH'
- return true if @_auth_type == 'token_auth' || @_auth_type == 'basic_auth'
- return true if valid_authenticity_token?(session, params[:authenticity_token] || request.headers['X-CSRF-Token'])
- logger.info 'CSRF token verification failed'
- raise Exceptions::NotAuthorized, 'CSRF token verification failed!'
- end
- end
|