add a /login.json endpoint, just returns success or failure for now - merged with i18n
This commit is contained in:
parent
d3e90291b3
commit
bf5967b93e
|
@ -47,33 +47,62 @@ class LoginController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
if user.has_2fa?
|
if user.has_2fa?
|
||||||
session[:twofa_u] = user.session_token
|
if params[:totp].present?
|
||||||
return redirect_to "/login/2fa"
|
if !user.authenticate_totp(params[:totp])
|
||||||
end
|
raise "invalid TOTP code"
|
||||||
|
end
|
||||||
session[:u] = user.session_token
|
else
|
||||||
|
return respond_to do |format|
|
||||||
if (rd = session[:redirect_to]).present?
|
format.html {
|
||||||
session.delete(:redirect_to)
|
session[:twofa_u] = user.session_token
|
||||||
return redirect_to rd
|
redirect_to "/login/2fa"
|
||||||
elsif params[:referer].present?
|
}
|
||||||
begin
|
format.json {
|
||||||
ru = URI.parse(params[:referer])
|
render :json => { :status => 0,
|
||||||
if ru.host == Rails.application.domain
|
:error => "must supply totp parameter" }
|
||||||
return redirect_to ru.to_s
|
}
|
||||||
end
|
end
|
||||||
rescue => e
|
|
||||||
Rails.logger.error "error parsing referer: #{e}"
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return redirect_to "/"
|
return respond_to do |format|
|
||||||
|
format.html {
|
||||||
|
session[:u] = user.session_token
|
||||||
|
|
||||||
|
if (rd = session[:redirect_to]).present?
|
||||||
|
session.delete(:redirect_to)
|
||||||
|
return redirect_to rd
|
||||||
|
elsif params[:referer].present?
|
||||||
|
begin
|
||||||
|
ru = URI.parse(params[:referer])
|
||||||
|
if ru.host == Rails.application.domain
|
||||||
|
return redirect_to ru.to_s
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
Rails.logger.error "error parsing referer: #{e}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
redirect_to "/"
|
||||||
|
}
|
||||||
|
format.json {
|
||||||
|
render :json => { :status => 1, :username => user.username }
|
||||||
|
}
|
||||||
|
end
|
||||||
rescue
|
rescue
|
||||||
end
|
end
|
||||||
|
|
||||||
flash.now[:error] = I18n.t 'controllers.login_controller.flashlogininvalid'
|
respond_to do |format|
|
||||||
@referer = params[:referer]
|
format.html {
|
||||||
index
|
flash.now[:error] = I18n.t 'controllers.login_controller.flashlogininvalid'
|
||||||
|
@referer = params[:referer]
|
||||||
|
index
|
||||||
|
}
|
||||||
|
format.json {
|
||||||
|
render :json => { :status => 0,
|
||||||
|
:error => "invalid 'email' and/or 'password' parameter" }
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def forgot_password
|
def forgot_password
|
||||||
|
|
|
@ -30,7 +30,7 @@ Lobsters::Application.routes.draw do
|
||||||
get "/threads/:user" => "comments#threads"
|
get "/threads/:user" => "comments#threads"
|
||||||
|
|
||||||
get "/login" => "login#index"
|
get "/login" => "login#index"
|
||||||
post "/login" => "login#login"
|
post "/login" => "login#login", :format => /html|json/
|
||||||
post "/logout" => "login#logout"
|
post "/logout" => "login#logout"
|
||||||
get "/login/2fa" => "login#twofa"
|
get "/login/2fa" => "login#twofa"
|
||||||
post "/login/2fa_verify" => "login#twofa_verify", :as => "twofa_login"
|
post "/login/2fa_verify" => "login#twofa_verify", :as => "twofa_login"
|
||||||
|
|
Loading…
Reference in a new issue