forgeplus/app/tasks/check_gitea_user.rb

42 lines
1.9 KiB
Ruby
Raw Normal View History

class CheckGiteaUser
2020-07-17 15:31:12 +08:00
# 运行示例: 检查哪些用户的gitea不存在bundle exec rails runner "CheckGiteaUser.new.call()"
def call
SyncLog.sync_log("=====begin to check gitea_user======")
2020-07-17 16:57:53 +08:00
all_users = User.select(:id, :gitea_token, :gitea_uid, :mail, :type,:login,:platform).where(type: "User", gitea_token: [nil, ""], gitea_uid: [nil, ""])
if all_users.present?
new_password = "12345678"
2020-07-17 17:04:10 +08:00
# EMAIL_REGEX = /^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9_\-.]+(\.[a-zA-Z0-9_-]+)+$/i
all_users.each do |user|
2020-07-17 16:15:57 +08:00
begin
SyncLog.sync_log("=====check_user_login_is:#{user.login}======")
2020-07-17 17:04:10 +08:00
2020-07-17 16:57:53 +08:00
user_mail = user&.mail.present? ? user.mail : "#{user.login}@example.com"
2020-07-17 17:04:10 +08:00
# unless user_mail.match(EMAIL_REGEX).present?
# user_mail = "#{user.login}@example.com"
# end
2020-07-17 16:15:57 +08:00
ActiveRecord::Base.transaction do
2020-07-17 16:57:53 +08:00
interactor = Gitea::RegisterInteractor.call({username: user.login, email: user_mail, password: new_password})
2020-07-17 16:15:57 +08:00
if interactor.success?
gitea_user = interactor.result
result = Gitea::User::GenerateTokenService.new(user.login, new_password).call
user.gitea_token = result['sha1']
user.gitea_uid = gitea_user['id']
if user.save!
SyncLog.sync_log("=================create_gitea_user_success_login==#{user.login}")
else
SyncLog.sync_log("=================create_gitea_user_success_login==#{user.login}")
end
else
2020-07-17 16:15:57 +08:00
SyncLog.sync_log("=============sync_to_user_failed,user_login====#{user.login}")
end
end
2020-07-17 16:15:57 +08:00
rescue => exception
SyncLog.sync_log("=================create_gitea_user_has_erros=#{user.login}===#{exception}")
end
end
end
SyncLog.sync_log("=====end_to_check_gitea_user=====")
end
end