修改bug

This commit is contained in:
sylor_huang@126.com 2020-03-16 22:51:00 +08:00
parent af62da7ae6
commit 17ad972b38
3 changed files with 59 additions and 51 deletions

View File

@ -1,17 +1,16 @@
class Gitea::UserForm class Gitea::UserForm
include ActiveModel::Model include ActiveModel::Model
EMAIL_REGEX = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_\-.]+(\.[a-zA-Z0-9_-]+)+$/ EMAIL_REGEX = /^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9_\-.]+(\.[a-zA-Z0-9_-]+)+$/
include ActiveModel::Model include ActiveModel::Model
attr_accessor :username, :email, :password attr_accessor :username, :email, :password
validates :username, presence: true validates :username, presence: true
# validates :email, presence: true, format: { with: EMAIL_REGEX, multiline: true } validates :email, presence: true, format: { with: EMAIL_REGEX, multiline: true }
validates :email, presence: true
validates :password, presence: true validates :password, presence: true
# validate :check_username, :check_email validate :check_username, :check_email
attr_reader :record attr_reader :record

View File

@ -26,10 +26,6 @@ module Gitea
render_result(response) render_result(response)
rescue Exception => exception rescue Exception => exception
Rails.logger.info "Exception ===========> #{exception.message}" Rails.logger.info "Exception ===========> #{exception.message}"
failed_dic = "public/sync_failed_users.dic"
File.open(failed_dic,"a") do |file|
file.puts "user_info---#{params},errors--#{exception.message}"
end
fail!(exception.message) fail!(exception.message)
end end

View File

@ -17,6 +17,7 @@ class SyncForgeJob < ApplicationJob
if new_user.present? if new_user.present?
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
begin begin
user_params = user_params["user"] if old_version_source.include?(platform)
Watcher&.where(user_id: user_params["id"]).update_all(user_id: new_user.id) Watcher&.where(user_id: user_params["id"]).update_all(user_id: new_user.id)
ProjectTrend&.where(user_id: user_params["id"]).update_all(user_id: new_user.id) ProjectTrend&.where(user_id: user_params["id"]).update_all(user_id: new_user.id)
sync_roles(roles_params, platform) sync_roles(roles_params, platform)
@ -55,56 +56,68 @@ class SyncForgeJob < ApplicationJob
private private
def sync_user(owner_params,owner_extension_params,platform) def sync_user(owner_params,owner_extension_params,platform)
Rails.logger.info("#######______sync_user_start__########") ActiveRecord::Base.transaction do
keys_other_delete = %w(id created_at updated_at user_id) begin
keys_to_delete = %w(id created_on updated_on platform) Rails.logger.info("#######______sync_user_start__########")
owner_params = owner_params["user"] if old_version_source.include?(platform) #trustie上需要 keys_other_delete = %w(id created_at updated_at user_id)
keys_to_delete = %w(id created_on updated_on platform)
owner_params = owner_params["user"] if old_version_source.include?(platform) #trustie上需要
owner_params = owner_params&.except!(*keys_to_delete) owner_params = owner_params&.except!(*keys_to_delete)
user_password = random_password user_password = random_password
new_user = [] new_user = []
if owner_params.present? if owner_params.present?
if User.exists?(login: owner_params["login"]) if User.exists?(login: owner_params["login"])
new_user = User.find_by(login: owner_params["login"]) new_user = User.find_by(login: owner_params["login"])
elsif User.exists?(mail: owner_params["mail"]) elsif User.exists?(mail: owner_params["mail"])
new_user = User.find_by(mail: owner_params["mail"]) new_user = User.find_by(mail: owner_params["mail"])
else
new_user = User.new(owner_params.merge(platform: platform))
new_user.save(:validate => false)
interactor = Gitea::RegisterInteractor.call({username: owner_params["login"], email: owner_params["mail"], password: user_password})
if interactor.success?
gitea_user = interactor.result
gitea_uid = gitea_user['id']
# new_user.gitea_uid = gitea_user['id']
else
response = Gitea::User::GetTokenService.new("#{owner_params["login"]}").call
if response.status == 200
gitea_uid = JSON.parse(response.body)["id"]
# new_user.gitea_uid = user_id
else else
gitea_uid = "" new_user = User.new(owner_params.merge(platform: platform))
end new_user.save(:validate => false)
end
result = Gitea::User::GenerateTokenService.new(owner_params["login"], user_password).call
if result != 401
gitea_token = result.result['sha1']
# new_user.gitea_token = result.result['sha1']
else
gitea_token = ""
end
new_user.update_attributes(gitea_uid: gitea_uid, gitea_token: gitea_token)
if owner_extension_params.present? interactor = Gitea::RegisterInteractor.call({username: owner_params["login"], email: owner_params["mail"], password: user_password})
owner_extension_params = owner_extension_params["user_extensions"] if old_version_source.include?(platform) #trustie上需要
owner_extension_params = owner_extension_params&.except!(*keys_other_delete).merge(user_id: new_user.id) if interactor.success?
UserExtension.create!(owner_extension_params) gitea_user = interactor.result
gitea_uid = gitea_user['id']
# new_user.gitea_uid = gitea_user['id']
else
response = Gitea::User::GetTokenService.new("#{owner_params["login"]}").call
if response.status == 200
gitea_uid = JSON.parse(response.body)["id"]
# new_user.gitea_uid = user_id
else
gitea_uid = ""
end
end
result = Gitea::User::GenerateTokenService.new(owner_params["login"], user_password).call
if result != 401
gitea_token = result.result['sha1']
# new_user.gitea_token = result.result['sha1']
else
gitea_token = ""
end
new_user.update_attributes(gitea_uid: gitea_uid, gitea_token: gitea_token)
if owner_extension_params.present?
owner_extension_params = owner_extension_params["user_extensions"] if old_version_source.include?(platform) #trustie上需要
owner_extension_params = owner_extension_params&.except!(*keys_other_delete).merge(user_id: new_user.id)
UserExtension.create!(owner_extension_params)
end
end
Rails.logger.info("#######______sync_user_end__########")
end
new_user
rescue Exception => e
failed_dic = "public/sync_failed_users.dic"
File.open(failed_dic,"a") do |file|
file.puts "user_info---#{owner_params},errors--#{e}"
end end
end end
Rails.logger.info("#######______sync_user_end__########")
end end
new_user
end end
def random_password def random_password