forked from External/greenlight
GRN2-180: First stages of refactoring code for v2.4 (#748)
* Email rescues and authenticator concern * Application controller and helper clean up * Moved controller code out of helpers * More helper and email clean up * Cleaned up remaining helpers and create omniauth_options * Controller code clean up * restructured views structure * Restructured role code * Restructured profile and code clean up * Master merge * Added bbb server concern to deal with bbb calls * Bug fixes and changes after changes * rspec * More rubocop fixes
This commit is contained in:
@ -17,21 +17,16 @@
|
||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class SessionsController < ApplicationController
|
||||
include Authenticator
|
||||
include Registrar
|
||||
include Emailer
|
||||
include LdapAuthenticator
|
||||
|
||||
skip_before_action :verify_authenticity_token, only: [:omniauth, :fail]
|
||||
|
||||
# GET /users/logout
|
||||
def destroy
|
||||
logout
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
# POST /users/login
|
||||
def create
|
||||
logger.info("Support: #{session_params[:email]} is attempting to login.")
|
||||
logger.info "Support: #{session_params[:email]} is attempting to login."
|
||||
|
||||
admin = User.find_by(email: session_params[:email])
|
||||
if admin&.has_role? :super_admin
|
||||
@ -48,11 +43,22 @@ class SessionsController < ApplicationController
|
||||
login(user)
|
||||
end
|
||||
|
||||
# GET /users/logout
|
||||
def destroy
|
||||
logout
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
# GET/POST /auth/:provider/callback
|
||||
def omniauth
|
||||
@auth = request.env['omniauth.auth']
|
||||
|
||||
process_signin
|
||||
begin
|
||||
process_signin
|
||||
rescue => e
|
||||
logger.error "Error authenticating via omniauth: #{e}"
|
||||
omniauth_fail
|
||||
end
|
||||
end
|
||||
|
||||
# POST /auth/failure
|
||||
@ -81,15 +87,16 @@ class SessionsController < ApplicationController
|
||||
|
||||
result = send_ldap_request(params[:session], ldap_config)
|
||||
|
||||
if result
|
||||
result = result.first
|
||||
else
|
||||
return redirect_to(ldap_signin_path, alert: I18n.t("invalid_credentials"))
|
||||
return redirect_to(ldap_signin_path, alert: I18n.t("invalid_credentials")) unless result
|
||||
|
||||
@auth = parse_auth(result.first, ENV['LDAP_ROLE_FIELD'])
|
||||
|
||||
begin
|
||||
process_signin
|
||||
rescue => e
|
||||
logger.error "Support: Error authenticating via omniauth: #{e}"
|
||||
omniauth_fail
|
||||
end
|
||||
|
||||
@auth = parse_auth(result, ENV['LDAP_ROLE_FIELD'])
|
||||
|
||||
process_signin
|
||||
end
|
||||
|
||||
private
|
||||
@ -112,47 +119,39 @@ class SessionsController < ApplicationController
|
||||
end
|
||||
|
||||
def process_signin
|
||||
begin
|
||||
@user_exists = check_user_exists
|
||||
@user_exists = check_user_exists
|
||||
|
||||
if !@user_exists && @auth['provider'] == "twitter"
|
||||
return redirect_to root_path, flash: { alert: I18n.t("registration.deprecated.twitter_signup") }
|
||||
if !@user_exists && @auth['provider'] == "twitter"
|
||||
return redirect_to root_path, flash: { alert: I18n.t("registration.deprecated.twitter_signup") }
|
||||
end
|
||||
|
||||
# If using invitation registration method, make sure user is invited
|
||||
return redirect_to root_path, flash: { alert: I18n.t("registration.invite.no_invite") } unless passes_invite_reqs
|
||||
|
||||
user = User.from_omniauth(@auth)
|
||||
|
||||
logger.info "Support: Auth user #{user.email} is attempting to login."
|
||||
|
||||
# Add pending role if approval method and is a new user
|
||||
if approval_registration && !@user_exists
|
||||
user.add_role :pending
|
||||
|
||||
# Inform admins that a user signed up if emails are turned on
|
||||
send_approval_user_signup_email(user)
|
||||
|
||||
return redirect_to root_path, flash: { success: I18n.t("registration.approval.signup") }
|
||||
end
|
||||
|
||||
send_invite_user_signup_email(user) if invite_registration && !@user_exists
|
||||
|
||||
login(user)
|
||||
|
||||
if @auth['provider'] == "twitter"
|
||||
flash[:alert] = if allow_user_signup? && allow_greenlight_accounts?
|
||||
I18n.t("registration.deprecated.twitter_signin", link: signup_path(old_twitter_user_id: user.id))
|
||||
else
|
||||
I18n.t("registration.deprecated.twitter_signin", link: signin_path(old_twitter_user_id: user.id))
|
||||
end
|
||||
|
||||
# If using invitation registration method, make sure user is invited
|
||||
return redirect_to root_path, flash: { alert: I18n.t("registration.invite.no_invite") } unless passes_invite_reqs
|
||||
|
||||
user = User.from_omniauth(@auth)
|
||||
|
||||
logger.info("Support: Auth user #{user.email} is attempting to login.")
|
||||
|
||||
# Add pending role if approval method and is a new user
|
||||
if approval_registration && !@user_exists
|
||||
user.add_role :pending
|
||||
|
||||
# Inform admins that a user signed up if emails are turned on
|
||||
send_approval_user_signup_email(user) if Rails.configuration.enable_email_verification
|
||||
|
||||
return redirect_to root_path, flash: { success: I18n.t("registration.approval.signup") }
|
||||
end
|
||||
|
||||
send_invite_user_signup_email(user) if Rails.configuration.enable_email_verification &&
|
||||
invite_registration && !@user_exists
|
||||
|
||||
login(user)
|
||||
|
||||
if @auth['provider'] == "twitter"
|
||||
flash[:alert] = if allow_user_signup? && allow_greenlight_accounts?
|
||||
I18n.t("registration.deprecated.twitter_signin",
|
||||
link: signup_path(old_twitter_user_id: user.id))
|
||||
else
|
||||
I18n.t("registration.deprecated.twitter_signin",
|
||||
link: signin_path(old_twitter_user_id: user.id))
|
||||
end
|
||||
end
|
||||
rescue => e
|
||||
logger.error "Support: Error authenticating via omniauth: #{e}"
|
||||
omniauth_fail
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user