1. 29 Jul, 2016 10 commits
    • Timothy Andrew's avatar
      Fix all specs related to changes in !5081. · 19dd4e80
      Timothy Andrew authored
      1. Remove `Project#developers_can_push_to_protected_branch?` since it
         isn't used anymore.
      
      2. Remove `Project#developers_can_merge_to_protected_branch?` since it
         isn't used anymore.
      19dd4e80
    • Timothy Andrew's avatar
      Fix default branch protection. · 8f2f6d3d
      Timothy Andrew authored
      1. So it works with the new data model for protected branch access levels.
      8f2f6d3d
    • Timothy Andrew's avatar
      Update protected branches spec to work with the `select`s. · 5ada05f6
      Timothy Andrew authored
      1. Get the existing spec passing.
      
      2. Add specs for all the access control options, both while creating and
         updating protected branches.
      
      3. Show a flash notice when updating protected branches, primarily so
         the spec knows when the update is done.
      5ada05f6
    • Timothy Andrew's avatar
      Allow setting "Allowed To Push/Merge" while creating a protected branch. · 6b73abb8
      Timothy Andrew authored
      1. Reuse the same dropdown component that we used for updating these
         settings (`ProtectedBranchesAccessSelect`). Have it accept options
         for the parent container (so we can control the elements it sees) and
         whether or not to save changes via AJAX (we need this for update, but
         not create).
      
      2. Change the "Developers" option to "Developers + Masters", which is
         clearer.
      
      3. Remove `developers_can_push` and `developers_can_merge` from the
         model, since they're not needed anymore.
      6b73abb8
    • Timothy Andrew's avatar
      Enforce "No One Can Push" during git operations. · db2ae26b
      Timothy Andrew authored
      1. The crux of this change is in `UserAccess`, which looks through all
         the access levels, asking each if the user has access to push/merge
         for the current project.
      
      2. Update the `protected_branches` factory to create access levels as
         necessary.
      
      3. Fix and augment `user_access` and `git_access` specs.
      db2ae26b
    • Timothy Andrew's avatar
      Add "No One Can Push" to the protected branches UI. · 9168f531
      Timothy Andrew authored
      1. Move to dropdowns instead of checkboxes. One each for "Allowed to
         Push" and "Allowed to Merge"
      
      2. Refactor the `ProtectedBranches` coffeescript class into
         `ProtectedBranchesAccessSelect`.
      
      3. Modify the backend to accept the new parameters.
      9168f531
    • Timothy Andrew's avatar
      Add seeds for protected branches. · b2d62e26
      Timothy Andrew authored
      b2d62e26
    • Timothy Andrew's avatar
      Use the `{Push,Merge}AccessLevel` models in the UI. · 362e632e
      Timothy Andrew authored
      1. Improve error handling while creating protected branches.
      
      2. Modify coffeescript code so that the "Developers can *" checkboxes
         send a '1' or '0' even when using AJAX. This lets us keep the backend
         code simpler.
      
      3. Use services for both creating and updating protected branches.
         Destruction is taken care of with `dependent: :destroy`
      362e632e
    • Timothy Andrew's avatar
      Add models for the protected branch access levels. · f66e019b
      Timothy Andrew authored
      - And hook up their associations.
      f66e019b
    • Timothy Andrew's avatar
      Add a series of migrations changing the model-level design of protected branch access levels. · c99e5147
      Timothy Andrew authored
      1. Remove the `developers_can_push` and `developers_can_merge` boolean
         columns.
      
      2. Add two new tables, `protected_branches_push_access`, and
         `protected_branches_merge_access`. Each row of these 'access' tables is
         linked to a protected branch, and uses a `access_level` column to
         figure out settings for the protected branch.
      
      3. The `access_level` column is intended to be used with rails' `enum`,
         with `:masters` at index 0 and `:developers` at index 1.
      
      4. Doing it this way has a few advantages:
      
         - Cleaner path to planned EE features where a protected branch is
           accessible only by certain users or groups.
      
         - Rails' `enum` doesn't allow a declaration like this due to the
           duplicates. This approach doesn't have this problem.
      
             enum can_be_pushed_by: [:masters, :developers]
             enum can_be_merged_by: [:masters, :developers]
      c99e5147
  2. 28 Jul, 2016 9 commits
  3. 27 Jul, 2016 21 commits