1. 25 11月, 2016 1 次提交
    • Y
      Refresh project authorizations using a Redis lease · 92b2c74c
      Yorick Peterse 提交于
      When I proposed using serializable transactions I was hoping we would be
      able to refresh data of individual users concurrently. Unfortunately
      upon closer inspection it was revealed this was not the case. This could
      result in a lot of queries failing due to serialization errors,
      overloading the database in the process (given enough workers trying to
      update the target table).
      
      To work around this we're now using a Redis lease that is cancelled upon
      completion. This ensures we can update the data of different users
      concurrently without overloading the database.
      
      The code will try to obtain the lease until it succeeds, waiting at
      least 1 second between retries. This is necessary as we may otherwise
      end up _not_ updating the data which is not an option.
      92b2c74c
  2. 23 11月, 2016 1 次提交
  3. 19 11月, 2016 1 次提交
  4. 18 11月, 2016 1 次提交
  5. 17 11月, 2016 1 次提交
  6. 16 11月, 2016 2 次提交
  7. 11 11月, 2016 1 次提交
  8. 07 11月, 2016 1 次提交
    • Y
      Add User#projects_with_reporter_access_limited_to · 467b346f
      Yorick Peterse 提交于
      This method can be used to retrieve a list of projects for a user that
      said user has reporter access to. This list is then be reduced down to
      a specific set of projects. This allows you to reduce a list of projects
      to a list of projects you have reporter access to in an efficient
      manner.
      467b346f
  9. 04 11月, 2016 1 次提交
  10. 01 11月, 2016 1 次提交
    • Y
      Allow to search for user by secondary email address in the admin interface · f8530580
      Yar 提交于
      It is not possible to search for a user by his secondary email address in
      the Users search bar in the admin interface(/admin/users). A use-case could
       be that an admin wants to remove a specific secondary email address of an
      user, because it interferes with another user. Issue #23761
      
      This commit adds ability to search not only by main email, but also
      by any secondary email in the admin interface.
      f8530580
  11. 25 10月, 2016 1 次提交
  12. 05 10月, 2016 1 次提交
    • Y
      Refactor Gitlab::Identifier · 16ed9b61
      Yorick Peterse 提交于
      This refactors Gitlab::Identifier so it uses fewer queries and is
      actually tested. Queries are reduced by caching the output as well as
      using 1 query (instead of 2) to find a user using an SSH key.
      16ed9b61
  13. 01 9月, 2016 1 次提交
  14. 25 8月, 2016 1 次提交
  15. 17 8月, 2016 1 次提交
  16. 12 8月, 2016 1 次提交
  17. 09 8月, 2016 1 次提交
  18. 04 8月, 2016 1 次提交
  19. 02 8月, 2016 1 次提交
  20. 20 7月, 2016 1 次提交
  21. 19 7月, 2016 4 次提交
  22. 15 7月, 2016 1 次提交
  23. 12 7月, 2016 1 次提交
  24. 08 7月, 2016 1 次提交
    • D
      Added setting to set new users by default as external · a0a9494e
      Dravere 提交于
      As requested by the issue #14508 this adds an option in the application
      settings to set newly registered users by default as external. The
      default setting is set to false to stay backward compatible.
      a0a9494e
  25. 24 6月, 2016 1 次提交
    • R
      Fix an information disclosure when requesting access to a group containing private projects · aec3475d
      Rémy Coutable 提交于
      The issue was with the `User#groups` and `User#projects` associations
      which goes through the `User#group_members` and `User#project_members`.
      
      Initially I chose to use a secure approach by storing the requester's
      user ID in `Member#created_by_id` instead of `Member#user_id` because I
      was aware that there was a security risk since I didn't know the
      codebase well enough.
      
      Then during the review, we decided to change that and directly store the
      requester's user ID into `Member#user_id` (for the sake of simplifying
      the code I believe), meaning that every `group_members` / `project_members`
      association would include the requesters by default...
      
      My bad for not checking that all the `group_members` / `project_members`
      associations and the ones that go through them (e.g. `Group#users` and
      `Project#users`) were made safe with the `where(requested_at: nil)` /
      `where(members: { requested_at: nil })` scopes.
      
      Now they are all secure.
      Signed-off-by: NRémy Coutable <remy@rymai.me>
      aec3475d
  26. 07 6月, 2016 8 次提交
  27. 06 6月, 2016 1 次提交
    • T
      Add a `U2fRegistrations` table/model. · 791cc913
      Timothy Andrew 提交于
      - To hold registrations from U2F devices, and to authenticate them.
      - Previously, `User#two_factor_enabled` was aliased to the
        `otp_required_for_login` column on `users`.
      - This commit changes things a bit:
          - `User#two_factor_enabled` is not a method anymore
          - `User#two_factor_enabled?` checks both the
            `otp_required_for_login` column, as well as `U2fRegistration`s
          - Change all instances of `User#two_factor_enabled` to
            `User#two_factor_enabled?`
      - Add the `u2f` gem, and implement registration/authentication at the
        model level.
      791cc913
  28. 03 6月, 2016 2 次提交