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

codebar / planner / 16934261972

13 Aug 2025 10:14AM UTC coverage: 95.181% (+0.07%) from 95.111%
16934261972

Pull #2267

github

web-flow
Merge 8d54e7af6 into c80d8737c
Pull Request #2267: chore: use associations for finding workshop sponsors with hosts

4 of 4 new or added lines in 1 file covered. (100.0%)

5 existing lines in 1 file now uncovered.

3200 of 3362 relevant lines covered (95.18%)

82.8 hits per line

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

77.08
/app/controllers/auth_services_controller.rb
1
class AuthServicesController < ApplicationController
2✔
2
  def new
2✔
3
    referer_path = URI(request.referer).path if request.referer
20✔
4
    if Rails.application.routes.recognize_path(referer_path)[:controller].in?(%w[workshops events meetings])
20✔
5
      session[:referer_path] = referer_path
18✔
6
    end
7
    redirect_to '/auth/github'
20✔
8
  end
9

10
  def create
2✔
11
    member_type = cookies[:member_type]
36✔
12
    current_service = AuthService.find_by(provider: omnihash[:provider],
36✔
13
                                          uid: omnihash[:uid])
14

15
    if logged_in?
36✔
16
      if current_service
×
17
        flash[:notice] = I18n.t('notifications.provider_already_connected',
×
18
                                provider: omnihash[:provider])
19
      end
20
      redirect_to root_path
×
21
    else
22
      if current_service
36✔
23
        session[:member_id]          = current_service.member.id
16✔
24
        session[:service_id]         = current_service.id
16✔
25
        session[:oauth_token]        = omnihash[:credentials][:token]
16✔
26
        session[:oauth_token_secret] = omnihash[:credentials][:secret]
16✔
27

28
        finish_registration || redirect_to(referer_or_dashboard_path)
16✔
29
      else
30
        member = Member.find_by(email: omnihash[:info][:email])
20✔
31
        member ||= Member.new(email: omnihash[:info][:email])
20✔
32

33
        member.name    ||= omnihash[:info][:name]&.split(' ')&.first || ''
20✔
34
        member.surname ||= omnihash[:info][:name]&.split(' ')&.drop(1)&.join(' ') || ''
20✔
35

36
        member_service = member.auth_services.build(
20✔
37
          provider: omnihash[:provider],
38
          uid: omnihash[:uid]
39
        )
40

41
        member.save!
20✔
42

43
        member.toggle!(:can_log_in)
20✔
44

45
        session[:member_id]          = member.id
20✔
46
        session[:service_id]         = member_service.id
20✔
47
        session[:oauth_token]        = omnihash[:credentials][:token]
20✔
48
        session[:oauth_token_secret] = omnihash[:credentials][:secret]
20✔
49

50
        redirect_to edit_member_details_path(member_type: member_type)
20✔
51
      end
52
    end
53
  end
54

55
  def destroy
2✔
UNCOV
56
    service = current_user.services.find(params[:id])
×
57
    if service.respond_to?(:destroy) && service.destroy
×
58
      flash[:notice] = I18n.t('notifications.provider_unlinked',
×
59
                              provider: service.provider)
UNCOV
60
      redirect_to redirect_path
×
61
    end
62
  end
63

64
  def failure
2✔
UNCOV
65
    flash[:error] = I18n.t('notifications.authentication_error')
×
66
    redirect_to root_url
×
67
  end
68

69
  private
2✔
70

71
  def referer_or_dashboard_path
2✔
72
    session[:referer_path] || dashboard_path
16✔
73
  end
74

75
  def omnihash
2✔
76
    request.env['omniauth.auth']
264✔
77
  end
78

79
  def omniauth_providers
2✔
UNCOV
80
    (OmniAuth::Strategies.local_constants.map(&:downcase) - %i[developer oauth oauth2]).map(&:to_s)
×
81
  end
82

83
  def redirect_path
2✔
UNCOV
84
    :services
×
85
  end
86
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