From 7a3f8cf47f94de935995db747defc2275829905d Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Sat, 15 Aug 2020 19:52:58 +0800 Subject: [PATCH 01/10] FIX migrate api bug --- app/views/projects/migrate.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/migrate.json.jbuilder b/app/views/projects/migrate.json.jbuilder index 818eb0180..c9ae044ee 100644 --- a/app/views/projects/migrate.json.jbuilder +++ b/app/views/projects/migrate.json.jbuilder @@ -1 +1 @@ -json.extract! @project, :id, :name +json.extract! @project, :id, :name, :identifier From c40777be2bcffefb380d3e667cde209108be0dd7 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Sun, 16 Aug 2020 00:54:22 +0800 Subject: [PATCH 02/10] FIX debug token --- app/controllers/concerns/login_helper.rb | 1 + app/controllers/oauth/educoder_controller.rb | 8 ++++---- app/models/token.rb | 4 ++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index 1752e4f6c..45d08a02b 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -11,6 +11,7 @@ module LoginHelper def set_autologin_cookie(user) token = Token.get_or_create_permanent_login_token(user, "autologin") + Rails.logger.info "###### def set_autologin_cookie and get_or_create_permanent_login_token result: #{token&.value}" cookie_options = { :value => token.value, :expires => 1.month.from_now, diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index bc1a0cb6d..87d8c8f8a 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -10,12 +10,12 @@ class Oauth::EducoderController < Oauth::BaseController open_user= OpenUsers::Educoder.find_by(uid: login) if open_user.present? && open_user.user.present? && open_user.user.email_binded? - if current_user != open_user.user - logout_user - successful_authentication(open_user.user) - end + Rails.logger.info "######## open_user exist and open_user.user exsit and email is binded ok" + successful_authentication(open_user.user) + redirect_to callback_url else + Rails.logger.info "######## open user not exits" if current_user.blank? || !current_user.logged? user = User.find_by(login: login) if user diff --git a/app/models/token.rb b/app/models/token.rb index cd61090be..d40388440 100644 --- a/app/models/token.rb +++ b/app/models/token.rb @@ -27,8 +27,10 @@ class Token < ActiveRecord::Base def self.get_or_create_permanent_login_token(user, type) token = Token.get_token_from_user(user, type) + Rails.logger.info "###### Token.get_token_from_user result: #{token&.value}" unless token token = Token.create(:user => user, :action => type) + Rails.logger.info "###### Token.get_token_from_user is nul and agine create token: #{token&.value}" else token.update_attribute(:created_on, Time.now) end @@ -37,8 +39,10 @@ class Token < ActiveRecord::Base def self.get_token_from_user(user, action) token = Token.where(:action => action, :user_id => user).first + Rails.logger.info "###### self.get_token_from_user query result: #{token&.value}" unless token token = Token.create!(user_id: user.id, action: action) + Rails.logger.info "###### self.get_token_from_user query is nil and create result: #{token&.value}" end token end From 086ebc34b260a973a3e4e6c700f8000a0abfd53a Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Sun, 16 Aug 2020 02:26:21 +0800 Subject: [PATCH 03/10] FIX login_hepler set cookie's bug --- app/controllers/concerns/login_helper.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index 45d08a02b..8891ad029 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -22,9 +22,11 @@ module LoginHelper if edu_setting('cookie_domain').present? cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) end - unless cookies[autologin_cookie_name].present? - cookies[autologin_cookie_name] = cookie_options - end + # unless cookies[autologin_cookie_name].present? + # cookies[autologin_cookie_name] = cookie_options + # end + cookies[autologin_cookie_name] = cookie_options + # for action cable cookies.signed[:user_id] ||= user.id From c68c8ed089c5fe023b23edbb4d96bf81bbe9111c Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Sun, 16 Aug 2020 13:48:48 +0800 Subject: [PATCH 04/10] FIX remote regitster bug --- app/controllers/oauth/educoder_controller.rb | 18 ++++-------- app/controllers/oauth_controller.rb | 30 ++++++++++---------- app/views/oauth/register.html.erb | 2 +- 3 files changed, 22 insertions(+), 28 deletions(-) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index 87d8c8f8a..b194f6922 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -16,20 +16,14 @@ class Oauth::EducoderController < Oauth::BaseController redirect_to callback_url else Rails.logger.info "######## open user not exits" - if current_user.blank? || !current_user.logged? - user = User.find_by(login: login) - if user - successful_authentication(user) - OpenUsers::Educoder.create!(user: user, uid: user.login) + user = User.find_by(login: login) + if user + OpenUsers::Educoder.create!(user: user, uid: user.login) + successful_authentication(user) - redirect_to callback_url - else - redirect_to oauth_register_path(login: login, callback_url: callback_url) - end - else - # forge平台已登录 - OpenUsers::Educoder.create!(user: current_user, uid: login) redirect_to callback_url + else + redirect_to oauth_register_path(login: login, callback_url: callback_url) end end rescue WechatOauth::Error => ex diff --git a/app/controllers/oauth_controller.rb b/app/controllers/oauth_controller.rb index 1cdeb4aa3..5da9297a6 100644 --- a/app/controllers/oauth_controller.rb +++ b/app/controllers/oauth_controller.rb @@ -65,22 +65,22 @@ class OauthController < ApplicationController platform = params[:plathform] || 'educoder' if User.where(mail: email).exists? - render_error("该邮箱已使用过.") and return - end - - result = autologin_register(login, email, password, platform) - logger.info "[Oauth educoer] =====#{result}" - if result[:message].blank? - logger.info "[Oauth educoer] ====auto_register success" - user = User.find result[:user][:id] - successful_authentication(user) - OpenUsers::Educoder.create!(user: user, uid: user.login) - - render_ok({callback_url: callback_url}) - # redirect_to callback_url + render json: { email_exist: '该邮箱已使用过' } else - logger.info "[Oauth educoer] ====auto_register failed." - render :action => "auto_register" + result = autologin_register(login, email, password, platform) + logger.info "[Oauth educoer] =====#{result}" + if result[:message].blank? + logger.info "[Oauth educoer] ====auto_register success" + user = User.find result[:user][:id] + successful_authentication(user) + OpenUsers::Educoder.create!(user: user, uid: user.login) + + render json: { callback_url: callback_url } + # redirect_to callback_url + else + logger.info "[Oauth educoer] ====auto_register failed." + render :action => "auto_register" + end end end diff --git a/app/views/oauth/register.html.erb b/app/views/oauth/register.html.erb index d9b39543c..59a3d4857 100644 --- a/app/views/oauth/register.html.erb +++ b/app/views/oauth/register.html.erb @@ -60,7 +60,7 @@ success: function(data) { console.log(data) if (data) { - if(data.message){ + if(data.email_exist){ $(".emailCheck span").html("该邮箱已存在."); return; } 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 05/10] =?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 From 9f85b8da8e375d127d12ecebdfd3a66184d0fe84 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Mon, 17 Aug 2020 17:41:01 +0800 Subject: [PATCH 06/10] FIX query bug --- app/controllers/oauth/educoder_controller.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index d3a682d9b..8ddc4e367 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -16,10 +16,9 @@ class Oauth::EducoderController < Oauth::BaseController redirect_to callback_url else Rails.logger.info "######## open user not exits" - 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) + if user.is_a?(User) OpenUsers::Educoder.create!(user: user, uid: user.login) successful_authentication(user) From 44441ec2156cfb6e4000bc65c2612b3b8f310c05 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Mon, 17 Aug 2020 17:47:47 +0800 Subject: [PATCH 07/10] FIX mail bug --- app/controllers/oauth/educoder_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index 8ddc4e367..57271413e 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -2,6 +2,7 @@ class Oauth::EducoderController < Oauth::BaseController def bind begin login = params[:login] + mail = params[:mail] callback_url = params[:callback_url] token = params[:token] From 806fa686a6c6f5e94f2b711dc97e324a17ecc497 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Mon, 17 Aug 2020 18:08:18 +0800 Subject: [PATCH 08/10] FIX OpenUser's bug --- app/controllers/oauth/educoder_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index 57271413e..dea6e2482 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -20,7 +20,7 @@ class Oauth::EducoderController < Oauth::BaseController user = User.find_by('login = ? or mail = ?', login, mail) if user.is_a?(User) - OpenUsers::Educoder.create!(user: user, uid: user.login) + OpenUsers::Educoder.create!(user: user, uid: login) successful_authentication(user) redirect_to callback_url From a36072e8f1ecf60ed5987f9e73a0f040f929ade1 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Tue, 18 Aug 2020 09:07:16 +0800 Subject: [PATCH 09/10] Delete mail validate for bind action --- app/controllers/oauth/educoder_controller.rb | 4 ++-- app/forms/oauth_educoder_form.rb | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index dea6e2482..a803adbb6 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -2,11 +2,11 @@ class Oauth::EducoderController < Oauth::BaseController def bind begin login = params[:login] - mail = params[:mail] + mail = params[:mail] || nil callback_url = params[:callback_url] token = params[:token] - ::OauthEducoderForm.new({login: login, token: token, mail: mail, callback_url: callback_url}).validate! + ::OauthEducoderForm.new({login: login, token: token, callback_url: callback_url}).validate! open_user= OpenUsers::Educoder.find_by(uid: login) diff --git a/app/forms/oauth_educoder_form.rb b/app/forms/oauth_educoder_form.rb index cfb00726b..f8222cfa0 100644 --- a/app/forms/oauth_educoder_form.rb +++ b/app/forms/oauth_educoder_form.rb @@ -1,11 +1,10 @@ class OauthEducoderForm include ActiveModel::Model - attr_accessor :login, :token, :mail, :callback_url + attr_accessor :login, :token, :callback_url validates :login, presence: true validates :token, presence: true - validates :mail, presence: true validates :callback_url, presence: true validate :check_callback_url! From 6ea4cacc9afe0f0c6e136598ce1262d1138614f2 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Wed, 19 Aug 2020 16:24:24 +0800 Subject: [PATCH 10/10] =?UTF-8?q?fix=20trustie=5Frelated=5Fprojects=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0=E9=A1=B9=E7=9B=AE=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index ac60f4d18..7355d19e7 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -149,8 +149,10 @@ class UsersController < ApplicationController def trustie_related_projects projects = Project.includes(:owner, :members, :project_score).where(id: params[:ids]).order("updated_on desc") projects_json = [] + domain_url = EduSetting.get('host_name') + '/projects' if projects.present? projects.each do |p| + project_url = "/#{p.owner.login}/#{p.identifier}" pj = { id: p.id, name: p.name, @@ -165,6 +167,10 @@ class UsersController < ApplicationController members_count: p&.members.size, issues_count: p.issues_count - p.pull_requests_count, commits_count: p&.project_score&.changeset_num.to_i, + http_url: domain_url + project_url, + http_collaborator_url: domain_url + project_url + "/setting/collaborator", + http_issues_url: domain_url + project_url + "/issues", + http_commits_url: domain_url + project_url + "/commits", project_score: p&.project_score.present? ? p&.project_score&.as_json(:except=>[:created_at, :updated_at]).merge!(commit_time: format_time(p&.project_score&.commit_time)) : {} } projects_json.push(pj) @@ -177,7 +183,7 @@ class UsersController < ApplicationController def trustie_projects user_id = User.select(:id, :login).where(login: params[:login])&.first&.id projects = Project.visible - + projects = projects.joins(:members).where(members: { user_id: user_id }) search = params[:search].to_s.strip