注册修改

This commit is contained in:
z9hang 2014-12-04 15:53:47 +08:00
parent 4214f39bae
commit 2a7e0365b8
3 changed files with 113 additions and 58 deletions

View File

@ -101,33 +101,22 @@ class AccountController < ApplicationController
# User self-registration
def register
# @root_path="/home/pdl/redmine-2.3.2-0/apache2/"
#
#@cache_identityy = params[:identity]||"" #身份
@cache_no = params[:no]||"" #学号
@cache_technical_title = params[:technical_title]||"" #教师职称
@cache_province = params[:province]||"" #省份
@cache_city = params[:city]||"" #城市
@cache_enterprise_name = params[:enterprise_name]||"" #企业
firstname_code = ""
lastname_code = ""
(redirect_to(home_url); return) unless Setting.self_registration? || session[:auth_source_registration]
if request.get?
session[:auth_source_registration] = nil
@user = User.new(:language => current_language.to_s)
else
user_params = params[:user] || {}
@user = User.new
@user.safe_attributes = user_params
if params[:identity] == "2" # 2 企业
firstname_code = @user.firstname
lastname_code = @user.lastname
@user.firstname = params[:enterprise_name]
@user.lastname = l(:field_enterprise)
end
@user.admin = false
@user.register
#@user = User.new
#@user.safe_attributes = user_params
#if params[:identity] == "2" # 2 企业
# firstname_code = @user.firstname
# lastname_code = @user.lastname
# @user.firstname = params[:enterprise_name]
# @user.lastname = l(:field_enterprise)
#end
#@user.admin = false
#@user.register
if session[:auth_source_registration]
@user.activate
@user.login = session[:auth_source_registration][:login]
@ -139,42 +128,59 @@ class AccountController < ApplicationController
redirect_to my_account_path
end
else
@user.login = params[:user][:login]
unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank?
@user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation]
end
case Setting.self_registration
us = UsersService.new
@user = us.register user_params.merge(:should_confirmation_password => true)
case Setting.self_registration
when '1'
register_by_email_activation(@user)
#register_by_email_activation(@user)
unless @user.new_record?
render action: 'email_valid', locals: {:mail => user.mail}
end
when '3'
register_automatically(@user)
#register_automatically(@user)
unless @user.new_record?
self.logged_user = user
flash[:notice] = l(:notice_account_activated)
redirect_to my_account_url
end
else
register_manually_by_administrator(@user)
end
#added by bai
if @user.id != nil
ue = @user.user_extensions ||= UserExtensions.new
#ue = UserExtensions.create(:identity => params[:identity].to_i,:technical_title => params[:technical_title], :gender => params[:gender].to_i, :user_id => @user.id, :student_id => )
ue.identity = params[:identity].to_i
ue.technical_title = params[:technical_title]
ue.gender = params[:gender].to_i
ue.user_id = @user.id
ue.student_id = params[:no]
ue.location = params[:province] if params[:province] != nil
ue.location_city = params[:city] if params[:city] != nil
ue.save
end
#register_manually_by_administrator(@user)
unless @user.new_record?
account_pending
end
end
# @user.login = params[:user][:login]
# unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank?
# @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation]
# end
#
#
#
# case Setting.self_registration
# when '1'
# register_by_email_activation(@user)
# when '3'
# register_automatically(@user)
# else
# register_manually_by_administrator(@user)
# end
#
# #added by bai
# if @user.id != nil
# ue = @user.user_extensions ||= UserExtensions.new
# #ue = UserExtensions.create(:identity => params[:identity].to_i,:technical_title => params[:technical_title], :gender => params[:gender].to_i, :user_id => @user.id, :student_id => )
# ue.identity = params[:identity].to_i
# ue.technical_title = params[:technical_title]
# ue.gender = params[:gender].to_i
# ue.user_id = @user.id
# ue.student_id = params[:no]
# ue.location = params[:province] if params[:province] != nil
# ue.location_city = params[:city] if params[:city] != nil
# ue.save
# end
end
end
if params[:identity] == "2"
@user.firstname = firstname_code
@user.lastname = lastname_code
end
end
# Token based account activation

View File

@ -18,4 +18,45 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module AccountHelper
def email_activation_register(user, &block)
token = Token.new(:user => user, :action => "register")
if user.save and token.save
UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0)
Mailer.register(token).deliver
flash[:notice] = l(:notice_account_register_done)
#render action: 'email_valid', locals: {:mail => user.mail}
else
yield if block_given?
end
user
end
def automatically_register(user, &block)
# Automatic activation
user.activate
user.last_login_on = Time.now
if user.save
UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0)
#self.logged_user = user
#flash[:notice] = l(:notice_account_activated)
#redirect_to my_account_url
else
yield if block_given?
end
user
end
def administrator_manually__register(user, &block)
if user.save
UserStatus.create(:user_id => user.id ,:changsets_count => 0, :watchers_count => 0)
# Sends an email to the administrators
Mailer.account_activation_request(user).deliver
#account_pending
else
yield if block_given?
end
user
end
end

View File

@ -1,24 +1,32 @@
class UsersService
include AccountHelper
#将用户注册的功能函数写这里
#参数约定
#成功返回注册后的User实例失败直接抛异常
def register(params)
@user = User.new
@user.admin = false
@user.register
@user.login = params[:login]
@user.mail = params[:email]
unless password.blank?
@user.password = params[:password]
@user.mail = params[:mail]
password = params[:password]
password_confirmation = params[:password_confirmation]
should_confirmation_password = params[:should_confirmation_password]
if !password.blank? && !password_confirmation && should_confirmation_password
@user.password,@user.password_confirmation = password,password_confirmation
elsif !password.blank? && !should_confirmation_password
@user.password = password
else
@user.password = ""
end
case Setting.self_registration
when '1'
register_by_email_activation(@user)
@user = email_activation_register(@user)
when '3'
register_automatically(@user)
@user = automatically_register(@user)
else
register_manully_by_administrator(@user)
@user = administrator_manually__register(@user)
end
if @user.id != nil
ue = @user.user_extensions ||= UserExtensions.new