mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 03:40:49 +08:00
init project
This commit is contained in:
54
app/services/create_bind_user_service.rb
Normal file
54
app/services/create_bind_user_service.rb
Normal file
@@ -0,0 +1,54 @@
|
||||
class CreateBindUserService < ApplicationService
|
||||
attr_reader :user, :params
|
||||
|
||||
def initialize(user, params)
|
||||
@user = user
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
raise Error, '系统错误' if open_user.blank?
|
||||
raise Error, '系统错误' unless can_bind_user?
|
||||
|
||||
if params[:not_bind].to_s == 'true'
|
||||
clear_can_bind_user_flag
|
||||
return user
|
||||
end
|
||||
|
||||
bind_user = User.try_to_login(params[:username], params[:password])
|
||||
raise Error, '用户名或者密码错误' if bind_user.blank?
|
||||
raise Error, '用户名或者密码错误' unless bind_user.check_password?(params[:password].to_s)
|
||||
raise Error, '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s)
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
open_user.user_id = bind_user.id
|
||||
open_user.save!
|
||||
|
||||
user.user_extension.delete
|
||||
user.delete
|
||||
end
|
||||
|
||||
clear_can_bind_user_flag
|
||||
|
||||
bind_user
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def open_user
|
||||
@_open_user ||= begin
|
||||
case params[:type].to_s
|
||||
when 'wechat' then user.wechat_open_user
|
||||
when 'qq' then user.qq_open_user
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def can_bind_user?
|
||||
Rails.cache.read(open_user.can_bind_cache_key).present?
|
||||
end
|
||||
|
||||
def clear_can_bind_user_flag
|
||||
Rails.cache.delete(open_user.can_bind_cache_key)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user