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:
31
app/services/oauth/create_or_find_cas_user_service.rb
Normal file
31
app/services/oauth/create_or_find_cas_user_service.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
class Oauth::CreateORFindCasUserService < ApplicationService
|
||||
|
||||
def initialize(user, params)
|
||||
@user = user
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
return [@user, false] if @user
|
||||
|
||||
open_user = OpenUsers::Cas.find_or_initialize_by(uid: @params['user']) do |u|
|
||||
u.extra = @params
|
||||
end
|
||||
|
||||
return [open_user.user, false] if open_user.persisted?
|
||||
|
||||
@user = User.new(login: User.generate_login('C'), type: 'User', status: User::STATUS_ACTIVE, nickname: @params['comsys_name'], lastname: @params['comsys_name'])
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
@user.save!
|
||||
@user.create_user_extension!
|
||||
|
||||
open_user.user = @user
|
||||
open_user.save!
|
||||
|
||||
Rails.cache.write(open_user.can_bind_cache_key, 1, expires_in: 1.hours)
|
||||
end
|
||||
|
||||
[@user, true]
|
||||
end
|
||||
end
|
||||
42
app/services/oauth/create_or_find_qq_account_service.rb
Normal file
42
app/services/oauth/create_or_find_qq_account_service.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
class Oauth::CreateOrFindQqAccountService < ApplicationService
|
||||
|
||||
attr_reader :user, :params
|
||||
|
||||
def initialize(user, params)
|
||||
@user = user
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
new_user = false
|
||||
# 存在该用户
|
||||
open_user = OpenUsers::QQ.find_by(uid: params['uid'])
|
||||
return [open_user.user, new_user] if open_user.present?
|
||||
|
||||
if user.blank? || !user.logged?
|
||||
new_user = true
|
||||
# 新用户
|
||||
login = User.generate_login('Q')
|
||||
#nickname = regix_emoji params.dig('info', 'nickname')
|
||||
@user = User.new(login: login, type: 'User', status: User::STATUS_ACTIVE)
|
||||
end
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
if user.new_record?
|
||||
user.save!
|
||||
|
||||
gender = params.dig('extra', 'raw_info', 'gender') == '女' ? 1 : 0
|
||||
user.create_user_extension!(gender: gender)
|
||||
# 下载头像
|
||||
avatar_path = Util::FileManage.source_disk_filename(user)
|
||||
Util.download_file(params.dig('info', 'image'), avatar_path)
|
||||
end
|
||||
|
||||
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, new_user]
|
||||
end
|
||||
end
|
||||
65
app/services/oauth/create_or_find_wechat_account_service.rb
Normal file
65
app/services/oauth/create_or_find_wechat_account_service.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
class Oauth::CreateOrFindWechatAccountService < ApplicationService
|
||||
Error = Class.new(StandardError)
|
||||
|
||||
attr_reader :user, :params
|
||||
|
||||
def initialize(user, params)
|
||||
@user = user
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
code = params['code'].to_s.strip
|
||||
raise Error, 'Code不能为空' if code.blank?
|
||||
new_user = false
|
||||
|
||||
result = WechatOauth::Service.access_token(code)
|
||||
result = WechatOauth::Service.user_info(result['access_token'], result['openid'])
|
||||
|
||||
# 存在该用户
|
||||
open_user = OpenUsers::Wechat.find_by(uid: result['unionid'])
|
||||
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)
|
||||
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!
|
||||
|
||||
gender = result['sex'].to_i == 1 ? 0 : 1
|
||||
user.create_user_extension!(gender: gender)
|
||||
|
||||
# 下载头像
|
||||
avatar_path = Util::FileManage.source_disk_filename(user)
|
||||
Util.download_file(result['headimgurl'], avatar_path)
|
||||
end
|
||||
|
||||
new_open_user= OpenUsers::Wechat.create!(user: user, uid: result['unionid'])
|
||||
|
||||
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
|
||||
raise Error, ex.message
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def code
|
||||
params[:code].to_s.strip
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user