Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-03-31Add latest changes from gitlab-org/security/gitlab@13-10-stable-eeGitLab Bot
2020-12-17Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42GitLab Bot
2020-11-19Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42GitLab Bot
2020-08-20Add latest changes from gitlab-org/gitlab@13-3-stable-eeGitLab Bot
2020-07-20Add latest changes from gitlab-org/gitlab@13-2-stable-eeGitLab Bot
2020-03-12Add latest changes from gitlab-org/gitlab@masterGitLab Bot
2020-03-05Add latest changes from gitlab-org/gitlab@masterGitLab Bot
2020-02-27Add latest changes from gitlab-org/gitlab@masterGitLab Bot
2019-06-19Add documentation and testsManoj MJ
This commit adds - feature specs - to test the ability of a user with "developer" permission to delete tags in repositories. - documentation
2019-03-06Allow protected branch creation via web and APIPatrick Bajao
This commit includes changes to add `UserAccess#can_create_branch?` which will check whether the user is allowed to create a branch even if it matches a protected branch. This is used in `Gitlab::Checks::BranchCheck` when the branch name matches a protected branch. A `push_to_create_protected_branch` ability in `ProjectPolicy` has been added to allow Developers and above to create protected branches.
2018-10-22Enable frozen string for lib/gitlab/*.rbgfyoung
2018-06-01Rephrase "maintainer" to more precise "members who can merge to the target ↵Mark Chao
branch" "Maintainer" will be freed to be used for #42751
2018-04-24Allow admins to push to empty reposBob Van Landuyt
2018-04-10Rename delete_protected_branch ability to push_to_delete_protected_branch to ↵Douwe Maan
prevent confusion with destroy_protected_branch
2018-03-08Validate `:push_code` before checking protected branchesBob Van Landuyt
2018-03-07Limit queries to a user-branch combinationBob Van Landuyt
The query becomes a lot simpler if we can check the branch name as well instead of having to load all branch names.
2018-03-07Allow maintainers to push to a single branchBob Van Landuyt
2018-02-28Moved o_auth/saml/ldap modules under gitlab/authHoratiu Eugen Vlad
2018-02-22Port `read_cross_project` ability from EEBob Van Landuyt
2018-02-06Moves project creationg to git access check for git pushTiago Botelho
2018-01-12Introduce PredicateMemoization cop and fix offensesLin Jen-Shin
with StrongMemoize
2017-07-19Fix tests and fine tweak permission error messageLin Jen-Shin
2017-07-19Eliminate N+1 queries on checking different protected refsLin Jen-Shin
I realized where the N+1 queries were actually coming from project.protected_branches, but how come we cannot preload this, or cache this at all? Then I found that this is somehow a Rails limitation. What we're doing before, eventually come to: project.protected_branches.matching But why it's not cached? (project.protected_branches.loaded? is always false) It's because matching is a class method, which is called on the proxy. In this case, Rails cannot cache the result. I don't know if this is possible to implement or not, because clearly this would require some tricks to implement class methods on associations. So instead, we could just pass project.protected_branches to ProtectedRef.matching, then it would work regularly. With this change, there's no more N+1 queries.
2017-07-18Rename can_push_or_merge_to_branch? to can_update_branch?Lin Jen-Shin
Also make sure pipeline would also check against tag as well
2017-07-18Merge remote-tracking branch 'upstream/master' into 30634-protected-pipelineLin Jen-Shin
* upstream/master: (25 commits) Remove unneeded asserts and add tests for inactive RequestStore Rename the methods to make it fit with current name Follow feedback on the merge request Make sure it checks against the tag only when it's a tag Renamed Gitaly services fix transient rspec failure due to Poll.js race condition Refactor variables initialization in dropzone_input.js cache the cache key... avoid #respond_to? in Cache.id_for cache DeclarativePolicy.class_for at the class level Update 9.3-to-9.4.md fix padding on filtered search dropdown. Styles should only apply to li in list Cache Note#notable for commits and fix tests Add changelog entry Update the comments for the new functionality Use RequestStoreWrap for Commit#author Skip dead jobs queue for web hooks and project services Add RequestStoreWrap to cache via RequestStore Don't track cached queries in Gitlab::PerformanceBar::PeekQueryTracker Add changelog entry ...
2017-07-18Rename the methods to make it fit with current nameLin Jen-Shin
2017-07-18Follow feedback on the merge requestLin Jen-Shin
2017-07-17Add RequestStoreWrap to cache via RequestStoreLin Jen-Shin
I don't like the idea of `RequestStore` at all, because it's just a global state which shouldn't be used at all. But we have a number of places calling `ProtectedBranch.protected?` and `ProtectedTag.protected?` in a loop for the same user, project, and ref whenever we're checking against if the jobs for a given pipeline is accessible for a given user. This means we're effectively making N queries for the same thing over and over. To properly fix this, we need to change how we check the permission, and that could be a huge work. To solve this quickly, adding a cache layer for the given request would be quite simple to do. We're already doing this in Commit#author, and this is extending that idea and make it generalized.
2017-07-04Introduce Gitlab::Cache::RequestStoreWrapLin Jen-Shin
So that we cache the result of UserAccess#can_push_or_merge_to_branch? in RequestStore, avoiding querying ProtectedBranch over and over for the list of pipelines (i.e. in PipelineSerializer) I don't think this is ideal because I don't like the idea of RequestStore in general, but this is the easiest way to cache it without changing the architecture. In the future we should cache more explicitly rather than this kind of global store.
2017-07-04Consistently check permission for creating pipelines,Lin Jen-Shin
updating builds and updating pipelines. We check against being able to merge or push if the ref is protected.
2017-05-08Add confirm delete protected branch modalSam Rose
2017-04-28Prevent people from creating branches if they don't have persmission to pushPawel Chojnacki
2017-04-04Fixed UserAccess#can_create_tag? after create_access_levels renameJames Edwards-Jones
2017-04-04Cleanup & tests for UserAccess#can_create_tag?James Edwards-Jones
2017-04-03Moved Project#protected_branch? to ProtectedBranch, similar for tagsJames Edwards-Jones
2017-04-03Extract ProtectedRef ConcernJames Edwards-Jones
2017-03-31Protected Tags enforced over gitJames Edwards-Jones
2017-03-10reverse the logic and use a clearer namehttp://jneen.net/
2017-03-09protect git access through the policy infrahttp://jneen.net/
2017-01-13Allow creating protected branch when it doesn't existPawel Chojnacki
if user has either push or merge permissions + Change log entry for fix to creating a branch matching a wildcard fails
2016-11-16Introduce no_user_or_blocked? and fix tests due toLin Jen-Shin
checking user permission.
2016-08-16Improve EE compatibility with protected branch access levels.Timothy Andrew
1. Change a few incorrect `access_level` to `access_levels.first` that were missed in e805a64. 2. `API::Entities` can iterate over all access levels instead of just the first one. This makes no difference to CE, and makes it more compatible with EE.
2016-08-04changes default_branch_protection to allow devs_can_merge protection option ↵tiagonbotelho
aswell
2016-07-29Enforce "No One Can Push" during git operations.Timothy Andrew
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.
2016-07-18Revert "Revert "Merge branch '18193-developers-can-merge' into 'master' ""Rémy Coutable
This reverts commit 530f5158e297f3cde27f3566cfe13bad74ba3b50. See !4892. Signed-off-by: Rémy Coutable <remy@rymai.me>
2016-07-13Revert "Merge branch '18193-developers-can-merge' into 'master' "Robert Speicher
This reverts commit 9ca633eb4c62231e4ddff5466c723cf8e2bdb25d, reversing changes made to fb229bbf7970ba908962b837b270adf56f14098f.
2016-07-13Refactor `Gitlab::GitAccess`Timothy Andrew
1. Don't use case statements for dispatch anymore. This leads to a lot of duplication, and makes the logic harder to follow. 2. Remove duplicated logic. - For example, the `can_push_to_branch?` exists, but we also have a different way of checking the same condition within `change_access_check`. - This kind of duplication is removed, and the `can_push_to_branch?` method is used in both places. 3. Move checks returning true/false to `UserAccess`. - All public methods in `GitAccess` now return an instance of `GitAccessStatus`. Previously, some methods would return true/false as well, which was confusing. - It makes sense for these kinds of checks to be at the level of a user, so the `UserAccess` class was repurposed for this. The prior `UserAccess.allowed?` classmethod is converted into an instance method. - All external uses of these checks have been migrated to use the `UserAccess` class 4. Move the "change_access_check" into a separate class. - Create the `GitAccess::ChangeAccessCheck` class to run these checks, which are quite substantial. - `ChangeAccessCheck` returns an instance of `GitAccessStatus` as well. 5. Break out the boolean logic in `ChangeAccessCheck` into `if/else` chains - this seems more readable. 6. I can understand that this might look like overkill for !4892, but I think this is a good opportunity to clean it up. - http://martinfowler.com/bliki/OpportunisticRefactoring.html
2016-03-10Move method to UserJacob Vosmaer
2016-03-09Acquire lock before LDAP syncJacob Vosmaer
2014-08-06Cache LDAP check in Gitlab::UserAccessJacob Vosmaer
This changes the number of LDAP calls when users access GitLab via Git-over-SSH or the API. LDAP check results are cached for 1 hour.