orbit4-5/app/controllers/users_controller.rb

104 lines
2.9 KiB
Ruby

class UsersController < ApplicationController
layout "authentication"
def new
@user = User.new
end
def create
firstname = {}
lastname = {}
@site_valid_locales.each do |locale|
firstname[locale] = params[:first_name]
lastname[locale] = params[:last_name]
end
@user = User.new(user_params)
@member = MemberProfile.new(email: params[:email], first_name_translations: firstname, last_name_translations: lastname)
if @user.save
@member.save
@user.update_attributes(member_profile_id: @member.id)
redirect_to users_confirmation_path
@user.generate_confirmation_token
url = "#{request.protocol}#{request.host_with_port}/#{locale.to_s}/users/confirm_user?token=#{@user.confirmation_token}"
email = Email.new(:mail_to => @user.member_profile.email, :mail_subject => "Confirmation email for orbit signup.", :template => "email/user_confirmation_email.html.erb", :template_data => {"url" => url})
email.deliver
else
render "new"
end
end
def confirmation
end
def confirm_user
user = User.confirm_email(params[:token])
redirect_to users_path(:user_id => user[:id])
if user[:success].eql?("true")
flash[:notice] = "You have confirmed successfully"
else
flash[:notice] = "Error in confirmation please try again."
end
end
def index
if params[:user_id].nil?
redirect_to "/users/sign_up"
end
@user = User.find(params[:user_id])
end
def form_page
@user = User.find(params[:user_id])
@member_profile = @user.member_profile
end
def basic_info_update
@user = User.find(params[:id])
member_profile = @user.member_profile
if member_profile.update_attributes(p)
redirect_to users_role_page_path(:user_id => @user.id.to_s)
else
render :action=> "form_page"
end
end
def role_page
@roles = Role.where(:disabled => false)
@user_id = params[:user_id]
end
def role_update
user = User.find(params[:id])
member_profile = user.member_profile
if member_profile.update_attributes(basic_info_params)
redirect_to "/sessions/new"
else
@roles = Role.where(:disabled => false)
render :action => "role_page"
end
end
def check_availability
response = {}
case params[:type]
when "user_id"
response["success"] = User.where(:user_name => params[:value]).count > 0 ? false : true
when "user_email"
response["success"] = MemberProfile.where(:email => params[:value]).count > 0 ? false : true
end
render :json => response.to_json
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
params.require(:user).permit(:password, :password_confirmation, :user_name, :member_profile_id, :email, :first_name, :last_name)
end
def basic_info_params
params.require(:member_profile).permit!
end
end