• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / a61b3af4-7476-4c06-9800-c86558c32d15

13 Nov 2025 01:29PM UTC coverage: 88.421% (-3.1%) from 91.481%
a61b3af4-7476-4c06-9800-c86558c32d15

push

circleci

web-flow
Updated Search results to show Project information straight from Mediaflux (#2191)

Although the query itself was against Mediaflux, the details for each
project were still coming from our Rails database. This PR updates the
search feature to use the project details from Mediaflux instead. This
has the benefit of fixing the project path that we are showing.

Closes #2127

0 of 22 new or added lines in 2 files covered. (0.0%)

551 existing lines in 31 files now uncovered.

2772 of 3135 relevant lines covered (88.42%)

483.48 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.37
/app/controllers/application_controller.rb
1
# frozen_string_literal: true
2
class ApplicationController < ActionController::Base
4✔
3
  protect_from_forgery with: :exception
4✔
4
  before_action :authenticate_user!
4✔
5
  before_action :mediaflux_session
4✔
6
  around_action :mediaflux_session_errors
4✔
7
  around_action :mediaflux_login_errors
4✔
8
  before_action :emulate_user
4✔
9
  before_action :downtime_check
4✔
10

11
  helper_method :breadcrumbs
4✔
12

13
  def new_session_path(_scope)
4✔
14
    new_user_session_path
×
15
  end
16

17
  def after_sign_in_path_for(_resource)
4✔
18
    mediaflux_passthru_path
1✔
19
    # "/users/#{@user.id}"
20
  end
21

22
  def require_admin_user
4✔
23
    head :forbidden unless current_user&.eligible_sysadmin?
4✔
24
  end
25

26
  def breadcrumbs
4✔
27
    @breadcrumbs ||= []
781✔
28
  end
29

30
  def add_breadcrumb(name, path = nil)
4✔
31
    breadcrumbs << Breadcrumb.new(name, path)
437✔
32
  end
33

34
  # Render a 404 page for any undefined route
35
  def render_not_found
4✔
UNCOV
36
    render file: Rails.public_path.join("404.html").to_s, layout: false, status: :not_found
×
37
  end
38

39
  private
4✔
40

41
    def mediaflux_session
4✔
42
      logger.debug "Application Session #{session[:mediaflux_session]} cas: #{session[:active_web_user]}"
515✔
43
      unless ["passthru", "cas"].include?(action_name)
515✔
44
        current_user&.mediaflux_from_session(session)
509✔
45
      end
46
    end
47

48
    def mediaflux_session_errors
4✔
49
      yield
516✔
50
    rescue ActionView::Template::Error, Mediaflux::SessionExpired => e
UNCOV
51
      raise unless e.is_a?(Mediaflux::SessionExpired) || e.cause.is_a?(Mediaflux::SessionExpired)
4✔
UNCOV
52
      if session[:active_web_user]
4✔
UNCOV
53
        redirect_to mediaflux_passthru_path(path: request.path)
1✔
UNCOV
54
      elsif session_error_handler
3✔
UNCOV
55
        retry
2✔
56
      else
UNCOV
57
        raise
1✔
58
      end
59
    end
60

61
    def mediaflux_login_errors
4✔
62
      yield
516✔
63
    rescue Mediaflux::SessionError
64
      if session_error_handler
×
65
        retry
×
66
      else
67
        raise
×
68
      end
69
    end
70

71
    def session_error_handler
4✔
UNCOV
72
      @retry_count ||= 0
3✔
UNCOV
73
      @retry_count += 1
3✔
74

UNCOV
75
      current_user.clear_mediaflux_session(session)
3✔
UNCOV
76
      current_user.mediaflux_from_session(session)
3✔
UNCOV
77
      @retry_count < 3 # If the session is expired we should not have to retry more than once, but let's have a little wiggle room
3✔
78
    end
79

80
    def emulate_user
4✔
81
      return if Rails.env.production?
516✔
82
      return if current_user.blank? || !current_user.trainer
490✔
83

UNCOV
84
      if session[:emulation_role]
40✔
UNCOV
85
        if session[:emulation_role] == "Eligible Data Sponsor"
18✔
86
          emulate_sponsor
3✔
UNCOV
87
        elsif session[:emulation_role] == "Eligible Data Manager"
15✔
88
          emulate_manager
3✔
UNCOV
89
        elsif session[:emulation_role] == "System Administrator"
12✔
UNCOV
90
          emulate_sysadmin
11✔
91
        elsif session[:emulation_role] == "Eligible Data User"
1✔
92
          emulate_data_user
1✔
93
        elsif session[:emulation_role] == "Return to Self"
×
94
          return_to_self
×
95
        end
96
      end
97
    end
98

99
    def emulate_sponsor
4✔
100
      current_user.eligible_sponsor = true
3✔
101
      current_user.eligible_manager = false
3✔
102
      current_user.sysadmin = false
3✔
103
    end
104

105
    def emulate_manager
4✔
106
      current_user.eligible_manager = true
3✔
107
      current_user.eligible_sponsor = false
3✔
108
      current_user.sysadmin = false
3✔
109
    end
110

111
    def emulate_sysadmin
4✔
UNCOV
112
      current_user.sysadmin = true
11✔
UNCOV
113
      current_user.eligible_manager = false
11✔
UNCOV
114
      current_user.eligible_sponsor = false
11✔
115
    end
116

117
    def emulate_data_user
4✔
118
      current_user.eligible_sponsor = false
1✔
119
      current_user.eligible_manager = false
1✔
120
      current_user.sysadmin = false
1✔
121
      current_user.trainer = false
1✔
122
    end
123

124
    def return_to_self
4✔
125
      current_user.eligible_sponsor = false
×
126
      current_user.eligible_manager = false
×
127
      current_user.sysadmin = false
×
128
    end
129

130
    def downtime_check
4✔
131
      if Flipflop.disable_login?
486✔
132
        if current_user&.eligible_sysadmin?
3✔
133
          flash[:notice] = I18n.t(:only_sysadmin_users)
2✔
134
        else
135
          redirect_to root_path
1✔
136
          flash[:notice] = I18n.t(:no_login_currently)
1✔
137
        end
138
      end
139
    end
140
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc