Class: RailsAgents::SessionsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- RailsAgents::SessionsController
- Includes:
- LocalAuth
- Defined in:
- app/controllers/rails_agents/sessions_controller.rb
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
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. @step = :email render :new, status: :unprocessable_entity end |
#destroy ⇒ Object
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 |
#new ⇒ Object
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 |
#verify ⇒ Object
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. @step = :code @dev_code = pending["dev_code"] render :new, status: :unprocessable_entity end |