diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index a997fe311..7d1959091 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -2,7 +2,7 @@ class Api::V1::UsersController < Api::V1::BaseController include AesCryptHelper before_action :load_observe_user, except: [:check_user_id, :check_user_login] - before_action :check_auth_for_observe_user, except: [:check_user_id, :check_user_login] + before_action :check_auth_for_observe_user, except: [:check_user_id, :check_user_login, :reset_password] def check_user_id return tip_exception(-1, "用户ID不存在") unless params[:user_id].present? && User.exists?(id: params[:user_id]) @@ -117,6 +117,23 @@ class Api::V1::UsersController < Api::V1::BaseController end end + def reset_password + return render_error("该用户没有重置密码的权限") if @observe_user.organizations.joins(teams: :team_users).where(teams: {authorize: 'owner'}, team_users: {user_id: current_user.id}).blank? + sync_params={ + password: '12345678', + email: @observe_user.mail, + login_name: @observe_user.login, + source_id: 0 + } + interactor = Gitea::User::UpdateInteractor.call(@observe_user.login, sync_params) + if interactor.success? + @observe_user.update_attribute(:password, '12345678') + render_ok + else + render_error(interactor.error) + end + end + def check_user_can_delete org_ids = TeamUser.where(user_id: @observe_user.id).pluck(:organization_id) | OrganizationUser.where(user_id: @observe_user.id).pluck(:organization_id) diff --git a/config/routes/api.rb b/config/routes/api.rb index 7727bc568..7bf4a6b66 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -81,6 +81,7 @@ defaults format: :json do post :check_user_can_delete patch :update_email patch :update_phone + patch :reset_password end end scope module: :users do