Forbid scripting for wiki files
Wiki files (not pages - files in the repo) are just sent to the browser
with whatever content-type the mime_types gem assigns to them based on
their extension. As this is from the same domain as the GitLab
application, this is an XSS vulnerability.
Set a CSP forbidding all sources for scripting, CSS, XHR, etc. on these
files.
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/17298.
See merge request !1969
Fix vulnerability that leaks private labels and milestones
This fixes vulnerability that leaks information about private labels and milestones because of insecure direct object reference in issueable create service.
This affects merge requests and issues.
See https://gitlab.com/gitlab-org/gitlab-ce/issues/15439
This MR introduces additional check that rejects labels and milestone that does not belong to the same project issue/merg request does.
`IssuableBaseService` may benefit from encapsulating filters in separate class/module, which then may improve coherency in this class.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/15439
See merge request !1954
Remove persistent XSS vulnerability in `commit_person_link` helper
Because we were incorrectly supplying the tooltip title as
`data-original-title` (which Bootstrap's Tooltip JS automatically
applies based on the `title` attribute; we should never be setting it
directly), the value was being passed through as-is.
Instead, we should be supplying the normal `title` attribute and letting
Rails escape the value, which also negates the need for us to call
`sanitize` on it.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/15126
See merge request !1948
Signed-off-by: Rémy Coutable <remy@rymai.me>
Fix 2FA authentication spoofing
This is security fix for vulnerability described at
https://gitlab.com/gitlab-org/gitlab-ce/issues/14900.
Attacker was able to bypass password authentication of users that have 2FA enabled, and consequently sign is as a different user, without knowing his password, if he managed to guess 2FA One Time Password for that user.
It was also possible to enumerate users and check if they have 2FA enabled, because GitLab responded with different error for each case.
This MR attempts to change default user search scope if `otp_user_id` session variable has been set. If it is present, it means that user has 2FA enabled, and has already been verified with login and password. In this case we should look for user with `otp_user_id` first, before picking it up by `login`.
Both, 2FA authentication spoofing and 2FA discovery have been covered by specs.
Current 2FA code is a bit tricky, so it probably needs some refactoring.
Signed-off-by: Rémy Coutable <remy@rymai.me>
Only show group member roles if explicitly requested
This very simply fixes an EE problem, but I made the change here so it's less prone to errors from merges.
In EE, prior to this change, group member roles were shown in project member list when a project is shared with a group. This is bad because the project explicitly shares with the group and sets a 'max access' level. If the max access level is 'developer' the project owner doesn't want to see 'Owner' in the group roles because it will confuse them. I verified that permissions are really being honored here, it was just an error in the view. You can see in https://gitlab.com/gitlab-org/gitlab-ee/blob/master/app/views/projects/project_members/_shared_group_members.html.haml#L18 where this was how it was intended to be. Likely a CE-EE merge introduced this bug. That's why I made the boolean required in CE even though this is for EE.


See merge request !3044
Flush repository caches before renaming projects
This should hopefully solve gitlab-org/gitlab-ce#13790. Once I know the exact steps to reproduce the problem I should be able to confirm this.
cc @dblessing @inem
See merge request !2974
Don't show "Welcome to GitLab" when the search didn't return any projects
Fixes#13785. /cc @pixdrift
### Before

### After

See merge request !3059
Fix permissions for deprecated CI build status badge
This fixes permissions for deprecated status badge, being unavailable even if project is public.
Closes#13324
See merge request !3030
Fix issue with overlap of sidebar links.
Thanks @iamphill for the help with this one.

cc @iamphill @alfredo1 @dzaporozhets @rymai
See merge request !3043
Don't show any "2FA required" message if it's not actually required
Prior, if the user had enabled and then disabled 2FA, they would be
shown a "You must enable Two-factor Authentication for your account."
message when going back to re-activate it, even if 2FA enforcement was
disabled.
See merge request !3014
Improve implementation to check read access to forks and add pagination.
Fixes#13648
The following optimizations where made:
- Pagination was added.
- Code to check for read permissions to forks was optimized, in the past we were doing too many queries for each project.
See merge request !2991
Branded appearance to CE
Closes#11489
The difference with the EE version is only that there is no distinction between light and dark logos, though this wasn't used anyway. If this is fine, I'll create a MR on EE too.
TODO:
- [x] Copy docs
- [x] Make new screenshots
- [ ] Remove Custom Welcome message feature?
@rymai: I was unsure what labels to add to ping you, so I just ping you like this 😉
/cc @DouweM
See merge request !2927
Created helper class to hide content in issue sidebar when collapsed

Closes#13764
See merge request !2968
Move "I should see Crowd login form" feature to a view spec
We were doing all kinds of code gymnastics to "enable" Crowd in the
feature spec and this would sometimes cause a transient failure.
Really what it's testing is if the Crowd login form shows when Crowd's
enabled, so this is much better suited to a view spec.
See merge request !2963
Sidebar overlaps content when screen is below 1200px.
When screen is below 1200px, the sidebar overlaps.
When screen is above 1200px, the sidebar pushes content out.
z-index change to make sure hamburger stays on top.
Fixes#12717


Also sorry I couldn't get the collapse button in the screen cap. It's there.
See merge request !2620
Changed padding & background color for highlighted notes
Closes#12453

See merge request !2937
Fix group projects styles
Makes new project button visible when no projects are available.
Fixes#13193



cc @creamzy @skyruler
See merge request !2714
Issues can be dragged & dropped into empty milestone lists
This is also possible with MRs. Also fixed an issue where MRs weren't sortable
Fixes#13668

See merge request !2935
Ensure we don't check a commit's description for revert message if it has no description
Fixes#13631.
/cc @razer6 @grzesiek @yorickpeterse @rdavila
See merge request !2917
Only show up or down votes icon on issue list if there are any
Closes#13649

See merge request !2909
Add Todos
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/2425
Tasks:
- Prepare database
- [X] Create a new table (`todos`)
- Tasks Queue view
- [X] Add a number icon showing the number of todos on the top right next to the new and logout button that will redirect the user to the todos page
- [X] Add a chronological list of todos, with the 'Todos' tab active by default
- [X] Add a 'Done' button to each todo
- [x] Add filters (project, author, type, and action)
- Todos generation
- [X] When user issue/mr is assgined to someone
- [x] When user is mentioned on (issues/mr's/comments)
- Mark todo as `done`
- [X] When clicks on the 'Done' button
- [X] When edit issue/mr
- [X] When left/edit a comment
- [X] When reassign issue/mr
- [X] When add/remove labels to issue/mr
- [X] When issue/mr is closed
- [X] When mr is merged
- [X] When added an emoji
- [X] When changed the issue/mr milestone
* Screenshot:

See merge request !2817
Award emoji supports retina displays
Based on discussion in !2800
There is now a retina spritesheet for emojis. It is 2mb, don't know how big an issue that is.
Before:

After:

Also updated the rake task to make the @2x spritesheet https://gitlab.com/snippets/15348
cc\ @rspeicher @vsizov
See merge request !2891