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
2017-04-26Fix logic in Users::CreateService broken by the fix for OAuth usersRémy Coutable
Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-04-26Ensures that OAuth/LDAP/SAML users don't need to be confirmedRémy Coutable
Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-04-25Fix OAuth, LDAP and SAML SSO when regular sign-ups are disabledDouwe Maan
2017-04-24Move records to the ghost user in a transaction.Timothy Andrew
- While deleting a user, some of the user's associated records are moved to the ghost user so they aren't deleted. The user is blocked before these records are moved, to prevent the user from creating new records while the migration is happening, and so preventing a data race. - Previously, if the migration failed, the user would _remain_ blocked, which is not the expected behavior. On the other hand, we can't just stick the block + migration into a transaction, because we want the block to be committed before the migration starts (for the data race reason mentioned above). - One solution (implemented in this commit) is to block the user in a parent transaction, migrate the associated records in a nested sub-transaction, and then unblock the user in the parent transaction if the sub-transaction fails.
2017-04-19Merge branch 'usage-ping-port' into 'master' Sean McGivern
Usage ping port Closes #27750 See merge request !10481
2017-04-16Hard delete users' associated records deleted from AbuseReportsStan Hu
In the case of spammers, we really want a hard delete to avoid retaining spam. Closes #31021
2017-04-14Add a new Gitlab::UserActivities class to track user activitiesRémy Coutable
This new class uses a Redis Hash instead of a Sorted Set. Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-04-14Remove user activities table and use redis instead of PG for recording ↵James Lopez
activities Refactored specs and added a post deployment migration to remove the activity users table.
2017-04-14Add user activity service and spec. Also added relevant - NOT offline - ↵James Lopez
migration It uses a user activity table instead of a column in users. Tested with mySQL and postgreSQL
2017-04-13Implement Users::BuildServicegeoandri
2017-04-09Remove the User#is_admin? methodblackst0ne
2017-04-06Merge branch '28695-move-all-associated-records-to-ghost-user' into 'master' Douwe Maan
Resolve "Deleting a user shouldn't delete associated records" Closes #28695 and #30514 See merge request !10467
2017-04-06Implement review comments from @DouweM for !10467.Timothy Andrew
1. Have `MigrateToGhostUser` be a service rather than a mixed-in module, to keep things explicit. Specs testing the behavior of this class are moved into a separate service spec file. 2. Add a `user.reported_abuse_reports` association to make the `migrate_abuse_reports` method more consistent with the other `migrate_` methods.
2017-04-06Move a user's merge requests to the ghost user.Timothy Andrew
1. When the user is deleted. 2. Refactor out code relating to "migrating records to the ghost user" into a `MigrateToGhostUser` concern, which is tested using a shared example.
2017-04-04Inlude the password_automatically_check param as permitted config in the ↵DJ Mountney
user create_service This param is passed to service in two places, one is in the build_user for non ldap oauth users. And the other is in the initial production admin user seed data. Without this change, when setting up GitLab in a production environment, you were not being given the option of setting the root password on initial setup in the UI.
2017-04-02Fix race condition where a namespace would be deleted before a project was ↵Stan Hu
deleted When deleting a user, the following sequence could happen: 1. Project `mygroup/myproject` is scheduled for deletion 2. The group `mygroup` is deleted 3. Sidekiq worker runs to delete `mygroup/myproject`, but the namespace and routes have been destroyed. Closes #30334
2017-03-30Fix production admin fixture to use the new `Users::CreateService`Rémy Coutable
Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-03-27Implement new service for creating userGeorge Andrinopoulos
2017-03-17Use Enumerable#index_by where possibleDouwe Maan
2017-02-28Fix access to projects shared with a nested groupDouwe Maan
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
2017-02-24Don't allow deleting a ghost user.Timothy Andrew
- Add a `destroy_user` ability. This didn't exist before, and was implicit in other abilities (only admins could access the admin area, so only they could destroy all users; a user can only access their own account page, and so can destroy only themselves). - Grant this ability to admins, and when the current user is trying to destroy themselves. Disallow destroying ghost users in all cases. - Modify the `Users::DestroyService` to check this ability. Also check it in views to decide whether or not to show the "Delete User" button. - Add a short summary of the Ghost User to the bio.
2017-02-24Implement final review comments from @DouweM and @rymaiTimothy Andrew
- Have `Uniquify` take a block instead of a Proc/function. This is more idiomatic than passing around a function in Ruby. - Block a user before moving their issues to the ghost user. This avoids a data race where an issue is created after the issues are migrated to the ghost user, and before the destroy takes place. - No need to migrate issues (to the ghost user) in a transaction, because we're using `update_all` - Other minor changes
2017-02-24Implement review comments from @DouweM and @nick.thomas.Timothy Andrew
1. Use an advisory lock to guarantee the absence of concurrency in `User.ghost`, to prevent data races from creating more than one ghost, or preventing the creation of ghost users by causing validation errors. 2. Use `update_all` instead of updating issues one-by-one.
2017-02-24Deleting a user shouldn't delete associated issues.Timothy Andrew
- "Associated" issues are issues the user has created + issues that the user is assigned to. - Issues that a user owns are transferred to a "Ghost User" (just a regular user with `state = 'ghost'` that is created when `User.ghost` is called). - Issues that a user is assigned to are moved to the "Unassigned" state. - Fix a spec failure in `profile_spec` — a spec was asserting that when a user is deleted, `User.count` decreases by 1. After this change, deleting a user creates (potentially) a ghost user, causing `User.count` not to change. The spec has been updated to look for the relevant user in the assertion.
2017-02-20Add user deletion permission check in `Users::DestroyService`Stan Hu
We saw from a recent incident that the `Users::DestroyService` would attempt to delete a user over and over. Revoking the permissions from the current user did not help. We should ensure that the current user does, in fact, have permissions to delete the user. Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-02-08Fix inconsistent naming for services that delete thingsdixpac
* Changed name of delete_user_service and worker to destroy * Move and change delete_group_service to Groups::DestroyService * Rename Notes::DeleteService to Notes::DestroyService
2017-01-25Merge branch 'dz-nested-groups-access-improvements' into 'master' Dmitriy Zaporozhets
Nested groups feature improvemetns See merge request !8448
2017-01-25Add User#nested_groups and User#nested_projects methodsDmitriy Zaporozhets
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
2017-01-17Synchronize all project authorization refreshingYorick Peterse
Previously a lease would only be obtained to update data. This could lead to duplicate data being inserted, triggering a UNIQUE constraint error. To work around this we now acquire a lease before performing _any_ project authorization work, releasing it at the very end. Fixes #25987
2017-01-08Remove the project_authorizations.id columnYorick Peterse
This column used to be a 32 bits integer, allowing for only a maximum of 2 147 483 647 rows. Given enough users one can hit this limit pretty quickly, as was the case for GitLab.com. Changing this type to bigint (= 64 bits) would give us more space, but we'd eventually hit the same limit given enough users and projects. A much more sustainable solution is to simply drop the "id" column. There were only 2 lines of code depending on this column being present, and neither truly required it to be present. Instead the code now uses the "project_id" column combined with the "user_id" column. This means that instead of something like this: DELETE FROM project_authorizations WHERE user_id = X AND id = Y; We now run the following when removing rows: DELETE FROM project_authorizations WHERE user_id = X AND project_id = Y; Since both user_id and project_id are indexed this should not slow down the DELETE query. This commit also removes the "dependent: destroy" clause from the "project_authorizations" relation in the User and Project models. Keeping this prevents Rails from being able to remove data as it relies on an "id" column being present. Since the "project_authorizations" table has proper foreign keys set up (with cascading removals) we don't need to depend on any Rails logic.
2016-12-28Cache project authorizations even when user has access to zero projectsAdam Niedzielski
2016-12-19Smarter refreshing of authorized projectsYorick Peterse
Prior to this commit the refreshing of authorized projects was done in two steps: 1. Remove existing authorizations 2. Insert a new list of all authorizations This can lead to a high amount of dead tuples as every time all rows are being replaced. For example, if a user with 100 authorizations is given access to a new project this would lead to: * 100 rows being removed * 101 new rows being inserted This commit changes the way this system works so it only removes/inserts what is necessary. Using the above example this would lead to only 1 new row being inserted, with the initial 100 being left untouched. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/25257