diff --git a/app/controllers/oauth/qq_controller.rb b/app/controllers/oauth/qq_controller.rb index 27ae3d8aa..4b9a46443 100644 --- a/app/controllers/oauth/qq_controller.rb +++ b/app/controllers/oauth/qq_controller.rb @@ -1,9 +1,9 @@ class Oauth::QQController < Oauth::BaseController def create - user = Oauth::CreateOrFindQqAccountService.call(current_user, auth_hash) + user, new_user = Oauth::CreateOrFindQqAccountService.call(current_user, auth_hash) successful_authentication(user) - render_ok + render_ok(new_user: new_user) end end \ No newline at end of file diff --git a/app/controllers/oauth/wechat_controller.rb b/app/controllers/oauth/wechat_controller.rb index d2ea4eb99..6c0c53eb6 100644 --- a/app/controllers/oauth/wechat_controller.rb +++ b/app/controllers/oauth/wechat_controller.rb @@ -1,10 +1,10 @@ class Oauth::WechatController < Oauth::BaseController def create - user = Oauth::CreateOrFindWechatAccountService.call(current_user ,params) + user, new_user = Oauth::CreateOrFindWechatAccountService.call(current_user ,params) successful_authentication(user) - render_ok + render_ok(new_user: new_user) rescue Oauth::CreateOrFindWechatAccountService::Error => ex render_error(ex.message) end diff --git a/app/services/oauth/create_or_find_qq_account_service.rb b/app/services/oauth/create_or_find_qq_account_service.rb index 0eb187924..958b04810 100644 --- a/app/services/oauth/create_or_find_qq_account_service.rb +++ b/app/services/oauth/create_or_find_qq_account_service.rb @@ -12,7 +12,9 @@ class Oauth::CreateOrFindQqAccountService < ApplicationService open_user = OpenUsers::QQ.find_by(uid: params['uid']) return open_user.user if open_user.present? + new_user = false if user.blank? || !user.logged? + new_user = true # 新用户 login = User.generate_login('q') @user = User.new(login: login, nickname: params.dig('info', 'nickname')) @@ -26,9 +28,11 @@ class Oauth::CreateOrFindQqAccountService < ApplicationService user.create_user_extension!(gender: gender) end - OpenUsers::QQ.create!(user: user, uid: params['uid']) + new_open_user = OpenUsers::QQ.create!(user: user, uid: params['uid']) + + Rails.cache.write(new_open_user.can_bind_cache_key, 1, expires_in: 1.hours) if new_user # 方便后面进行账号绑定 end - user + [user, new_user] end end \ No newline at end of file diff --git a/app/services/oauth/create_or_find_wechat_account_service.rb b/app/services/oauth/create_or_find_wechat_account_service.rb index d5c22a2f2..4b3dd4f75 100644 --- a/app/services/oauth/create_or_find_wechat_account_service.rb +++ b/app/services/oauth/create_or_find_wechat_account_service.rb @@ -44,7 +44,7 @@ class Oauth::CreateOrFindWechatAccountService < ApplicationService Rails.cache.write(new_open_user.can_bind_cache_key, 1, expires_in: 1.hours) if new_user # 方便后面进行账号绑定 end - user + [user, new_user] rescue WechatOauth::Error => ex raise Error, ex.message end