module Biovision::BaseMethods
Base additional methods for application controller
Public Instance Methods
@return [Agent]
# File lib/biovision/base_methods.rb, line 64 def agent @agent ||= Agent[request.user_agent || 'n/a'] end
Get content component handler
@return [Biovision::Components::ContentComponent]
# File lib/biovision/base_methods.rb, line 52 def content_component @content_component ||= Biovision::Components::ContentComponent[current_user] end
Get current language from locale
@return [Language]
# File lib/biovision/base_methods.rb, line 45 def current_language @current_language ||= Language[locale] end
Get current page number from request
@return [Integer]
# File lib/biovision/base_methods.rb, line 20 def current_page @current_page ||= (params[:page] || 1).to_s.to_i.abs end
Get current user from token cookie
@return [User|nil]
# File lib/biovision/base_methods.rb, line 38 def current_user @current_user ||= Token.user_by_token(cookies['token'], true) end
Get parameter from request and normalize it
Casts request parameter to UTF-8 string and removes invalid characters
@param [Symbol] param @return [String]
# File lib/biovision/base_methods.rb, line 30 def param_from_request(*param) value = params.dig(*param) value.to_s.encode('UTF-8', 'UTF-8', invalid: :replace, replace: '') end
Get users component handler
@return [Biovision::Components::UsersComponent]
# File lib/biovision/base_methods.rb, line 59 def users_component @users_component ||= Biovision::Components::UsersComponent[current_user] end
@return [String]
# File lib/biovision/base_methods.rb, line 69 def visitor_slug if current_user.nil? "#{remote_ip}:#{agent.id}" else current_user.id.to_s end end
Private Instance Methods
# File lib/biovision/base_methods.rb, line 174 def component_class Biovision::Components::BaseComponent end
# File lib/biovision/base_methods.rb, line 178 def component_handler @component_handler ||= component_class[current_user] end
@param [String] next_page
# File lib/biovision/base_methods.rb, line 155 def form_processed_ok(next_page) respond_to do |format| format.js { render(js: "document.location.href = '#{next_page}'") } format.json { render(json: { links: { next: next_page } }) } format.html { redirect_to(next_page) } end end
@param [Symbol|String] view_to_render @param [Array] errors
# File lib/biovision/base_methods.rb, line 165 def form_processed_with_error(view_to_render, errors = []) @errors = errors respond_to do |format| format.js { render('shared/forms/errors', status: :bad_request) } format.json { render('shared/forms/errors', status: :bad_request) } format.html { render(view_to_render, status: :bad_request) } end end
Handle HTTP error with status 401 without raising exception
@param [String] message @param [Symbol|String] view
# File lib/biovision/base_methods.rb, line 94 def handle_http_401(message = nil, view = :unauthorized) message ||= t('application.errors.unauthorized') handle_http_error(:unauthorized, message, view) end
Handle HTTP error with status 403 without raising exception
@param [String] message @param [Symbol|String] view
# File lib/biovision/base_methods.rb, line 103 def handle_http_403(message = nil, view = :forbidden) message ||= t('application.errors.forbidden') handle_http_error(:forbidden, message, view) end
Handle HTTP error with status 404 without raising exception
@param [String] message @param [Symbol|String] view
# File lib/biovision/base_methods.rb, line 112 def handle_http_404(message = nil, view = :not_found) message ||= t('application.errors.not_found') handle_http_error(:not_found, message, view) end
Handle HTTP error with status 503 without raising exception
@param [String] message @param [Symbol|String] view
# File lib/biovision/base_methods.rb, line 121 def handle_http_503(message = nil, view = :service_unavailable) message ||= t('application.errors.service_unavailable') handle_http_error(:service_unavailable, message, view) end
Handle generic HTTP error without raising exception
@param [Symbol] status @param [String] message @param [String|Symbol] view
# File lib/biovision/base_methods.rb, line 84 def handle_http_error(status = 500, message = nil, view = :error) @message = message || '500: Internal server error' logger.warn "#{message}\n\t#{request.method} #{request.original_url}" render view, status: status end
Owner information for entity
@param [TrueClass|FalseClass] track
# File lib/biovision/base_methods.rb, line 136 def owner_for_entity(track = false) result = { user: current_user } result.merge!(tracking_for_entity) if track result end
# File lib/biovision/base_methods.rb, line 150 def remote_ip @remote_ip ||= (request.env['HTTP_X_REAL_IP'] || request.remote_ip) end
Restrict access for anonymous users
# File lib/biovision/base_methods.rb, line 127 def restrict_anonymous_access return unless current_user.nil? handle_http_401(t('application.errors.restricted_access')) end
@return [Hash]
# File lib/biovision/base_methods.rb, line 143 def tracking_for_entity { agent: agent, ip_address: IpAddress[remote_ip] } end