class SignupController < ApplicationController before_action :require_user_signed_out before_action :require_invitation before_action :set_invitation layout "signup" def index @invited_by_name = @invitation.user.address end private def require_invitation if session[:invitation_token].blank? flash.now[:alert] = "You need an invitation to sign up for an account." http_status :unauthorized elsif !valid_invitation?(session[:invitation_token]) flash.now[:alert] = "This invitation either doesn't exist or has already been used." http_status :unauthorized end @invitation = Invitation.find_by(token: session[:invitation_token]) end def valid_invitation?(token) Invitation.where(token: session[:invitation_token], used_at: nil).exists? end def set_invitation @invitation = Invitation.find_by(token: session[:invitation_token]) end end