增加云登录初始化仓库密码操作
This commit is contained in:
parent
4845423eab
commit
e79defb5e4
|
@ -1,4 +1,4 @@
|
|||
class Oauth::BaseController < ActionController::Base
|
||||
class Oauth::BaseController < ApplicationController
|
||||
include RenderHelper
|
||||
include LoginHelper
|
||||
include ControllerRescueHandler
|
||||
|
@ -22,9 +22,9 @@ class Oauth::BaseController < ActionController::Base
|
|||
session[:"#{default_yun_session}"]
|
||||
end
|
||||
|
||||
def current_user
|
||||
@_current_user ||= User.find_by(id: session_user_id)
|
||||
end
|
||||
# def current_user
|
||||
# @_current_user ||= User.find_by(id: session_user_id)
|
||||
# end
|
||||
|
||||
def auth_hash
|
||||
Rails.logger.info("[OAuth2] omniauth.auth -> #{request.env['omniauth.auth'].inspect}")
|
||||
|
|
|
@ -43,10 +43,12 @@ class Oauth::CcyunController < Oauth::BaseController
|
|||
|
||||
Rails.logger.info "信创登录 ==============》#{code}"
|
||||
|
||||
new_user = false
|
||||
need_update_pass = false
|
||||
result = CcyunOauth::Service.access_token(code)
|
||||
result = CcyunOauth::Service.user_info(result[:access_token])
|
||||
uid = result["personalId"]
|
||||
login = result["mobile"]
|
||||
default_pass = "1qaz@WSX"
|
||||
|
||||
# 存在该用户
|
||||
open_user = OpenUsers::Ccyun.find_by(uid: uid)
|
||||
|
@ -54,29 +56,84 @@ class Oauth::CcyunController < Oauth::BaseController
|
|||
if open_user.present? && open_user.user.present?
|
||||
## 同步用户信息
|
||||
finalUser = syncRemoteServerUser(open_user.user, result)
|
||||
salt = finalUser[:salt]
|
||||
old_pass = finalUser[:hashed_password]
|
||||
hashed_password = User.hash_password("#{salt}#{User.hash_password default_pass}")
|
||||
Rails.logger.info("old_pass #{old_pass} <========> ccyun_pass:#{hashed_password}")
|
||||
if old_pass == hashed_password
|
||||
need_update_pass = true
|
||||
end
|
||||
|
||||
successful_authentication(finalUser)
|
||||
|
||||
|
||||
else
|
||||
new_user = true
|
||||
# 使用XC提供的身份ID进行注册
|
||||
# login = result['personalId'].to_s
|
||||
login = User.generate_login('E')
|
||||
|
||||
need_update_pass = true
|
||||
# 自动注册到平台
|
||||
reg_result = ccyun_autologin_register(login,"#{login}@forge.com", "Ec#{login}2021#", 'ccyun', result)
|
||||
reg_result = ccyun_autologin_register(login,"#{login}@ccyunchina.com", default_pass, 'ccyun', result)
|
||||
|
||||
if reg_result[:message].blank?
|
||||
open_user = OpenUsers::Ccyun.create!(user_id: reg_result[:user][:id], uid: uid, extra: result)
|
||||
# autosync_register_trustie(login, "Ec#{login}2021#", "#{login}@forge.com")
|
||||
successful_authentication(open_user.user)
|
||||
else
|
||||
render_error(reg_result[:message])
|
||||
end
|
||||
end
|
||||
|
||||
#redirect_to root_path(new_user: new_user)
|
||||
render_ok({})
|
||||
data = {}
|
||||
if need_update_pass
|
||||
data = {status:10001}
|
||||
end
|
||||
|
||||
render_ok(data)
|
||||
|
||||
rescue Exception => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
end
|
||||
|
||||
def changePassword
|
||||
begin
|
||||
|
||||
## 1. 简单有效性校验
|
||||
pass = params['pass'].to_s.strip
|
||||
repass = params['repass'].to_s.strip
|
||||
status = 0
|
||||
message = ""
|
||||
if pass == nil || pass == ""
|
||||
status = -1
|
||||
message = "密码不能为空"
|
||||
elsif repass == nil || repass == ""
|
||||
status = -1
|
||||
message = "二次密码不能为空"
|
||||
elsif pass.length < 8 || pass.length > 16
|
||||
status = -1
|
||||
message = "密码长度不能少于8位和大于16位"
|
||||
elsif pass != repass
|
||||
status = -1
|
||||
message = "俩次密码不一致"
|
||||
end
|
||||
|
||||
if status != 0
|
||||
return render_ok({status:status, message:message})
|
||||
end
|
||||
|
||||
## 2. 执行更新代码操作使用事务方式
|
||||
ActiveRecord::Base.transaction do
|
||||
## 2.1. 拿到盐值 使用盐加密新密码 更新用户密码
|
||||
@user = current_user
|
||||
salt = @user[:salt]
|
||||
hashed_password = User.hash_password("#{salt}#{User.hash_password pass}")
|
||||
@user.update!(hashed_password: hashed_password)
|
||||
|
||||
|
||||
## 2.2. 更新Gitea用户信息
|
||||
sync_param = {password: pass, email:"#{@user.login}@ccyunchina.com"}
|
||||
interactor = Gitea::User::UpdateInteractor.call(@user.login, sync_param)
|
||||
if interactor.success?
|
||||
render_ok
|
||||
else
|
||||
render_error(interactor.error)
|
||||
end
|
||||
end
|
||||
rescue Exception => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
|
@ -86,4 +143,5 @@ class Oauth::CcyunController < Oauth::BaseController
|
|||
def syncRemoteServerUser(user, options)
|
||||
User.update(user.id, {:nickname=> options["nickname"], :phone=> options["mobile"], :lastname=> options["name"]})
|
||||
end
|
||||
|
||||
end
|
|
@ -316,6 +316,7 @@ Rails.application.routes.draw do
|
|||
get '/auth/wechat/callback', to: 'oauth/wechat#create'
|
||||
get '/auth/ccyun/callback', to: 'oauth/ccyun#create'
|
||||
|
||||
post '/auth/ccyun/init', to: 'oauth/ccyun#changePassword'
|
||||
resource :bind_user, only: [:create]
|
||||
|
||||
resources :hot_keywords, only: [:index]
|
||||
|
|
Loading…
Reference in New Issue