From 7db195147e62df4d660f5e214d0d70a9bc86ebb9 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Mon, 17 Aug 2020 17:30:15 +0800 Subject: [PATCH] =?UTF-8?q?FIX=20educoder=E5=B8=90=E5=8F=B7=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=B5=81=E7=A8=8B=E4=BC=98=E5=8C=96(=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=82=AE=E7=AE=B1=E8=87=AA=E5=8A=A8=E6=8E=88=E6=9D=83?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/oauth/educoder_controller.rb | 8 +++++--- app/forms/oauth_educoder_form.rb | 9 ++------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index b194f6922..d3a682d9b 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -5,7 +5,7 @@ class Oauth::EducoderController < Oauth::BaseController callback_url = params[:callback_url] token = params[:token] - ::OauthEducoderForm.new({login: login, token: token, callback_url: callback_url}).validate! + ::OauthEducoderForm.new({login: login, token: token, mail: mail, callback_url: callback_url}).validate! open_user= OpenUsers::Educoder.find_by(uid: login) @@ -16,8 +16,10 @@ class Oauth::EducoderController < Oauth::BaseController redirect_to callback_url else Rails.logger.info "######## open user not exits" - user = User.find_by(login: login) - if user + user = User.find_by(login: login) || User.find_by(mail: mail) + user = User.find_by('login = ? or mail = ?', login, mail) + + if user && user.is_a?(User) OpenUsers::Educoder.create!(user: user, uid: user.login) successful_authentication(user) diff --git a/app/forms/oauth_educoder_form.rb b/app/forms/oauth_educoder_form.rb index c7644f5fa..cfb00726b 100644 --- a/app/forms/oauth_educoder_form.rb +++ b/app/forms/oauth_educoder_form.rb @@ -1,26 +1,21 @@ class OauthEducoderForm include ActiveModel::Model - attr_accessor :login, :token, :callback_url + attr_accessor :login, :token, :mail, :callback_url validates :login, presence: true validates :token, presence: true + validates :mail, presence: true validates :callback_url, presence: true validate :check_callback_url! validate :check_auth! def check_auth! - Rails.logger.info "====login: #{login} ====token: #{token} ==== callback_url: #{callback_url}" secret = OauthEducoder.config[:access_key_secret] - Rails.logger.info "==== secret: #{secret}" before_raw_pay_load = Digest::SHA1.hexdigest("#{login}#{secret}#{Time.now.to_i/60-1}") now_raw_pay_load = Digest::SHA1.hexdigest("#{login}#{secret}#{Time.now.to_i/60}") - Rails.logger.info "==== before_raw_pay_load: #{before_raw_pay_load}" - Rails.logger.info "==== now_raw_pay_load: #{now_raw_pay_load}" - Rails.logger.info "==== token: #{token}" - if token != now_raw_pay_load && token != before_raw_pay_load raise '你的请求无效值无效.' end