2015-09-07 11:44:48 +02:00
|
|
|
class ApplicationController < ActionController::Base
|
|
|
|
# Prevent CSRF attacks by raising an exception.
|
2015-09-09 14:08:40 +02:00
|
|
|
protect_from_forgery with: :exception
|
2019-04-12 11:31:59 +02:00
|
|
|
# Don't verfiy authenticity token (protects against CSRF) for API requests
|
|
|
|
skip_before_action :verify_authenticity_token, if: :api_request?
|
|
|
|
|
|
|
|
def api_request?
|
2019-04-18 00:50:41 +02:00
|
|
|
(user_token.present? || current_client.present?) && request.format.json?
|
2019-04-12 11:31:59 +02:00
|
|
|
end
|
2015-09-08 17:18:38 +02:00
|
|
|
|
|
|
|
rescue_from CanCan::AccessDenied do |exception|
|
2015-09-11 14:32:24 +02:00
|
|
|
respond_to do |format|
|
2015-09-11 15:50:07 +02:00
|
|
|
format.json { render json: [ "Diefstal is een misdrijf." ], status: :forbidden }
|
2015-09-11 14:32:24 +02:00
|
|
|
format.html { redirect_to root_url, alert: exception.message }
|
|
|
|
end
|
2015-09-08 17:18:38 +02:00
|
|
|
end
|
2015-09-09 11:24:45 +02:00
|
|
|
|
2015-09-09 14:08:40 +02:00
|
|
|
def authenticate_user_or_client!
|
2019-04-18 20:45:56 +02:00
|
|
|
user_token || current_client || current_user || redirect_to(root_path, flash: { notice: "You have been redirected." })
|
2015-09-09 14:08:40 +02:00
|
|
|
end
|
|
|
|
|
2015-09-09 11:31:34 +02:00
|
|
|
def current_client
|
2015-09-12 10:51:37 +02:00
|
|
|
@current_client ||= authenticate_with_http_token do |token, options|
|
|
|
|
Client.find_by key: token
|
|
|
|
end
|
2015-09-09 11:31:34 +02:00
|
|
|
end
|
|
|
|
|
2015-09-09 11:24:45 +02:00
|
|
|
def current_ability
|
2015-09-09 16:56:55 +02:00
|
|
|
@current_ability ||=
|
|
|
|
current_client.try { |c| ClientAbility.new(c) } ||
|
2019-04-18 20:45:56 +02:00
|
|
|
UserAbility.new(user_token || current_user)
|
2018-06-20 18:51:17 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def user_token
|
|
|
|
@user_token ||= authenticate_with_http_token do |token, options|
|
|
|
|
User.find_by key: token
|
|
|
|
end
|
2015-09-09 11:24:45 +02:00
|
|
|
end
|
2015-09-11 17:22:36 +02:00
|
|
|
|
|
|
|
def after_sign_in_path_for(resource)
|
2017-01-16 21:40:09 +01:00
|
|
|
root_path
|
2015-09-11 17:22:36 +02:00
|
|
|
end
|
2015-09-07 11:44:48 +02:00
|
|
|
end
|