diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index a837e952f..11a03f25e 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -1,6 +1,25 @@ class AccountsController < ApplicationController + before_action :require_login, only: [:simple_update] include ApplicationHelper + #skip_before_action :check_account, :only => [:logout] + + def simple_update + simple_update_params.merge!(username: params[:username]&.gsub(/\s+/, "")) + simple_update_params.merge!(email: params[:email]&.gsub(/\s+/, "")) + simple_update_params.merge!(platform: (params[:platform] || 'forge')&.gsub(/\s+/, "")) + Register::RemoteForm.new(simple_update_params).validate! + + ActiveRecord::Base.transaction do + result = auto_update(current_user, simple_update_params) + if result[:message].blank? + render_ok + else + render_error(result[:message]) + end + end + end + def index render json: session end @@ -383,4 +402,7 @@ class AccountsController < ApplicationController params.permit(:username, :email, :password, :platform) end + def simple_update_params + params.permit(:username, :email, :password, :platform) + end end diff --git a/app/controllers/concerns/register_helper.rb b/app/controllers/concerns/register_helper.rb index 9d2f420a0..2e910d8c4 100644 --- a/app/controllers/concerns/register_helper.rb +++ b/app/controllers/concerns/register_helper.rb @@ -58,4 +58,32 @@ module RegisterHelper end end + def auto_update(user, params={}) + return if params.blank? + result = {message: nil, user: nil} + before_login = user.login + user.login = params[:username] + user.password = params[:password] + user.mail = params[:email] + + if user.save! + sync_params = { + password: params[:password].to_s, + email: params[:email], + login_name: params[:username], + new_name: params[:username], + source_id: 0 + } + + interactor = Gitea::User::UpdateInteractor.call(before_login, sync_params) + if interactor.success? + result[:user] = user + else + result[:message] = '用户同步Gitea失败!' + end + else + result[:message] = user.errors.full_messages.join(",") + return + end + end end diff --git a/app/forms/gitea/user/update_form.rb b/app/forms/gitea/user/update_form.rb index 7912d51fa..401282ff1 100644 --- a/app/forms/gitea/user/update_form.rb +++ b/app/forms/gitea/user/update_form.rb @@ -4,7 +4,7 @@ class Gitea::User::UpdateForm attr_accessor :username, :email, :admin, :allow_create_organization, :allow_git_hook, :allow_import_local, :full_name, :location, :login_name, :max_repo_creation, :must_change_password, :password, :prohibit_login, - :source_id, :website + :source_id, :website, :new_name validates :username, presence: true validates :email, presence: true, format: { with: EMAIL_REGEX, multiline: true } diff --git a/config/routes.rb b/config/routes.rb index 097aaf2a7..f66965aee 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -214,6 +214,7 @@ Rails.application.routes.draw do post :remote_password post :change_password post :check + post :simple_update end end