class ApplicationController < ActionController::Base
  rescue_from DeviseLdapAuthenticatable::LdapException do |exception|
    render :text => exception, :status => 500
  end

  before_action :sentry_set_user

  def sentry_set_user
    return unless Setting.sentry_enabled

    if user_signed_in?
      Sentry.set_user(id: current_user.id, username: current_user.cn)
    else
      Sentry.set_user({})
    end
  end

  def require_user_signed_in
    unless user_signed_in?
      redirect_to welcome_path and return
    end
  end

  def require_user_signed_out
    if user_signed_in?
      redirect_to root_path and return
    end
  end

  def authorize_admin
    http_status :forbidden unless current_user.is_admin?
  end

  def http_status(status)
    respond_to do |format|
      format.html { render template: "shared/status_#{status.to_s}", status: status }
      format.any  { head status }
    end
  end

  def after_sign_in_path_for(user)
    session[:user_return_to] || root_path
  end
end
