app/controllers/mtdevise/accounts_controller.rb
require_dependency "mtdevise/application_controller"
module Mtdevise
class AccountsController < ApplicationController
# Layouts and Filters
layout :layouts_resolver_accounts
before_action :redirect_if_coming_form_sign_up, only: :new
before_action :authenticate_user!, except: [:new, :create]
# Accounts Index
def index
@accounts = current_user.accounts
end
# Accounts Registration
def new
@account = Mtdevise::Account.new
@account.build_owner unless user_signed_in?
end
# Accounts Create action
def create
account = if user_signed_in?
Mtdevise::Account.create(account_params)
else
Mtdevise::Account.create_with_owner(account_params)
end
@account = account
if account.valid?
flash[:success] = "Your account has been successfully created."
if user_signed_in?
account.owner = current_user
account.users << current_user
account.save
redirect_to mtdevise.accounts_path
else
sign_in account.owner
redirect_to mtdevise.root_url(:subdomain => account.subdomain)
end
else
flash[:error] = "Sorry, your account could not be created."
render :new
end
end
private
def redirect_if_coming_form_sign_up
redirect_to accounts_path if request.url =~ /#{sign_up_path}/ && user_signed_in?
end
def account_params
params.require(:account).permit(:name, :firstname, :lastname, :username, :subdomain, { :owner_attributes => [:email, :password, :password_confirmation]})
end
end
end