class OauthBwergemn::Oauth2
Attributes
auth_strategy[R]
Public Instance Methods
access_scopes(access)
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 59 def access_scopes access if OauthBwergemn.is_custom_scopes access.scopes.map!(&:to_sym) rescue [] else access.scopes.all.map!(&:to_sym) rescue [] end end
args()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 43 def args results = {} auth_strategy.auth_scopes.map { |s| (results = results.merge(s)) if s.is_a?(Hash) } results end
before()
click to toggle source
Grape middleware methods
# File lib/oauth_bwergemn/oauth2.rb, line 133 def before set_auth_strategy(OauthBwergemn.auth_strategy) auth_strategy.api_context = context context.extend(OauthBwergemn::AuthMethods) context.protected_endpoint = endpoint_protected? return unless context.protected_endpoint? self.the_request = env if token_optional? && context.protected_endpoint? context.resource_token = token context.resource_owner = nil context.resource_credentials = nil response = authorize! rescue nil if response.present? context.resource_owner = response[:resource_owner] rescue nil context.resource_credentials = response[:resource_credentials] rescue nil end elsif token.present? && token_required? && context.protected_endpoint? response = authorize! context.resource_token = token context.resource_owner = response[:resource_owner] rescue nil context.resource_credentials = response[:resource_credentials] rescue nil elsif context.resource_owner.nil? && context.protected_endpoint? raise OauthBwergemn::Errors::InvalidToken else raise OauthBwergemn::Errors::InvalidToken end end
context()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 9 def context env['api.endpoint'] end
endpoint_protected?()
click to toggle source
Authorization control.
# File lib/oauth_bwergemn/oauth2.rb, line 39 def endpoint_protected? auth_strategy.endpoint_protected? end
is_args_include_as?()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 74 def is_args_include_as? args.key?(:as) end
is_args_include_validate?()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 67 def is_args_include_validate? if args.key?(:validate) && ![true, false].include?(args[:validate]) raise OauthBwergemn::Errors::InvalidScope.new("Not valid scope '#{args[:validate]}' in `oauth2 scope`") end args.key?(:validate) end
request()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 17 def request @_the_request end
scopes()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 53 def scopes results = [] auth_strategy.auth_scopes.map { |s| (results << s) unless s.is_a?(Hash) } results.map! &:to_sym end
sync_scopes_from(resource , to: to.update(scopes: resource.scopes.join(',')) rescue nil)
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 49 def sync_scopes_from resource , to: to.update(scopes: resource.scopes.join(',')) rescue nil end
the_request=(env)
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 13 def the_request=(env) @_the_request = ActionDispatch::Request.new(env) end
token()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 21 def token if request.headers['Authorization'].present? if request.headers['Authorization'].include?('bearer') token = request.headers['Authorization'].try('split', 'bearer').try(:last).try(:strip) elsif request.headers['Authorization'].include?('Bearer') token = request.headers['Authorization'].try('split', 'Bearer').try(:last).try(:strip) else token = request.headers['Authorization'] end else token = request.parameters['access_token'] end token end
token_optional?()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 86 def token_optional? is_args_include_validate? && [true, false].include?(args[:validate]) && args[:validate].eql?(false) end
token_required?()
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 90 def token_required? is_args_include_validate? && [true, false].include?(args[:validate]) && args[:validate].eql?(true) || is_args_include_validate?.blank? end
Private Instance Methods
set_auth_strategy(strategy)
click to toggle source
# File lib/oauth_bwergemn/oauth2.rb, line 166 def set_auth_strategy(strategy) @auth_strategy = OauthBwergemn::AuthStrategies.const_get(strategy.to_s.capitalize.to_s).new end