summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Added CHANGELOG entry for allocations Gem/name fixupdate-allocations-gem-fix-namesYorick Peterse2016-06-141-0/+2
|
* Filter out classes without names in the samplerYorick Peterse2016-06-142-8/+23
| | | | | | We can't do a lot with classes without names as we can't filter by them, have no idea where they come from, etc. As such it's best to just ignore these.
* Update the allocations Gem to 1.0.5Yorick Peterse2016-06-141-1/+1
| | | | This allows it to be used on Ruby 2.3 without it crashing all the time.
* Merge branch '13948-access-request-to-projects-and-groups' into 'master' Douwe Maan2016-06-1498-622/+2074
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow users to request access to projects and groups #### TODO: - [x] Factorize the projects & groups members list - [x] Factorize `request_access` and `approve` controller methods into a concern - [x] Factorize the project & group dropdowns - [x] Factorize access request routes - [x] Factorize mailers #### Will be done in separate MRs - [ ] Documentation - [ ] API #### Access request to project - [x] Design project access request button to spec (defined in #13948) - [x] Request access to a project as a logged in user - [x] Withdraw access request to a project as a logged in user - [x] Do not treat project member request as actual membership (done partly in Ability) - [x] Display access requests on project's members page (+ allow to change level, approve, and deny request) - [x] Email requesting user at notification email address when accepted/denied - [x] Email all project admins at notification email addresses when new access request - [x] Unit specs to cover new functionality: `AccessRequestable` is missing specs - [x] Controller specs to cover new functionality - [x] Mailer specs to cover new functionality - [x] Features specs to cover new UI and interactions - [x] Regression specs still passing #### Access request to group - [x] Design group access request button to spec (defined in #13948) - [x] Request access to a group as a logged in user - [x] Withdraw access request to a group as a logged in user - [x] Do not treat group member request as actual membership - [x] Display access requests on group's members page (+ allow to change level, approve, and deny request) - [x] Email requesting user at notification email address when accepted/denied - [x] Email all project admins at notification email addresses when new access request - [x] Unit specs to cover new functionality - [x] Controller specs to cover new functionality - [x] Mailer specs to cover new functionality - [x] Features specs to cover new UI and interactions - [x] Regression specs still passing Closes #13948. ### Requesting access to a project #### Responsive UI ![request-access-to-project](/uploads/59337d84ca4c2f637dfd73fca038def9/request-access-to-project.gif) #### Request access link ![1-project-request-access-link](/uploads/5436f7854bc48bff74b2664b311920c6/1-project-request-access-link.png) #### Flash once access is requested ![2-project-request-access-flash](/uploads/8b304dd737431c47d00ee90ab88b8098/2-project-request-access-flash.jpg) #### Email sent to project admins on new access requests ##### HTML Email ![3-project-request-access-email-html](/uploads/63842c9bd4e43a907ab189087dd24cad/3-project-request-access-email-html.jpg) ##### Plain Email ![4-project-request-access-email-plain](/uploads/249289418678c65abfcf4c1e944986c6/4-project-request-access-email-plain.jpg) ### Withdrawing access request to a project #### Withdraw access request link ![5-project-withdraw-request-link](/uploads/932984713a98f03ad75cd9606245cbe2/5-project-withdraw-request-link.png) #### Withdraw access request confirmation dialog box ![6-project-withdraw-request-confirm](/uploads/bf6afb5b83ad8ba31443812d0ccbc50b/6-project-withdraw-request-confirm.png) #### Flash once access has been withdrawn ![6-2-project-withdraw-request-confirm](/uploads/4dea00452adc4febd7cff4a969a7830a/6-2-project-withdraw-request-confirm.png) ### Access requests management page ![7-project-access-requests](/uploads/2030399fa9ce261e0df4bd3d399bfc24/7-project-access-requests.jpg) #### Deny access request confirmation dialog box ![8-project-access-request-deny-confirm](/uploads/b6ffcc3092b037fb4d3a5f1929befa90/8-project-access-request-deny-confirm.png) #### Email sent to requester on denied access requests ##### HTML Email ![9-project-request-access-denied-email-html](/uploads/7fb26d627f8919039ce88302e72ede83/9-project-request-access-denied-email-html.jpg) ##### Plain Email ![10-project-request-access-denied-email-plain](/uploads/34a21f2266e3238dc29b93f855183fb0/10-project-request-access-denied-email-plain.jpg) #### Email sent to requester on granted access requests ##### HTML Email ![11-project-request-access-granted-email-html](/uploads/cecd4d874885c48dd8bb420f19defd8f/11-project-request-access-granted-email-html.jpg) ##### Plain Email ![12-project-request-access-granted-email-plain](/uploads/636446f7a711904231d592add2de83dc/12-project-request-access-granted-email-plain.jpg) ---------------------------------- ---------------------------------- ### Requesting access to a group #### Responsive UI ![request-access-to-group](/uploads/b319b8844836ad599ad4d562f3ba6057/request-access-to-group.gif) #### Request access link ![1-group-request-access-link](/uploads/1eccd38061f0183ba71c482f51ebf53a/1-group-request-access-link.png) #### Flash once access is requested ![2-group-request-access-flash](/uploads/bbb94ede6c54cd0b6b28e8e1196f687c/2-group-request-access-flash.jpg) #### Email sent to project admins on new access requests ##### HTML Email ![3-group-request-access-email-html](/uploads/7df7196e83d80bea861ea94bd8f3f390/3-group-request-access-email-html.jpg) ##### Plain Email ![4-group-request-access-email-plain](/uploads/55a1abcd7a42368f3ba8f20650339e4a/4-group-request-access-email-plain.jpg) ### Withdrawing access request to a project #### Withdraw access request link ![5-group-withdraw-request-link](/uploads/d02ed4f353a334a0a6c181da6006f0d6/5-group-withdraw-request-link.png) #### Withdraw access request confirmation dialog box ![6-group-withdraw-request-confirm](/uploads/09d6e123390f257aff9aed3b08695ad6/6-group-withdraw-request-confirm.png) #### Flash once access has been withdrawn ![6-2-group-withdraw-request-confirm](/uploads/cf300d2292d0c10ca592424860b80d20/6-2-group-withdraw-request-confirm.png) ### Access requests management page ![7-group-access-requests](/uploads/821c55ba4276112b1994ca87b0c5e1ad/7-group-access-requests.jpg) #### Deny access request confirmation dialog box ![8-group-access-request-deny-confirm](/uploads/68fad9da8bc82492be3f6d55d33dba17/8-group-access-request-deny-confirm.png) #### Email sent to requester on denied access requests ##### HTML Email ![9-group-request-access-denied-email-html](/uploads/48a8e0cc2cea3b36529b04d259dc8e65/9-group-request-access-denied-email-html.jpg) ##### Plain Email ![10-group-request-access-denied-email-plain](/uploads/85d95642a218eaf52a35da8a7a0ac8ed/10-group-request-access-denied-email-plain.jpg) #### Email sent to requester on granted access requests ##### HTML Email ![11-group-request-access-granted-email-html](/uploads/b18949a6538168824f3d0c272d89dd81/11-group-request-access-granted-email-html.jpg) ##### Plain Email ![12-group-request-access-granted-email-plain](/uploads/c33c7847ab86eeab4b07714467573f63/12-group-request-access-granted-email-plain.jpg) See merge request !3798
| * Merge branch 'master' into 13948-access-request-to-projects-and-groupsDouwe Maan2016-06-1462-651/+1850
| |\ | | | | | | | | | | | | # Conflicts: # app/views/layouts/nav/_project.html.haml
| * | UI and copywriting improvements13948-access-request-to-projects-and-groupsRémy Coutable2016-06-1474-839/+775
| | | | | | | | | | | | | | | | | | | | | | | | | | | + Move 'Edit Project/Group' out of membership-related partial + Show the access request buttons only to logged-in users + Put the request access buttons out of in a more visible button + Improve the copy in the #remove_member_message helper Signed-off-by: Rémy Coutable <remy@rymai.me>
| * | Factorize members mails into a new Emails::Members moduleRémy Coutable2016-06-1435-299/+355
| | | | | | | | | | | | Signed-off-by: Rémy Coutable <remy@rymai.me>
| * | Factorize access request routes into a new :access_requestable route concernRémy Coutable2016-06-144-19/+10
| | | | | | | | | | | | Signed-off-by: Rémy Coutable <remy@rymai.me>
| * | Factorize #request_access and #approve_access_request into a new ↵Rémy Coutable2016-06-146-37/+77
| | | | | | | | | | | | | | | | | | AccessRequestActions controller concern Signed-off-by: Rémy Coutable <remy@rymai.me>
| * | Add request access for groupsRémy Coutable2016-06-1476-572/+1767
| | | | | | | | | | | | Signed-off-by: Rémy Coutable <remy@rymai.me>
| * | Initial implementation of user access request to projectsDavid Alexander2016-06-1419-14/+248
| | |
* | | Merge branch '18449-instrument-grape-endpoints' into 'master' Yorick Peterse2016-06-142-1/+53
|\ \ \ | | | | | | | | | | | | | | | | Instrument Grape API endpoints See merge request !4587
| * | | Instrument Grape Endpoint with Metrics::RackMiddleware18449-instrument-grape-endpointsPaco Guzman2016-06-142-1/+53
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generating the following tags Grape#GET /projects/:id/archive from Grape::Route objects like { :path => /:version/projects/:id/archive(.:format) :version => “v3”, :method => “GET” } Use an instance variable to cache raw_path transformations. This variable is only going to growth to the number of endpoints of the API, not with exact different requests We can store this cache as an instance variable because middleware are initialised only once
* | | Merge branch '18527-instrument-private-methods' into 'master' Yorick Peterse2016-06-145-13/+63
|\ \ \ | |_|/ |/| | | | | | | | Instrument private methods and instance private methods See merge request !4639
| * | Instrument private/protected methodsPaco Guzman2016-06-145-13/+63
| | | | | | | | | | | | | | | | | | | | | By default instrumentation will instrument public, protected and private methods, because usually heavy work is done on private method or at least that’s what facts is showing
* | | Merge branch 'settings-dropdown-permissions' into 'master' Dmitriy Zaporozhets2016-06-142-49/+50
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix displaying of project settings links the user cannot access. ## What does this MR do? It fixes the Project Settings dropdown displaying project settings links that the user cannot actually access. ## Are there points in the code the reviewer needs to double check? I've tested combinations I can think of, feel free to mess around with and see if it breaks? ## Why was this MR needed? Users were seeing links in the Project Settings dropdown that they shouldn't have seen, if they clicked them they would be shown permission errors. ## What are the relevant issue numbers? #18294 ## Screenshots (if relevant) Users without any permissions: ![Screen_Shot_2016-06-10_at_10.41.27_AM](/uploads/b70ca18a36b5f774b85694d8f1728882/Screen_Shot_2016-06-10_at_10.41.27_AM.png) Guest members of the project: ![Screen_Shot_2016-06-10_at_10.48.36_AM](/uploads/a37986b4daa789063661c2fa8cf59d43/Screen_Shot_2016-06-10_at_10.48.36_AM.png) Full permissions: ![Screen_Shot_2016-06-10_at_10.41.57_AM](/uploads/4c5cc97962e69a1a72ee8e237591ec22/Screen_Shot_2016-06-10_at_10.41.57_AM.png) cc: @dzaporozhets @annabeldunstone @jschatz1 See merge request !4599
| * | | Pass can_edit and access to partial.Connor Shea2016-06-132-3/+1
| | | |
| * | | Fix a bug that allowed Guests to still see Settings links they couldn't access.Connor Shea2016-06-101-1/+2
| | | |
| * | | Fix displaying of project settings links the user cannot access.Connor Shea2016-06-102-48/+50
| | | |
* | | | Merge branch 'artifacts-expire-date' into 'master' Rémy Coutable2016-06-1427-265/+712
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Artifacts expire date What do you think @grzesiek? The syntax will be simple: ``` job: artifacts: expire_in: 7d ``` - [x] Implement `expire_in` - [x] Check current design of expiry information with @jschatz1 and @markpundsack - [x] Add tests in GitLab application for a `ExpireBuildArtifactsWorker` and for `ArtifactsController::keep` - [x] Add user documentation how to use `artifacts:expire_in` - [x] Prepare GitLab Runner changes to pass `expire_in`: gitlab-org/gitlab-ci-multi-runner!191 - [x] Fix `timeago` with help of @jschatz1 - [x] Merge latest master after builds view changes @iamphill - [ ] Add Omnibus support for `expire_build_artifacts_worker` cron job - [ ] Add documentation how to configure `expire_build_artifacts_worker` This is based on https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4201. See merge request !4200
| * | | | Fix Ci::Build#artifacts_expire_in= when assigning invalid durationartifacts-expire-dateKamil Trzcinski2016-06-141-1/+1
| | | | |
| * | | | Merge remote-tracking branch 'origin/master' into artifacts-expire-dateKamil Trzcinski2016-06-1425-122/+824
| |\ \ \ \
| * \ \ \ \ Merge remote-tracking branch 'origin/master' into artifacts-expire-dateKamil Trzcinski2016-06-1447-214/+372
| |\ \ \ \ \ | | | |_|_|/ | | |/| | |
| * | | | | Fix specsKamil Trzcinski2016-06-144-24/+28
| | | | | |
| * | | | | Fix keep action of build artifacts widgetKamil Trzcinski2016-06-131-1/+1
| | | | | |
| * | | | | Update db/schema.rbKamil Trzcinski2016-06-131-6/+6
| | | | | |
| * | | | | Merge remote-tracking branch 'origin/master' into artifacts-expire-dateKamil Trzcinski2016-06-134-5/+32
| |\ \ \ \ \
| * | | | | | Improve ExpireBuildArtifactsWorker specKamil Trzcinski2016-06-131-9/+4
| | | | | | |
| * | | | | | Merge remote-tracking branch 'origin/master' into artifacts-expire-dateKamil Trzcinski2016-06-1326-178/+621
| |\ \ \ \ \ \
| * | | | | | | Improve testsKamil Trzcinski2016-06-133-18/+12
| | | | | | | |
| * | | | | | | Fixed spacing with row below in build sidebarPhil Hughes2016-06-131-1/+1
| | | | | | | |
| * | | | | | | Added documentation to artifacts expireKamil Trzcinski2016-06-132-1/+36
| | | | | | | |
| * | | | | | | Improve design based on reviewKamil Trzcinski2016-06-139-292/+296
| | | | | | | |
| * | | | | | | Added missing span element around timePhil Hughes2016-06-131-3/+3
| | | | | | | |
| * | | | | | | Improve after reviewKamil Trzcinski2016-06-133-4/+5
| | | | | | | |
| * | | | | | | Displays time remaining relative to nowPhil Hughes2016-06-132-2/+9
| | | | | | | |
| * | | | | | | Save database after erasing artifactsKamil Trzcinski2016-06-131-0/+1
| | | | | | | |
| * | | | | | | Test ExpireBuildArtifactsWorkerKamil Trzcinski2016-06-132-1/+56
| | | | | | | |
| * | | | | | | Added keep artifacts API endpointKamil Trzcinski2016-06-133-0/+96
| | | | | | | |
| * | | | | | | Test controllers if they allow to keep artifactsKamil Trzcinski2016-06-133-1/+109
| | | | | | | |
| * | | | | | | Allow to show the time in the futureKamil Trzcinski2016-06-133-5/+9
| | | | | | | |
| * | | | | | | Show the artifacts expiration prompt in Build Artifacts widgetKamil Trzcinski2016-06-132-19/+20
| | | | | | | |
| * | | | | | | Remove keep_artifacts from BuildsControllerKamil Trzcinski2016-06-131-6/+0
| | | | | | | |
| * | | | | | | Validate existence of artifacts in ArtifactsController, render 404 if not foundKamil Trzcinski2016-06-131-6/+5
| | | | | | | |
| * | | | | | | Support expiration date in CI API when uploading artifactsKamil Trzcinski2016-06-133-1/+38
| | | | | | | |
| * | | | | | | Validate artifacts:expire_in in yaml processorKamil Trzcinski2016-06-132-2/+32
| | | | | | | |
| * | | | | | | Add artifacts_expire_in method for Ci::BuildKamil Trzcinski2016-06-131-0/+12
| | | | | | | |
| * | | | | | | Enable exceptions on ChronicDurationKamil Trzcinski2016-06-131-0/+1
| | | | | | | |
| * | | | | | | Added description of artifacts:whenKamil Trzcinski2016-06-131-0/+27
| | | | | | | |
| * | | | | | | Move keep to ArtifactsControllerKamil Trzcinski2016-06-137-20/+27
| | | | | | | |