1. 03 7月, 2019 1 次提交
    • C
      Enumerate fields with Gitaly calls · 8b809837
      charlieablett 提交于
       - Add a complexity of 1 if Gitaly is called at least once
       - Add an error notification if `calls_gitaly` isn't right for a
       particular field
      8b809837
  2. 21 6月, 2019 2 次提交
    • B
      Enforce authorizations for non-nullable fields · 967cbd08
      Bob Van Landuyt 提交于
      This makes sure we also enforce authorizations for non-nullable
      fields.
      
      We are defining our authorizations on the unwrapped
      types (Repository). But when a type like that is presented in a
      non-nullable field, it's type is different (Repository!). The
      non-nullable type would not have the authorization metadata.
      
      This makes sure we check the metadata on the unwrapped type for
      finding authorizations.
      967cbd08
    • B
      Add authorize to LabelType and NamespaceType · 703d0246
      Bob Van Landuyt 提交于
      This also disables the cop with a reasoning in types where appropriate
      703d0246
  3. 20 6月, 2019 1 次提交
    • B
      Render GFM html in GraphQL · 40680858
      Bob Van Landuyt 提交于
      This adds a `markdown_field` to our types.
      
      Using this helper will render a model's markdown field using the
      existing `MarkupHelper` with the context of the GraphQL query
      available to the helper.
      
      Having the context available to the helper is needed for redacting
      links to resources that the current user is not allowed to see.
      
      Because rendering the HTML can cause queries, the complexity of a
      these fields is raised by 5 above the default.
      
      The markdown field helper can be used as follows:
      
            ```
            markdown_field :note_html, null: false
            ```
      
      This would generate a field that will render the markdown field `note`
      of the model. This could be overridden by adding the `method:`
      argument. Passing a symbol for the method name:
      
            ```
            markdown_field :body_html, null: false, method: :note
            ```
      
      It will have this description by default:
      
      > The GitLab Flavored Markdown rendering of `note`
      
      This could be overridden by passing a `description:` argument.
      
      The type of a `markdown_field` is always `GraphQL::STRING_TYPE`.
      40680858
  4. 15 6月, 2019 1 次提交
  5. 03 6月, 2019 1 次提交
  6. 22 5月, 2019 1 次提交
  7. 24 4月, 2019 1 次提交
  8. 03 4月, 2019 1 次提交
    • L
      GraphQL Type authorization · 8207f787
      Luke Duncalfe 提交于
      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
  9. 26 2月, 2019 1 次提交
    • L
      Improve GraphQL Authorization DSL · ccb4edbc
      Luke Duncalfe 提交于
      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
  10. 18 2月, 2019 1 次提交
    • L
      Removing sensitive properties from ProjectType · 19cb1985
      Luke Duncalfe 提交于
      defaultBranch and ciConfigPath should only be available to users with
      the :download_code permission for the Project, as the respository might
      be private.
      
      When implementing the authorize check on these properties, it was
      found that our current Graphql::Authorize::Instrumentation class does
      not work with fields that resolve to subclasses of
      GraphQL::Schema::Scalar, like GraphQL::STRING_TYPE.
      
      After discussion with other Create Team members, it has been decided
      that because the GraphQL API is not GA, to remove these properties from
      ProjectType, and instead implement them as part of epic
      https://gitlab.com/groups/gitlab-org/-/epics/711
      
      Issue:
      https://gitlab.com/gitlab-org/gitlab-ce/issues/55316
      19cb1985
  11. 14 2月, 2019 3 次提交
  12. 27 11月, 2018 1 次提交
    • P
      Suggests issues when typing title · 50e21a89
      Phil Hughes 提交于
      This suggests possibly related issues when the user types a title.
      
      This uses GraphQL to allow the frontend to request the exact
      data that is requires. We also get free caching through the Vue Apollo
      plugin.
      
      With this we can include the ability to import .graphql files in JS
      and Vue files.
      Also we now have the Vue test utils library to make testing
      Vue components easier.
      
      Closes #22071
      50e21a89
  13. 12 9月, 2018 1 次提交
  14. 04 7月, 2018 1 次提交
    • B
      Add pipeline lists to GraphQL · 04b04658
      Bob Van Landuyt 提交于
      This adds Keyset pagination to GraphQL lists. PoC for that is
      pipelines on merge requests and projects.
      
      When paginating a list, the base-64 encoded id of the ordering
      field (in most cases the primary key) can be passed in the `before` or
      `after` GraphQL argument.
      04b04658
  15. 28 6月, 2018 1 次提交
  16. 15 6月, 2018 1 次提交
    • B
      Allow querying a single MR within a project · 9403b1d9
      Bob Van Landuyt 提交于
      This allows the user to get a single MR nested in a GraphQL project
      query.
      
      Since we need the full path and the iid anyway, this makes more sense
      than having a root query that needs the full path as well.
      9403b1d9
  17. 06 6月, 2018 3 次提交