returnredirect_back_or_admin_user(notice: _("The user you are trying to deactivate has been active in the past %{minimum_inactive_days} days and cannot be deactivated")%{minimum_inactive_days: ::User::MINIMUM_INACTIVE_DAYS})unlessuser.can_be_deactivated?
Follow [this issue](https://gitlab.com/gitlab-org/gitlab/issues/12267) to
Follow [this issue](https://gitlab.com/gitlab-org/gitlab/issues/12267) to
track progress on this issue.
track progress on this issue.
### Merge Train Pipeline cannot be retried
A Merge Train pipeline cannot be retried because the merge request is dropped from the merge train upon failure. For this reason, the retry button does not appear next to the pipeline icon.
In the case of pipeline failure, you should [re-enqueue](#how-to-add-a-merge-request-to-a-merge-train) the merge request to the merge train, which will then initiate a new pipeline.
### Merge Train disturbs your workflow
### Merge Train disturbs your workflow
First of all, please check if [merge immediately](#immediately-merge-a-merge-request-with-a-merge-train)
First of all, please check if [merge immediately](#immediately-merge-a-merge-request-with-a-merge-train)
@@ -25,7 +25,7 @@ Google account (for example, one that you use to access Gmail, Drive, etc.) or c
...
@@ -25,7 +25,7 @@ Google account (for example, one that you use to access Gmail, Drive, etc.) or c
TIP: **Tip:**
TIP: **Tip:**
Every new Google Cloud Platform (GCP) account receives [$300 in credit](https://console.cloud.google.com/freetrial),
Every new Google Cloud Platform (GCP) account receives [$300 in credit](https://console.cloud.google.com/freetrial),
and in partnership with Google, GitLab is able to offer an additional $200 for new GCP accounts to get started with GitLab's
and in partnership with Google, GitLab is able to offer an additional $200 for new GCP accounts to get started with GitLab's
Google Kubernetes Engine Integration. All you have to do is [follow this link](https://goo.gl/AaJzRW) and apply for credit.
Google Kubernetes Engine Integration. All you have to do is [follow this link](https://cloud.google.com/partners/partnercredit/?PCN=a0n60000006Vpz4AAC) and apply for credit.
[altssh]:https://about.gitlab.com/2016/02/18/gitlab-dot-com-now-supports-an-alternate-git-plus-ssh-port/"GitLab.com now supports an alternate git+ssh port"
[altssh]:https://about.gitlab.com/2016/02/18/gitlab-dot-com-now-supports-an-alternate-git-plus-ssh-port/"GitLab.com now supports an alternate git+ssh port"
@@ -105,13 +105,13 @@ NOTE: **Note:** GitLab is unable to provide support for IdPs that are not listed
...
@@ -105,13 +105,13 @@ NOTE: **Note:** GitLab is unable to provide support for IdPs that are not listed
| Provider | Documentation |
| Provider | Documentation |
|----------|---------------|
|----------|---------------|
| ADFS (Active Directory Federation Services) | [Create a Relying Party Trust](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust) |
| ADFS (Active Directory Federation Services) | [Create a Relying Party Trust](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust) |
| Azure | [Configuring single sign-on to applications](https://docs.microsoft.com/en-us/azure/active-directory/active-directory-saas-custom-apps) |
| Azure | [Configuring single sign-on to applications](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-single-sign-on-non-gallery-applications) |
| Auth0 | [Auth0 as Identity Provider](https://auth0.com/docs/protocols/saml/saml-idp-generic) |
| Auth0 | [Auth0 as Identity Provider](https://auth0.com/docs/protocols/saml/saml-idp-generic) |
| G Suite | [Set up your own custom SAML application](https://support.google.com/a/answer/6087519?hl=en) |
| G Suite | [Set up your own custom SAML application](https://support.google.com/a/answer/6087519?hl=en) |
| JumpCloud | [Single Sign On (SSO) with GitLab](https://support.jumpcloud.com/customer/en/portal/articles/2810701-single-sign-on-sso-with-gitlab) |
| JumpCloud | [Single Sign On (SSO) with GitLab](https://support.jumpcloud.com/customer/en/portal/articles/2810701-single-sign-on-sso-with-gitlab) |
| Okta | [Setting up a SAML application in Okta](https://developer.okta.com/standards/SAML/setting_up_a_saml_application_in_okta) |
| Okta | [Setting up a SAML application in Okta](https://developer.okta.com/docs/guides/saml-application-setup/overview/) |
| OneLogin | [Use the OneLogin SAML Test Connector](https://onelogin.service-now.com/support?id=kb_article&sys_id=93f95543db109700d5505eea4b96198f) |
| OneLogin | [Use the OneLogin SAML Test Connector](https://onelogin.service-now.com/support?id=kb_article&sys_id=93f95543db109700d5505eea4b96198f) |
| Ping Identity | [Add and configure a new SAML application](https://docs.pingidentity.com/bundle/p1_enterpriseConfigSsoSaml_cas/page/enableAppWithoutURL.html) |
| Ping Identity | [Add and configure a new SAML application](https://support.pingidentity.com/s/document-item?bundleId=pingone&topicId=xsh1564020480660-1.html) |
## Linking SAML to your existing GitLab.com account
## Linking SAML to your existing GitLab.com account
Syntax highlighting is only supported in code blocks, it is not possible to highlight
Syntax highlighting is only supported in code blocks, it is not possible to highlight
code when it is inline.
code when it is inline.
...
@@ -922,7 +922,7 @@ Here's a sample audio clip:
...
@@ -922,7 +922,7 @@ Here's a sample audio clip:
You can also use raw HTML in your Markdown, and it'll usually work pretty well.
You can also use raw HTML in your Markdown, and it'll usually work pretty well.
See the documentation for HTML::Pipeline's [SanitizationFilter](http://www.rubydoc.info/gems/html-pipeline/1.11.0/HTML/Pipeline/SanitizationFilter#WHITELIST-constant)
See the documentation for HTML::Pipeline's [SanitizationFilter](https://www.rubydoc.info/gems/html-pipeline/1.11.0/HTML/Pipeline/SanitizationFilter#WHITELIST-constant)
class for the list of allowed HTML tags and attributes. In addition to the default
class for the list of allowed HTML tags and attributes. In addition to the default
`SanitizationFilter` whitelist, GitLab allows `span`, `abbr`, `details` and `summary` elements.
`SanitizationFilter` whitelist, GitLab allows `span`, `abbr`, `details` and `summary` elements.
...
@@ -1126,8 +1126,8 @@ Using references:
...
@@ -1126,8 +1126,8 @@ Using references:
Some text to show that the reference links can follow later.
Some text to show that the reference links can follow later.
@@ -112,7 +112,7 @@ There are two options when adding a new cluster to your project:
...
@@ -112,7 +112,7 @@ There are two options when adding a new cluster to your project:
TIP: **Tip:**
TIP: **Tip:**
Every new Google Cloud Platform (GCP) account receives [$300 in credit upon sign up](https://console.cloud.google.com/freetrial),
Every new Google Cloud Platform (GCP) account receives [$300 in credit upon sign up](https://console.cloud.google.com/freetrial),
and in partnership with Google, GitLab is able to offer an additional $200 for new GCP accounts to get started with GitLab's
and in partnership with Google, GitLab is able to offer an additional $200 for new GCP accounts to get started with GitLab's
Google Kubernetes Engine Integration. All you have to do is [follow this link](https://goo.gl/AaJzRW) and apply for credit.
Google Kubernetes Engine Integration. All you have to do is [follow this link](https://cloud.google.com/partners/partnercredit/?PCN=a0n60000006Vpz4AAC) and apply for credit.
NOTE: **Note:**
NOTE: **Note:**
The [Google authentication integration](../../../integration/google.md) must
The [Google authentication integration](../../../integration/google.md) must
...
@@ -390,8 +390,8 @@ you can either:
...
@@ -390,8 +390,8 @@ you can either:
When creating a cluster in GitLab, you will be asked if you would like to create either:
When creating a cluster in GitLab, you will be asked if you would like to create either:
- An [Attribute-based access control (ABAC)](https://kubernetes.io/docs/admin/authorization/abac/) cluster.
- An [Attribute-based access control (ABAC)](https://kubernetes.io/docs/reference/access-authn-authz/abac/) cluster.
- A [Role-based access control (RBAC)](https://kubernetes.io/docs/admin/authorization/rbac/) cluster.
- A [Role-based access control (RBAC)](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) cluster.
NOTE: **Note:**
NOTE: **Note:**
[RBAC](#rbac-cluster-resources) is recommended and the GitLab default.
[RBAC](#rbac-cluster-resources) is recommended and the GitLab default.
To set up a mirror from GitLab to GitHub, you need to follow these steps:
To set up a mirror from GitLab to GitHub, you need to follow these steps:
1. Create a [GitHub personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) with the `public_repo` box checked.
1. Create a [GitHub personal access token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) with the `public_repo` box checked.
1. Fill in the **Git repository URL** field using this format: `https://<your_github_username>@github.com/<your_github_group>/<your_github_project>.git`.
1. Fill in the **Git repository URL** field using this format: `https://<your_github_username>@github.com/<your_github_group>/<your_github_project>.git`.
1. Fill in **Password** field with your GitHub personal access token.
1. Fill in **Password** field with your GitHub personal access token.
1. Click the **Mirror repository** button.
1. Click the **Mirror repository** button.
...
@@ -197,10 +197,10 @@ Assuming you used the former, you now need to verify that the fingerprints are
...
@@ -197,10 +197,10 @@ Assuming you used the former, you now need to verify that the fingerprints are
those you expect. GitLab.com and other code hosting sites publish their
those you expect. GitLab.com and other code hosting sites publish their
Bidirectional mirroring should not be used as a permanent configuration. Refer to
Bidirectional mirroring should not be used as a permanent configuration. Refer to
[Migrating from Perforce Helix](../user/project/import/perforce.md) for alternative migration approaches.
[Migrating from Perforce Helix](../user/project/import/perforce.md) for alternative migration approaches.
[Git Fusion](https://www.perforce.com/video-tutorials/git-fusion-overview) provides a Git interface
[Git Fusion](https://www.perforce.com/manuals/git-fusion/#Git-Fusion/section_avy_hyc_gl.html) provides a Git interface
to [Perforce Helix](https://www.perforce.com/products) which can be used by GitLab to bidirectionally
to [Perforce Helix](https://www.perforce.com/products) which can be used by GitLab to bidirectionally
mirror projects with GitLab. This may be useful in some situations when migrating from Perforce Helix
mirror projects with GitLab. This may be useful in some situations when migrating from Perforce Helix
to GitLab where overlapping Perforce Helix workspaces cannot be migrated simultaneously to GitLab.
to GitLab where overlapping Perforce Helix workspaces cannot be migrated simultaneously to GitLab.
...
@@ -415,7 +415,7 @@ settings are recommended:
...
@@ -415,7 +415,7 @@ settings are recommended:
-`unknown_git` user will be used as the commit author if the GitLab user does not exist in
-`unknown_git` user will be used as the commit author if the GitLab user does not exist in
Perforce Helix.
Perforce Helix.
Read about [Git Fusion settings on Perforce.com](https://www.perforce.com/perforce/doc.current/manuals/git-fusion/Content/Git-Fusion/section_vss_bdw_w3.html#section_zdp_zz1_3l).
Read about [Git Fusion settings on Perforce.com](https://www.perforce.com/manuals/git-fusion/Content/Git-Fusion/section_vss_bdw_w3.html#section_zdp_zz1_3l).
## Troubleshooting
## Troubleshooting
...
@@ -423,4 +423,4 @@ Should an error occur during a push, GitLab will display an "Error" highlight fo
...
@@ -423,4 +423,4 @@ Should an error occur during a push, GitLab will display an "Error" highlight fo
### 13:Received RST_STREAM with error code 2 with GitHub
### 13:Received RST_STREAM with error code 2 with GitHub
If you receive an "13:Received RST_STREAM with error code 2" while mirroring to a GitHub repository, your GitHub settings might be set to block pushes that expose your email address used in commits. Either set your email address on GitHub to be public, or disable the [Block command line pushes that expose my email](http://github.com/settings/emails) setting.
If you receive an "13:Received RST_STREAM with error code 2" while mirroring to a GitHub repository, your GitHub settings might be set to block pushes that expose your email address used in commits. Either set your email address on GitHub to be public, or disable the [Block command line pushes that expose my email](https://github.com/settings/emails) setting.
msgid "AdminArea| You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered."
msgstr ""
msgid "AdminArea| You are about to permanently delete the user %{username}. This will delete all of the issues, merge requests, and groups linked to them. To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered."
msgstr ""
msgid "AdminArea|Stop all jobs"
msgid "AdminArea|Stop all jobs"
msgstr ""
msgstr ""
...
@@ -1162,15 +1159,39 @@ msgstr ""
...
@@ -1162,15 +1159,39 @@ msgstr ""
msgid "AdminUsers|Admins"
msgid "AdminUsers|Admins"
msgstr ""
msgstr ""
msgid "AdminUsers|Block"
msgstr ""
msgid "AdminUsers|Block user"
msgid "AdminUsers|Block user"
msgstr ""
msgstr ""
msgid "AdminUsers|Block user %{username}?"
msgstr ""
msgid "AdminUsers|Blocked"
msgid "AdminUsers|Blocked"
msgstr ""
msgstr ""
msgid "AdminUsers|Blocking user has the following effects:"
msgid "AdminUsers|Deactivating a user has the following effects:"
msgstr ""
msgid "AdminUsers|Delete User %{username} and contributions?"
msgid "AdminUsers|Delete User %{username} and contributions?"
msgstr ""
msgstr ""
...
@@ -1195,6 +1216,21 @@ msgstr ""
...
@@ -1195,6 +1216,21 @@ msgstr ""
msgid "AdminUsers|No users found"
msgid "AdminUsers|No users found"
msgstr ""
msgstr ""
msgid "AdminUsers|Owned groups will be left"
msgstr ""
msgid "AdminUsers|Personal projects will be left"
msgstr ""
msgid "AdminUsers|Personal projects, group and user history will be left intact"
msgstr ""
msgid "AdminUsers|Reactivating a user will:"
msgstr ""
msgid "AdminUsers|Restore user access to the account, including web, Git and API."
msgstr ""
msgid "AdminUsers|Search by name, email or username"
msgid "AdminUsers|Search by name, email or username"
msgstr ""
msgstr ""
...
@@ -1207,18 +1243,42 @@ msgstr ""
...
@@ -1207,18 +1243,42 @@ msgstr ""
msgid "AdminUsers|Sort by"
msgid "AdminUsers|Sort by"
msgstr ""
msgstr ""
msgid "AdminUsers|The user will be logged out"
msgstr ""
msgid "AdminUsers|The user will not be able to access git repositories"
msgstr ""
msgid "AdminUsers|The user will not be able to access the API"
msgstr ""
msgid "AdminUsers|The user will not receive any notifications"
msgstr ""
msgid "AdminUsers|To confirm, type %{projectName}"
msgid "AdminUsers|To confirm, type %{projectName}"
msgstr ""
msgstr ""
msgid "AdminUsers|To confirm, type %{username}"
msgid "AdminUsers|To confirm, type %{username}"
msgstr ""
msgstr ""
msgid "AdminUsers|User will be blocked"
msgid "AdminUsers|User will not be able to access git repositories"
msgstr ""
msgid "AdminUsers|User will not be able to login"
msgstr ""
msgid "AdminUsers|When the user logs back in, their account will reactivate as a fully active account"
msgstr ""
msgstr ""
msgid "AdminUsers|Without projects"
msgid "AdminUsers|Without projects"
msgstr ""
msgstr ""
msgid "AdminUsers|You are about to permanently delete the user %{username}. Issues, merge requests, and groups linked to them will be transferred to a system-wide \"Ghost-user\". To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered."
msgstr ""
msgid "AdminUsers|You are about to permanently delete the user %{username}. This will delete all of the issues, merge requests, and groups linked to them. To avoid data loss, consider using the %{strong_start}block user%{strong_end} feature instead. Once you %{strong_start}Delete user%{strong_end}, it cannot be undone or recovered."
msgstr ""
msgid "Advanced"
msgid "Advanced"
msgstr ""
msgstr ""
...
@@ -1796,9 +1856,6 @@ msgstr ""
...
@@ -1796,9 +1856,6 @@ msgstr ""
msgid "Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>"
msgid "Archiving the project will make it entirely read-only. It is hidden from the dashboard and doesn't show up in searches. <strong>The repository cannot be committed to, and no issues, comments or other entities can be created.</strong>"
msgstr ""
msgstr ""
msgid "Are you sure"
msgstr ""
msgid "Are you sure that you want to archive this project?"
msgid "Are you sure that you want to archive this project?"
msgstr ""
msgstr ""
...
@@ -2367,9 +2424,6 @@ msgstr ""
...
@@ -2367,9 +2424,6 @@ msgstr ""
msgid "Bitbucket import"
msgid "Bitbucket import"
msgstr ""
msgstr ""
msgid "Block"
msgstr ""
msgid "Blocked"
msgid "Blocked"
msgstr ""
msgstr ""
...
@@ -6273,6 +6327,12 @@ msgstr ""
...
@@ -6273,6 +6327,12 @@ msgstr ""
msgid "Error occurred while updating the issue weight"
msgid "Error occurred while updating the issue weight"
msgstr ""
msgstr ""
msgid "Error occurred. A blocked user cannot be deactivated"
msgstr ""
msgid "Error occurred. A blocked user must be unblocked to be activated"
msgstr ""
msgid "Error occurred. User was not blocked"
msgid "Error occurred. User was not blocked"
msgstr ""
msgstr ""
...
@@ -15526,12 +15586,18 @@ msgstr ""
...
@@ -15526,12 +15586,18 @@ msgstr ""
msgid "Subtracts"
msgid "Subtracts"
msgstr ""
msgstr ""
msgid "Successfully activated"
msgstr ""
msgid "Successfully blocked"
msgid "Successfully blocked"
msgstr ""
msgstr ""
msgid "Successfully confirmed"
msgid "Successfully confirmed"
msgstr ""
msgstr ""
msgid "Successfully deactivated"
msgstr ""
msgid "Successfully deleted U2F device."
msgid "Successfully deleted U2F device."
msgstr ""
msgstr ""
...
@@ -16128,6 +16194,9 @@ msgstr ""
...
@@ -16128,6 +16194,9 @@ msgstr ""
msgid "The user map is a mapping of the FogBugz users that participated on your projects to the way their email address and usernames will be imported into GitLab. You can change this by populating the table below."
msgid "The user map is a mapping of the FogBugz users that participated on your projects to the way their email address and usernames will be imported into GitLab. You can change this by populating the table below."
msgstr ""
msgstr ""
msgid "The user you are trying to deactivate has been active in the past %{minimum_inactive_days} days and cannot be deactivated"
msgstr ""
msgid "The user-facing URL of the Geo node"
msgid "The user-facing URL of the Geo node"
msgstr ""
msgstr ""
...
@@ -18175,6 +18244,9 @@ msgstr ""
...
@@ -18175,6 +18244,9 @@ msgstr ""
msgid "Weight %{weight}"
msgid "Weight %{weight}"
msgstr ""
msgstr ""
msgid "Welcome back! Your account had been deactivated due to inactivity but is now reactivated."
msgstr ""
msgid "Welcome to GitLab"
msgid "Welcome to GitLab"
msgstr ""
msgstr ""
...
@@ -18792,6 +18864,9 @@ msgstr ""
...
@@ -18792,6 +18864,9 @@ msgstr ""
msgid "Your access request to the %{source_type} has been withdrawn."
msgid "Your access request to the %{source_type} has been withdrawn."
msgstr ""
msgstr ""
msgid "Your account has been deactivated by your administrator. Please log back in to reactivate your account."
msgstr ""
msgid "Your account uses dedicated credentials for the \"%{group_name}\" group and can only be updated through SSO."
msgid "Your account uses dedicated credentials for the \"%{group_name}\" group and can only be updated through SSO."
@@ -33,5 +33,13 @@ describe Gitlab::Auth::UserAccessDeniedReason do
...
@@ -33,5 +33,13 @@ describe Gitlab::Auth::UserAccessDeniedReason do
it{is_expected.tomatch/This action cannot be performed by internal users/}
it{is_expected.tomatch/This action cannot be performed by internal users/}
end
end
context'when the user is deactivated'do
beforedo
user.deactivate!
end
it{is_expected.toeq"Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}"}
@@ -541,6 +541,13 @@ describe Gitlab::GitAccess do
...
@@ -541,6 +541,13 @@ describe Gitlab::GitAccess do
expect{pull_access_check}.toraise_unauthorized('Your account has been blocked.')
expect{pull_access_check}.toraise_unauthorized('Your account has been blocked.')
end
end
it'disallows deactivated users to pull'do
project.add_maintainer(user)
user.deactivate!
expect{pull_access_check}.toraise_unauthorized("Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}")
end
context'when the project repository does not exist'do
context'when the project repository does not exist'do
it'returns not found'do
it'returns not found'do
project.add_guest(user)
project.add_guest(user)
...
@@ -925,6 +932,12 @@ describe Gitlab::GitAccess do
...
@@ -925,6 +932,12 @@ describe Gitlab::GitAccess do
project.add_developer(user)
project.add_developer(user)
end
end
it'does not allow deactivated users to push'do
user.deactivate!
expect{push_access_check}.toraise_unauthorized("Your account has been deactivated by your administrator. Please log back in from a web browser to reactivate your account at #{Gitlab.config.gitlab.url}")
expect(json_response['message']).toeq("403 Forbidden - The user you are trying to deactivate has been active in the past #{::User::MINIMUM_INACTIVE_DAYS} days and cannot be deactivated")
expect(user.reload.state).toeq('active')
end
end
end
context'for a deactivated user'do
beforedo
user.deactivate
postapi("/users/#{user.id}/deactivate",admin)
end
it'returns 201'do
expect(response).tohave_gitlab_http_status(201)
expect(user.reload.state).toeq('deactivated')
end
end
context'for a blocked user'do
beforedo
user.block
postapi("/users/#{user.id}/deactivate",admin)
end
it'returns 403'do
expect(response).tohave_gitlab_http_status(403)
expect(json_response['message']).toeq('403 Forbidden - A blocked user cannot be deactivated by the API')
expect(user.reload.state).toeq('blocked')
end
end
context'for a ldap blocked user'do
beforedo
user.ldap_block
postapi("/users/#{user.id}/deactivate",admin)
end
it'returns 403'do
expect(response).tohave_gitlab_http_status(403)
expect(json_response['message']).toeq('403 Forbidden - A blocked user cannot be deactivated by the API')