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

pulibrary / tigerdata-app / b31d354f-f32c-42d8-9f2e-84ea71396506

16 Dec 2024 05:24PM UTC coverage: 83.419% (-0.9%) from 84.289%
b31d354f-f32c-42d8-9f2e-84ea71396506

Pull #875

circleci

carolyncole
Adding the concept of a System Login and an Active Web Login
Pull Request #875: Getting an extra cas ticket that we could theoretically pass along to mediaflux

4 of 4 branches covered (100.0%)

48 of 75 new or added lines in 8 files covered. (64.0%)

9 existing lines in 2 files now uncovered.

2274 of 2726 relevant lines covered (83.42%)

364.38 hits per line

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

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

10
  helper_method :breadcrumbs
1✔
11

12
  def new_session_path(_scope)
1✔
13
    new_user_session_path
×
14
  end
15

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

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

25
  def breadcrumbs
1✔
26
    @breadcrumbs ||= []
643✔
27
  end
28

29
  def add_breadcrumb(name, path = nil)
1✔
30
    breadcrumbs << Breadcrumb.new(name, path)
275✔
31
  end
32

33
  private
1✔
34

35
    def mediaflux_session
1✔
36
      logger.debug "Application Session #{session[:mediaflux_session]} cas: #{session[:active_web_user]}"
256✔
37
      unless ["passthru", "cas"].include?(action_name)
256✔
38
        current_user&.mediaflux_from_session(session)
253✔
39
      end
40
    end
41

42
    def mediaflux_session_errors
1✔
43
      yield
256✔
44
    rescue ActionView::Template::Error, Mediaflux::SessionExpired => e
45
      raise unless e.is_a?(Mediaflux::SessionExpired) || e.cause.is_a?(Mediaflux::SessionExpired)
4✔
46
      if session[:active_web_user]
4✔
47
        redirect_to mediaflux_passthru_path(path: request.path)
1✔
48
      else
49
        @retry_count ||= 0
3✔
50
        @retry_count += 1
3✔
51

52
        current_user.mediaflux_from_session(session)
3✔
53
        if @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✔
54
          retry
2✔
55
        else
56
          raise
1✔
57
        end
58
      end
59
    end
60

61
    def mediaflux_login_errors
1✔
62
      yield
256✔
63
    rescue Mediaflux::SessionError
UNCOV
64
      @retry_count ||= 0
×
UNCOV
65
      @retry_count += 1
×
66

UNCOV
67
      current_user.clear_mediaflux_session(session)
×
UNCOV
68
      current_user.mediaflux_from_session(session)
×
UNCOV
69
      if @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
×
UNCOV
70
        retry
×
71
      else
UNCOV
72
        raise
×
73
      end
74
    end
75

76
    def emulate_user
1✔
77
      return if Rails.env.production?
256✔
78
      return if current_user.blank? || !current_user.trainer
256✔
79

80
      if session[:emulation_role]
20✔
81
        if session[:emulation_role] == "Eligible Data Sponsor"
9✔
82
          emulate_sponsor
3✔
83
        elsif session[:emulation_role] == "Eligible Data Manager"
6✔
84
          emulate_manager
3✔
85
        elsif session[:emulation_role] == "System Administrator"
3✔
86
          emulate_sysadmin
2✔
87
        elsif session[:emulation_role] == "Eligible Data User"
1✔
88
          emulate_data_user
1✔
89
        elsif session[:emulation_role] == "Return to Self"
×
90
          return_to_self
×
91
        end
92
      end
93
    end
94

95
    def emulate_sponsor
1✔
96
      current_user.eligible_sponsor = true
3✔
97
      current_user.eligible_manager = false
3✔
98
      current_user.sysadmin = false
3✔
99
    end
100

101
    def emulate_manager
1✔
102
      current_user.eligible_manager = true
3✔
103
      current_user.eligible_sponsor = false
3✔
104
      current_user.sysadmin = false
3✔
105
    end
106

107
    def emulate_sysadmin
1✔
108
      current_user.sysadmin = true
2✔
109
      current_user.eligible_manager = false
2✔
110
      current_user.eligible_sponsor = false
2✔
111
    end
112

113
    def emulate_data_user
1✔
114
      current_user.eligible_sponsor = false
1✔
115
      current_user.eligible_manager = false
1✔
116
      current_user.trainer = false
1✔
117
      current_user.sysadmin = false
1✔
118
    end
119

120
    def return_to_self
1✔
121
      current_user.trainer = true
×
122
      current_user.eligible_sponsor = false
×
123
      current_user.eligible_manager = false
×
124
      current_user.sysadmin = false
×
125
    end
126
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

© 2025 Coveralls, Inc