| @@ -7,8 +7,15 @@ class Api::V1::BaseController < ApplicationController | |||||
| skip_before_action :user_setup | skip_before_action :user_setup | ||||
| protected | protected | ||||
| def current_user | |||||
| User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token | |||||
| 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 | |||||
| end | |||||
| end | end | ||||
| def require_manager_above | def require_manager_above | ||||
| @@ -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")) | ||||
| @@ -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, | |||||
| login: user.login, | |||||
| mail: user.mail | |||||
| id: user&.id, | |||||
| login: user&.login, | |||||
| mail: user&.mail | |||||
| } | } | ||||
| } | } | ||||
| end | end | ||||