mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 11:50:49 +08:00
init project
This commit is contained in:
45
app/controllers/weapps/code_sessions_controller.rb
Normal file
45
app/controllers/weapps/code_sessions_controller.rb
Normal file
@@ -0,0 +1,45 @@
|
||||
class Weapps::CodeSessionsController < Weapps::BaseController
|
||||
def create
|
||||
return render_error('code不能为空') if params[:code].blank?
|
||||
|
||||
reset_session
|
||||
logged = false
|
||||
|
||||
result = Wechat::Weapp.jscode2session(params[:code])
|
||||
Rails.logger.info("###########result: #{result}")
|
||||
Rails.logger.info("###########result: #{result['session_key']}")
|
||||
Rails.logger.info("###########result: #{result['unionid']}")
|
||||
# 能根据 code 拿到 unionid
|
||||
open_user = OpenUsers::Wechat.find_by(uid: result['unionid'])
|
||||
if open_user.present? && open_user.user
|
||||
successful_authentication(open_user.user)
|
||||
set_session_unionid(result['unionid'])
|
||||
logged = true
|
||||
else
|
||||
# 根据 code没拿到 unionid
|
||||
Rails.logger.info("[Weapp] session_key: #{result['session_key']}")
|
||||
Rails.logger.info("[Weapp] code: #{params[:code]}")
|
||||
user_info = Wechat::Weapp.decrypt(result['session_key'], params[:encrypted_data], params[:iv])
|
||||
|
||||
# user_info.delete(:nickName)
|
||||
|
||||
# 老用户,已绑定
|
||||
open_user = OpenUsers::Wechat.find_by(uid: user_info['unionId'])
|
||||
if open_user.present? && open_user.user
|
||||
successful_authentication(open_user.user)
|
||||
logged = true
|
||||
end
|
||||
|
||||
set_session_unionid(user_info['unionId'])
|
||||
# user_info['nickname'] = user_info['nickName']
|
||||
session[:wechat_user_extra] = user_info
|
||||
end
|
||||
|
||||
set_session_openid(result['openid'])
|
||||
set_weapp_session_key(result['session_key']) # weapp session_key写入缓存 后续解密需要
|
||||
|
||||
render_ok(openid: result['openid'], logged: logged) unless logged
|
||||
rescue Wechat::Error => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user