Class: RailsAgents::SessionsController

Inherits:
ApplicationController show all
Includes:
LocalAuth
Defined in:
app/controllers/rails_agents/sessions_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/controllers/rails_agents/sessions_controller.rb', line 21

def create
  @github_url = github_oauth_url
  @email = params[:email].to_s.strip.downcase

  if @email.blank?
    flash.now[:alert] = "Email is required."
    @step = :email
    render :new, status: :unprocessable_entity
    return
  end

  response = Client.new.email_start(email: @email, purpose: "signin")
  session[:ra_auth] = {
    "purpose" => "signin",
    "email" => @email,
    "dev_code" => response["devCode"] || response["dev_code"]
  }
  @step = :code
  @dev_code = session[:ra_auth]["dev_code"]
  render :new
rescue Client::Error => e
  flash.now[:alert] = e.message
  @step = :email
  render :new, status: :unprocessable_entity
end

#destroyObject



70
71
72
73
74
# File 'app/controllers/rails_agents/sessions_controller.rb', line 70

def destroy
  cloud = RailsAgents.config.dashboard_base.to_s.chomp("/")
  cloud = "https://cloud.rails-agent.com" if cloud.blank?
  redirect_to "#{cloud}/signin", allow_other_host: true
end

#newObject



9
10
11
12
13
14
15
16
17
18
19
# File 'app/controllers/rails_agents/sessions_controller.rb', line 9

def new
  @github_url = github_oauth_url
  pending = session[:ra_auth]
  if pending.is_a?(Hash) && pending["email"].present? && pending["purpose"] == "signin"
    @step = :code
    @email = pending["email"]
    @dev_code = pending["dev_code"]
  else
    @step = :email
  end
end

#verifyObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/controllers/rails_agents/sessions_controller.rb', line 47

def verify
  pending = session[:ra_auth] || {}
  @email = pending["email"].to_s
  @github_url = github_oauth_url
  code = params[:code].to_s.strip

  if @email.blank? || code.blank?
    flash.now[:alert] = "Enter the code we emailed you."
    @step = :code
    render :new, status: :unprocessable_entity
    return
  end

  response = Client.new.email_verify(email: @email, code: code)
  session.delete(:ra_auth)
  complete_cloud_auth!(response)
rescue Client::Error => e
  flash.now[:alert] = e.message
  @step = :code
  @dev_code = pending["dev_code"]
  render :new, status: :unprocessable_entity
end