class Signup

Multi-model form support object for signup and user creation

Attributes

auth[RW]
auth_params[RW]
email[RW]
skip_email_confirmation[RW]
terms_of_service[RW]
user[RW]

Public Class Methods

new_with_oauth(auth_params, signup_params) click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 37
def self.new_with_oauth(auth_params, signup_params)
  signup = Signup.new(signup_params)
  signup.set_auth_params(auth_params)
  signup
end

Public Instance Methods

has_auth?(provider) click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 80
def has_auth?(provider)
  self.auth.provider == provider.to_s if self.auth
end
persisted?() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 44
def persisted?
  false
end
save() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 52
def save
  if valid?
    persist!
    send_confirmation! unless skip_email_confirmation
    send_welcome!
    true
  else
    false
  end
end
save!() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 48
def save!
  raise ActiveRecord::RecordNotSaved unless save
end
set_auth_params(auth_params) click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 84
def set_auth_params(auth_params)
  self.auth_params = auth_params

  self.email = self.auth.try(:email) if self.email.blank?
  self.first_name = self.auth.try(:first_name) if self.first_name.blank?
  self.last_name = self.auth.try(:last_name) if self.last_name.blank?
  <% if username? %>self.username = self.auth.try(:username) if self.username.blank?
  <% end %>self.skip_email_confirmation = true

  # We need to reassign the user fields if the user is already created
  self.user.attributes = user_params if self.user
  self.auth
end

Private Instance Methods

persist!() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 111
def persist!
  ActiveRecord::Base.transaction do
    self.user.save!
  end
end
send_confirmation!() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 117
def send_confirmation!
  self.user.send_confirmation if self.email
end
send_welcome!() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 121
def send_welcome!
  self.user.send_welcome if self.email
end
user_params() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 125
def user_params
  {
    email: self.email,
    <% if username? %>username: self.username,
    <% end %>password: self.password,
    password_confirmation: self.password_confirmation,
    first_name: self.first_name,
    last_name: self.last_name,
    bio: self.bio,
    website: self.website,
    phone_number: self.phone_number,
    time_zone: self.time_zone
  }
end
validate_models() click to toggle source
# File lib/generators/authkit/templates/app/forms/signup.rb, line 101
def validate_models
  self.user.errors.each { |k, v| errors.add(k, v) } unless self.user.valid?

  <% if oauth? %>
  if self.auth.present?
    self.auth.errors.each { |k, v| errors.add(k, v) } unless self.auth.valid?
  end
  <% end %>
end