| @@ -1,6 +1,25 @@ | |||||
| class AccountsController < ApplicationController | class AccountsController < ApplicationController | ||||
| before_action :require_login, only: [:simple_update] | |||||
| include ApplicationHelper | 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 | def index | ||||
| render json: session | render json: session | ||||
| end | end | ||||
| @@ -383,4 +402,7 @@ class AccountsController < ApplicationController | |||||
| params.permit(:username, :email, :password, :platform) | params.permit(:username, :email, :password, :platform) | ||||
| end | end | ||||
| def simple_update_params | |||||
| params.permit(:username, :email, :password, :platform) | |||||
| end | |||||
| end | end | ||||
| @@ -58,4 +58,32 @@ module RegisterHelper | |||||
| end | end | ||||
| 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 | end | ||||
| @@ -4,7 +4,7 @@ class Gitea::User::UpdateForm | |||||
| attr_accessor :username, :email, :admin, :allow_create_organization, :allow_git_hook, :allow_import_local, | 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, | :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 :username, presence: true | ||||
| validates :email, presence: true, format: { with: EMAIL_REGEX, multiline: true } | validates :email, presence: true, format: { with: EMAIL_REGEX, multiline: true } | ||||
| @@ -214,6 +214,7 @@ Rails.application.routes.draw do | |||||
| post :remote_password | post :remote_password | ||||
| post :change_password | post :change_password | ||||
| post :check | post :check | ||||
| post :simple_update | |||||
| end | end | ||||
| end | end | ||||