| @@ -0,0 +1,25 @@ | |||||
| namespace :repair_gitea_user do | |||||
| desc "If forge users gitea_uid is null repair gitea user" | |||||
| task done: :environment do | |||||
| users = User.find_by_sql("SELECT * FROM `users` WHERE id !=2 AND type='User' AND NOT EXISTS (SELECT * FROM forgegitea.`user` WHERE forgegitea.`user`.id=users.gitea_uid)") | |||||
| puts "total users count:#{users.count}" | |||||
| success_count = 0 | |||||
| users.each do |user| | |||||
| begin | |||||
| interactor = Gitea::RegisterInteractor.call({ username: user.login, email: user.mail, password: "abc12345678" }) | |||||
| if interactor.success? | |||||
| gitea_user = interactor.result | |||||
| result = Gitea::User::GenerateTokenService.call(user.login, password) | |||||
| user.gitea_token = result['sha1'] | |||||
| user.gitea_uid = gitea_user[:body]['id'] | |||||
| user.is_sync_pwd = false | |||||
| user.save! | |||||
| success_count = success_count + 1 | |||||
| end | |||||
| rescue Exception => e | |||||
| puts "repair gitea user: #{user.id}:#{user.login}:, error:#{e}" | |||||
| end | |||||
| end | |||||
| puts "repair gitea user success total: #{success_count}" | |||||
| end | |||||
| end | |||||