This rule was added in rubocop 1.64.0. For clarity, in order to make it obvious that we're modifying the object we received, we're excluding the Ahoy initializer, whose code was copied from the Ahoy documentation. We're also changing the `Types::BaseObject` class so we don't use a variable with the same name as the parameter and we don't get a false positive for this rule.
50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|
def twitter
|
|
sign_in_with :twitter_login, :twitter
|
|
end
|
|
|
|
def facebook
|
|
sign_in_with :facebook_login, :facebook
|
|
end
|
|
|
|
def google_oauth2
|
|
sign_in_with :google_login, :google_oauth2
|
|
end
|
|
|
|
def wordpress_oauth2
|
|
sign_in_with :wordpress_login, :wordpress_oauth2
|
|
end
|
|
|
|
def after_sign_in_path_for(resource)
|
|
if resource.registering_with_oauth
|
|
finish_signup_path
|
|
else
|
|
super
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def sign_in_with(feature, provider)
|
|
raise ActionController::RoutingError, "Not Found" unless Setting["feature.#{feature}"]
|
|
|
|
auth = request.env["omniauth.auth"]
|
|
|
|
identity = Identity.first_or_create_from_oauth(auth)
|
|
@user = current_user || identity.user || User.first_or_initialize_for_oauth(auth)
|
|
|
|
if save_user
|
|
identity.update!(user: @user)
|
|
sign_in_and_redirect @user, event: :authentication
|
|
set_flash_message(:notice, :success, kind: provider.to_s.capitalize) if is_navigational_format?
|
|
else
|
|
session["devise.#{provider}_data"] = auth
|
|
redirect_to new_user_registration_path
|
|
end
|
|
end
|
|
|
|
def save_user
|
|
@user.save || @user.save_requiring_finish_signup
|
|
end
|
|
end
|