add: user gitea register

This commit is contained in:
vilet.yy 2021-03-18 15:28:03 +08:00
parent 823c99bd71
commit efba4b2b4f
3 changed files with 43 additions and 0 deletions

View File

@ -6,6 +6,28 @@ class AccountsController < ApplicationController
render json: session render json: session
end end
# 为了同步平台上未注册gitea的用户
def gitea_register
Users::SyncGiteaForm.new(sync_gitea_params).validate!
user = User.find_by(login: sync_gitea_params[:login])
return render_error("该用户已同步协作平台") if user.gitea_token.present? && user.gitea_uid.present?
user.mail = sync_gitea_params[:email]
interactor = Gitea::RegisterInteractor.call({username: sync_gitea_params[:login], email: sync_gitea_params[:email], password: sync_gitea_params[:password]})
if interactor.success?
gitea_user = interactor.result
result = Gitea::User::GenerateTokenService.call(sync_gitea_params[:login], sync_gitea_params[:password])
user.gitea_token = result['sha1']
user.gitea_uid = gitea_user[:body]['id']
user.save!
render_ok
else
render_error(interactor.error)
end
rescue Exception => e
uid_logger_error(e.message)
tip_exception(-1, e.message)
end
# 其他平台同步注册的用户 # 其他平台同步注册的用户
def remote_register def remote_register
username = params[:username]&.gsub(/\s+/, "") username = params[:username]&.gsub(/\s+/, "")
@ -341,6 +363,10 @@ class AccountsController < ApplicationController
{ login: pre + code, email: email, phone: phone } { login: pre + code, email: email, phone: phone }
end end
def sync_gitea_params
params.permit(:login, :email, :password)
end
def user_params def user_params
params.require(:user).permit(:login, :email, :phone) params.require(:user).permit(:login, :email, :phone)
end end

View File

@ -0,0 +1,16 @@
class Users::SyncGiteaForm < BaseForm
attr_accessor :login, :password, :email, :user
validates :login, :password, :email, presence: true
validate :check_user, :check_password
def check_user
@user = User.find_by(login: login)
raise '用户不存在.' unless user.present?
end
def check_password
raise '用户密码错误.' unless user.check_password?(password)
end
end

View File

@ -186,6 +186,7 @@ Rails.application.routes.draw do
get :logout get :logout
get :get_verification_code get :get_verification_code
get :valid_email_and_phone get :valid_email_and_phone
post :gitea_register
post :remote_register post :remote_register
post :remote_update post :remote_update
post :remote_login post :remote_login