平台的微信绑定流程调整

sso
cxt 5 years ago
parent d0b8a0a8ea
commit 41cec586aa

@ -1,9 +1,18 @@
class BindUsersController < ApplicationController
before_action :require_login
# before_action :require_login
def create
user = CreateBindUserService.call(current_user, create_params)
successful_authentication(user) if user.id != current_user.id
# user = CreateBindUserService.call(create_params)
#
raise Error, '系统错误' if session_unionid.blank?
bind_user = User.try_to_login(params[:username], params[:password])
raise Error, '用户名或者密码错误' if bind_user.blank?
raise Error, '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s)
OpenUsers::Wechat.create!(user: bind_user, uid: session_unionid)
successful_authentication(bind_user)
render_ok
rescue ApplicationService::Error => ex

@ -30,4 +30,22 @@ class Oauth::BaseController < ActionController::Base
@_default_yun_session = "#{request.subdomain.split('.').first}_user_id"
# @_default_yun_session = "#{current_laboratory.try(:identifier).split('.').first}_user_id"
end
def session_openid
session[:openid]
end
def set_session_openid(openid)
Rails.logger.info("[wechat] set session openid: #{openid}")
session[:openid] = openid
end
def session_unionid
session[:unionid]
end
def set_session_unionid(unionid)
Rails.logger.info("[wechat] set session unionid: #{unionid}")
session[:unionid] = unionid
end
end

@ -2,7 +2,7 @@ class Oauth::WechatController < Oauth::BaseController
def create
user, new_user = Oauth::CreateOrFindWechatAccountService.call(current_user ,params)
successful_authentication(user)
successful_authentication(user) if !new_user
render_ok(new_user: new_user)
rescue Oauth::CreateOrFindWechatAccountService::Error => ex

@ -18,18 +18,22 @@ class Oauth::CreateOrFindWechatAccountService < ApplicationService
# 存在该用户
open_user = OpenUsers::Wechat.find_by(uid: result['unionid'])
return [open_user.user, new_user] if open_user.present?
return [open_user.user, new_user] if open_user.present? && open_user.user.present?
if user.blank? || !user.logged?
new_user = true
# 新用户
login = User.generate_login('w')
# result['nickname'] = regix_emoji(result['nickname'])
@user = User.new(login: login, type: 'User', status: User::STATUS_ACTIVE)
#@user = User.new(login: login, nickname: result['nickname'], type: 'User', status: User::STATUS_ACTIVE)
# login = User.generate_login('w')
# result['nickname'] = regix_emoji(result['nickname'])
# @user = User.new(login: login, type: 'User', status: User::STATUS_ACTIVE)
# @user = User.new(login: login, nickname: result['nickname'], type: 'User', status: User::STATUS_ACTIVE)
set_session_openid(result['openid'])
set_session_unionid(result['unionid'])
else
OpenUsers::Wechat.create!(user: user, uid: result['unionid'])
end
=begin
ActiveRecord::Base.transaction do
if new_user
user.save!
@ -46,6 +50,7 @@ class Oauth::CreateOrFindWechatAccountService < ApplicationService
Rails.cache.write(new_open_user.can_bind_cache_key, 1, expires_in: 1.hours) if new_user # 方便后面进行账号绑定
end
=end
[user, new_user]
rescue WechatOauth::Error => ex

Loading…
Cancel
Save