diff --git a/app/services/admins/update_user_service.rb b/app/services/admins/update_user_service.rb index 34f704cbe..9d116cffe 100644 --- a/app/services/admins/update_user_service.rb +++ b/app/services/admins/update_user_service.rb @@ -15,13 +15,14 @@ class Admins::UpdateUserService < ApplicationService user.firstname = '' user.password = params[:password] if params[:password].present? - user.user_extension.assign_attributes(user_extension_attributes) + user.user_extension.assign_attributes(user_extension_attributes) if user.user_extension.present? old_login = user.login ActiveRecord::Base.transaction do user.save! - user.user_extension.save! + user.user_extension.save! if user.user_extension.present? update_gitea_user(old_login) + update_gitea_user_email(user.previous_changes[:mail]) end user @@ -65,4 +66,14 @@ class Admins::UpdateUserService < ApplicationService Util.logger_error(ex) raise Error, '保存失败' end + + def update_gitea_user_email(change_options) + return if change_options.blank? + return if user.gitea_uid.blank? || user.gitea_token.blank? + $gitea_client.delete_user_emails({body: {emails: [change_options[0]]}.to_json, query: {access_token: user.gitea_token}}) + $gitea_client.post_user_emails({body: {emails: [change_options[1]]}.to_json, query: {access_token: user.gitea_token}}) + rescue Exception => ex + Util.logger_error(ex) + raise Error, '保存失败' + end end \ No newline at end of file diff --git a/app/views/admins/users/edit.html.erb b/app/views/admins/users/edit.html.erb index 44d524997..3b4801772 100644 --- a/app/views/admins/users/edit.html.erb +++ b/app/views/admins/users/edit.html.erb @@ -68,12 +68,12 @@ <%= f.label :identity, label: '职业' %> <%= select_tag('user[identity]', [], class: 'form-control identity-select optional', 'data-value': @user.user_extension&.identity, 'data-first-title': '请选择') %> -