oauth2 增加client方式

This commit is contained in:
xiaoxiaoqiong 2022-07-11 18:19:08 +08:00
parent 221c439a1d
commit 915e689ef9
3 changed files with 22 additions and 7 deletions

View File

@ -8,8 +8,15 @@ class Api::V1::BaseController < ApplicationController
protected protected
def current_user def current_user
#client方法对接需要一直带着用户标识uid
if doorkeeper_token && doorkeeper_token.resource_owner_id.blank?
return User.anonymous if params[:uid].nil?
# tip_exception('缺少用户标识!') if params[:uid].nil?
User.current = User.find(params[:uid])
else
User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
end end
end
def require_manager_above def require_manager_above
@project = load_project @project = load_project

View File

@ -250,7 +250,15 @@ class ApplicationController < ActionController::Base
#Rails.logger.info("current_laboratory is #{current_laboratory} domain is #{request.subdomain}") #Rails.logger.info("current_laboratory is #{current_laboratory} domain is #{request.subdomain}")
if request.headers["Authorization"].present? if request.headers["Authorization"].present?
tip_exception(401, "请登录后再操作!") unless valid_doorkeeper_token? tip_exception(401, "请登录后再操作!") unless valid_doorkeeper_token?
User.current = User.find_by(id: @doorkeeper_token.resource_owner_id) if @doorkeeper_token.present? if @doorkeeper_token.present?
# client方法对接需要一直带着用户标识uid
if @doorkeeper_token.resource_owner_id.blank?
tip_exception(-1, "缺少用户标识!") if params[:uid].nil?
User.current = User.find(params[:uid])
else
User.current = User.find_by(id: @doorkeeper_token.resource_owner_id)
end
end
else else
User.current = find_current_user User.current = find_current_user
uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous")) uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous"))

View File

@ -513,7 +513,7 @@ Doorkeeper::JWT.configure do
# about the user. Defaults to a randomly generated token in a hash: # about the user. Defaults to a randomly generated token in a hash:
# { token: "RANDOM-TOKEN" } # { token: "RANDOM-TOKEN" }
token_payload do |opts| token_payload do |opts|
user = User.find(opts[:resource_owner_id]) user = User.find_by(id: opts[:resource_owner_id])
{ {
iss: 'GitLink', iss: 'GitLink',
@ -523,9 +523,9 @@ Doorkeeper::JWT.configure do
jti: SecureRandom.uuid, jti: SecureRandom.uuid,
user: { user: {
id: user.id, id: user&.id,
login: user.login, login: user&.login,
mail: user.mail mail: user&.mail
} }
} }
end end