Skip to content
Snippets Groups Projects
  1. Feb 20, 2020
  2. Feb 05, 2020
  3. Feb 03, 2020
  4. Jan 02, 2020
  5. Apr 03, 2019
    • Luke Duncalfe's avatar
      GraphQL Type authorization · 8207f787
      Luke Duncalfe authored
      Enables authorizations to be defined on GraphQL Types.
      
          module Types
            class ProjectType < BaseObject
              authorize :read_project
            end
          end
      
      If a field has authorizations defined on it, and the return type of the
      field also has authorizations defined on it. then all of the combined
      permissions in the authorizations will be checked and must pass.
      
      Connection fields are checked by "digging" to find the type class of the
      "node" field in the expected location of edges->node.
      
      Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/54417
      8207f787
  6. Mar 04, 2019
    • Bob Van Landuyt's avatar
      Types::BaseField accepts authorize after reload · 58aaa766
      Bob Van Landuyt authored
      When working on files in `app/graphql` the code correctly gets
      autoloaded.
      
      However, the redefined `Types::BaseField` would never receive the
      `.accepts_definition` call, causing all queries after a reload to
      fail. Calling `.accepts_definition` on its superclass makes sure the
      reloaded version also has the `authorize` definition specified.
      58aaa766
  7. Feb 25, 2019
    • Luke Duncalfe's avatar
      Improve GraphQL Authorization DSL · ccb4edbc
      Luke Duncalfe authored
      Previously GraphQL field authorization happened like this:
      
          class ProjectType
            field :my_field, MyFieldType do
              authorize :permission
            end
          end
      
      This change allowed us to authorize like this instead:
      
          class ProjectType
            field :my_field, MyFieldType, authorize: :permission
          end
      
      A new initializer registers the `authorize` metadata keyword on GraphQL
      Schema Objects and Fields, and we can collect this data within the
      context of Instrumentation like this:
      
          field.metadata[:authorize]
      
      The previous functionality of authorize is still being used for
      mutations, as the #authorize method here is called at during the code
      that executes during the mutation, rather than when a field resolves.
      
      https://gitlab.com/gitlab-org/gitlab-ce/issues/57828
      ccb4edbc
Loading