Class: Parse::ACLScope::Resolution

Inherits:
Struct
  • Object
show all
Defined in:
lib/parse/acl_scope.rb

Overview

Outcome of resolving a single mongo-direct call's auth kwargs.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#clientParse::Client?

Returns the client whose authorization context produced this resolution. Carried so a caller about to run the query against a process-global resource can check that the two agree; see MongoDB.verify_client!. Per-client authorization plus a process-global MongoDB connection is safe only when they belong to the same application.

Returns:

  • (Parse::Client, nil)

    the client whose authorization context produced this resolution. Carried so a caller about to run the query against a process-global resource can check that the two agree; see MongoDB.verify_client!. Per-client authorization plus a process-global MongoDB connection is safe only when they belong to the same application.



77
78
79
80
81
82
# File 'lib/parse/acl_scope.rb', line 77

Resolution = Struct.new(:mode, :permission_strings, :user_id, :session, :strict_role, :client, keyword_init: true) do
  def master?; mode == :master; end
  def session?; mode == :session; end
  def public?; mode == :public; end
  def strict_role?; strict_role == true; end
end

#modeSymbol

Returns one of :session, :master, :public. :session means the caller passed a valid session_token:; :master means the caller passed master: true; :public means neither was supplied and the path's require_session_token toggle is off, so the SDK falls through to public-only ACL semantics.

Returns:

  • (Symbol)

    one of :session, :master, :public. :session means the caller passed a valid session_token:; :master means the caller passed master: true; :public means neither was supplied and the path's require_session_token toggle is off, so the SDK falls through to public-only ACL semantics.



77
78
79
80
81
82
# File 'lib/parse/acl_scope.rb', line 77

Resolution = Struct.new(:mode, :permission_strings, :user_id, :session, :strict_role, :client, keyword_init: true) do
  def master?; mode == :master; end
  def session?; mode == :session; end
  def public?; mode == :public; end
  def strict_role?; strict_role == true; end
end

#permission_stringsArray<String>?

Returns the _rperm allow-set ready to hand to Parse::ACL.read_predicate. nil for :master — no injection runs on the master path.

Returns:



77
78
79
80
81
82
# File 'lib/parse/acl_scope.rb', line 77

Resolution = Struct.new(:mode, :permission_strings, :user_id, :session, :strict_role, :client, keyword_init: true) do
  def master?; mode == :master; end
  def session?; mode == :session; end
  def public?; mode == :public; end
  def strict_role?; strict_role == true; end
end

#sessionParse::Authorization::Resolved?

Returns the underlying resolved-session struct (carries role-name set), nil for :master.

Returns:



77
78
79
80
81
82
# File 'lib/parse/acl_scope.rb', line 77

Resolution = Struct.new(:mode, :permission_strings, :user_id, :session, :strict_role, :client, keyword_init: true) do
  def master?; mode == :master; end
  def session?; mode == :session; end
  def public?; mode == :public; end
  def strict_role?; strict_role == true; end
end

#strict_roleBoolean

Returns when true, downstream predicate construction (see Parse::ACLScope.match_stage_for and Parse::ACLScope.rewrite_pipeline) suppresses the implicit "*" (public) grant. Only meaningful for role-scoped resolutions where the caller wants to see ONLY rows whose _rperm explicitly includes one of the resolved role names, not every public-readable row in the collection. Defaults to false for backwards compatibility. Note: even with strict_role: true, rows with NO _rperm field still pass (Parse-Server treats absent _rperm as public-default); the knob only suppresses the "*" subscription in the $in set.

Returns:

  • (Boolean)

    when true, downstream predicate construction (see Parse::ACLScope.match_stage_for and Parse::ACLScope.rewrite_pipeline) suppresses the implicit "*" (public) grant. Only meaningful for role-scoped resolutions where the caller wants to see ONLY rows whose _rperm explicitly includes one of the resolved role names, not every public-readable row in the collection. Defaults to false for backwards compatibility. Note: even with strict_role: true, rows with NO _rperm field still pass (Parse-Server treats absent _rperm as public-default); the knob only suppresses the "*" subscription in the $in set.



77
78
79
80
81
82
# File 'lib/parse/acl_scope.rb', line 77

Resolution = Struct.new(:mode, :permission_strings, :user_id, :session, :strict_role, :client, keyword_init: true) do
  def master?; mode == :master; end
  def session?; mode == :session; end
  def public?; mode == :public; end
  def strict_role?; strict_role == true; end
end

#user_idString?

Returns the resolved user_id, or nil for :master and :public.

Returns:

  • (String, nil)

    the resolved user_id, or nil for :master and :public.



77
78
79
80
81
82
# File 'lib/parse/acl_scope.rb', line 77

Resolution = Struct.new(:mode, :permission_strings, :user_id, :session, :strict_role, :client, keyword_init: true) do
  def master?; mode == :master; end
  def session?; mode == :session; end
  def public?; mode == :public; end
  def strict_role?; strict_role == true; end
end

Instance Method Details

#master?Boolean

Returns:

  • (Boolean)


78
# File 'lib/parse/acl_scope.rb', line 78

def master?; mode == :master; end

#public?Boolean

Returns:

  • (Boolean)


80
# File 'lib/parse/acl_scope.rb', line 80

def public?; mode == :public; end

#session?Boolean

Returns:

  • (Boolean)


79
# File 'lib/parse/acl_scope.rb', line 79

def session?; mode == :session; end

#strict_role?Boolean

Returns:

  • (Boolean)


81
# File 'lib/parse/acl_scope.rb', line 81

def strict_role?; strict_role == true; end