From 38eead1c9c5208f84c2c7a7b4d9a81fe0c745059 Mon Sep 17 00:00:00 2001 From: billybonks Date: Mon, 14 Nov 2016 00:19:11 +0800 Subject: [PATCH 1/2] before_filter is deprecated in favour of before_action --- app/controllers/users_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index dedf6652b..5957be591 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,6 +1,8 @@ class UsersController < ApplicationController before_filter :skip_first_page, only: :new before_filter :handle_ip, only: :create + before_action :skip_first_page, only: :new + before_action :handle_ip, only: :create def new @bodyId = 'home' From be0360d73957cf6a597751a608d84dd60f53d011 Mon Sep 17 00:00:00 2001 From: billybonks Date: Mon, 14 Nov 2016 00:20:42 +0800 Subject: [PATCH 2/2] add before create action, that checks if user exists if user already exists redirect to refer and update cookie it also changes the email to lowercase, user that sign up with mobile browser often use Capitalised emails, so it is important, to lower case them for this feature --- app/controllers/users_controller.rb | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 5957be591..e0d344dfa 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,6 +1,5 @@ class UsersController < ApplicationController - before_filter :skip_first_page, only: :new - before_filter :handle_ip, only: :create + before_action :user_exists, only: :create before_action :skip_first_page, only: :new before_action :handle_ip, only: :create @@ -22,8 +21,7 @@ def create @user.referrer = User.find_by_referral_code(ref_code) if ref_code if @user.save - cookies[:h_email] = { value: @user.email } - redirect_to '/refer-a-friend' + set_cookie_and_redirect(@user.email) else logger.info("Error saving user with email, #{email}") redirect_to root_path, alert: 'Something went wrong!' @@ -54,6 +52,20 @@ def redirect private + def set_cookie_and_redirect(email) + cookies[:h_email] = { value: email } + redirect_to '/refer-a-friend' + end + + def user_exists + email = params[:user][:email].downcase + params[:user][:email] = email + user = User.find_by_email(email) + if not user.nil? + set_cookie_and_redirect(user.email) + end + end + def skip_first_page return if Rails.application.config.ended