class Oauth::AcgeController < Oauth::BaseController include RegisterHelper def refer uid = params['uid'].to_s.strip tip_exception("uid不能为空") if uid.blank? open_user = OpenUsers::Acge.find_by(uid: uid) if open_user.present? && open_user.user.present? render :json => {login: open_user.user.login} else render_not_found end end def create begin uid = params['uid'].to_s.strip tip_exception("uid不能为空") if uid.blank? redirect_uri = params['redirect_uri'].to_s.strip tip_exception("redirect_uri不能为空") if redirect_uri.blank? email = params['email'].to_s.strip tip_exception("email不能为空") if email.blank? phone = params['phone'].to_s.strip tip_exception("phone不能为空") if phone.blank? name = params['name'].to_s.strip tip_exception("name不能为空") if name.blank? open_user = OpenUsers::Acge.find_by(uid: uid) if open_user.present? && open_user.user.present? successful_authentication(open_user.user) redirect_to redirect_uri return else if current_user.blank? || !current_user.logged? session[:unionid] = uid user = User.find_by(mail: email) || User.find_by(phone: phone) if user.present? OpenUsers::Acge.create!(user: user, uid: uid) successful_authentication(user) redirect_to redirect_uri return else username = uid password = SecureRandom.hex(4) reg_result = autologin_register(username, email, password, 'acge', phone, name) existing_rows = CSV.read("public/操作系统大赛用户信息.csv") new_row = [username, email, password, phone, name] existing_rows << new_row CSV.open("public/操作系统大赛用户信息.csv", 'wb') do |csv| existing_rows.each { |row| csv << row } end if reg_result[:message].blank? open_user = OpenUsers::Acge.create!(user_id: reg_result[:user][:id], uid: uid) successful_authentication(open_user.user) redirect_to redirect_uri return else render_error(reg_result[:message]) end end else OpenUsers::Acge.create!(user: current_user, uid: uid) successful_authentication(current_user) redirect_to redirect_uri return end end Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}") # redirect_to "/bindlogin/acge?redirect_uri=#{redirect_uri}" rescue Exception => ex render_error(ex.message) end end end