Skip to content
Snippets Groups Projects
Commit 4436bf78 authored by Robert Speicher's avatar Robert Speicher
Browse files

Merge remote-tracking branch 'ce/8-0-stable' into 8-0-stable-ee

parents 4b908782 03e44764
No related branches found
No related tags found
No related merge requests found
Pipeline #
Please view this file on the master branch, on stable branches it's out of date.
 
v 8.0.5
- Correct lookup-by-email for LDAP logins
- Fix loading spinner sometimes not being hidden on Merge Request tab switches
v 8.0.4
- Fix Message-ID header to be RFC 2111-compliant to prevent e-mails being dropped (Stan Hu)
- Fix referrals for :back and relative URL installs
Loading
Loading
8.0.4-ee
\ No newline at end of file
8.0.4-ee
Loading
Loading
@@ -69,7 +69,7 @@ class @MergeRequestTabs
scrollToElement: (container) ->
if window.location.hash
top = $(container + " " + window.location.hash).offset().top
$('body').scrollTo(top);
$('body').scrollTo(top)
 
# Activate a tab based on the current action
activateTab: (action) ->
Loading
Loading
@@ -139,13 +139,16 @@ class @MergeRequestTabs
@diffsLoaded = true
@scrollToElement(".diffs")
 
toggleLoading: ->
$('.mr-loading-status .loading').toggle()
# Show or hide the loading spinner
#
# status - Boolean, true to show, false to hide
toggleLoading: (status) ->
$('.mr-loading-status .loading').toggle(status)
 
_get: (options) ->
defaults = {
beforeSend: @toggleLoading
complete: @toggleLoading
beforeSend: => @toggleLoading(true)
complete: => @toggleLoading(false)
dataType: 'json'
type: 'GET'
}
Loading
Loading
Loading
Loading
@@ -9,7 +9,7 @@
# # Whether the IMAP server uses StartTLS
# :start_tls: false
# # Email account username. Usually the full email address.
# :email: "replies@gitlab.example.com"
# :email: "gitlab-incoming@gmail.com"
# # Email account password
# :password: "password"
# # The name of the mailbox where incoming mail will end up. Usually "inbox".
Loading
Loading
Loading
Loading
@@ -16,24 +16,35 @@ To set up a basic Postfix mail server with IMAP access on Ubuntu, follow [these
 
## Set it up
 
In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
### Omnibus package installations
 
1. Find the `incoming_email` section in `/etc/gitlab/gitlab.rb`, enable the feature, enter the email address including a placeholder for the `key` that references the item being replied to and fill in the details for your specific IMAP server and email account:
 
```ruby
# Postfix mail server, assumes mailbox incoming@gitlab.example.com
gitlab_rails['incoming_email_enabled'] = true
gitlab_rails['incoming_email_address'] = "incoming+%{key}@gitlab.example.com"
gitlab_rails['incoming_email_host'] = "gitlab.example.com" # IMAP server host
gitlab_rails['incoming_email_port'] = 143 # IMAP server port
gitlab_rails['incoming_email_ssl'] = false # Whether the IMAP server uses SSL
gitlab_rails['incoming_email_email'] = "incoming" # Email account username. Usually the full email address.
gitlab_rails['incoming_email_password'] = "[REDACTED]" # Email account password
gitlab_rails['incoming_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox".
```
```ruby
# Gmail / Google Apps, assumes mailbox gitlab-incoming@gmail.com
gitlab_rails['incoming_email_enabled'] = true
gitlab_rails['incoming_email_address'] = "gitlab-incoming+%{key}@gmail.com"
gitlab_rails['incoming_email_host'] = "imap.gmail.com" # IMAP server host
gitlab_rails['incoming_email_port'] = 993 # IMAP server port
gitlab_rails['incoming_email_ssl'] = true # Whether the IMAP server uses SSL
gitlab_rails['incoming_email_email'] = "gitlab-incoming@gmail.com" # Email account username. Usually the full email address.
gitlab_rails['incoming_email_password'] = "password" # Email account password
gitlab_rails['incoming_email_password'] = "[REDACTED]" # Email account password
gitlab_rails['incoming_email_mailbox_name'] = "inbox" # The name of the mailbox where incoming mail will end up. Usually "inbox".
```
 
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-incoming@gmail.com`.
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `incoming@gitlab.example.com`/`gitlab-incoming@gmail.com`.
 
1. Reconfigure GitLab for the changes to take effect:
 
Loading
Loading
@@ -64,12 +75,20 @@ In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
```
 
```yaml
# Postfix mail server, assumes mailbox incoming@gitlab.example.com
incoming_email:
enabled: true
address: "incoming+%{key}@gitlab.example.com"
```
```yaml
# Gmail / Google Apps, assumes mailbox gitlab-incoming@gmail.com
incoming_email:
enabled: true
address: "gitlab-incoming+%{key}@gmail.com"
```
 
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `gitlab-incoming@gmail.com`.
As mentioned, the part after `+` in the address is ignored, and any email sent here will end up in the mailbox for `incoming@gitlab.example.com`/`gitlab-incoming@gmail.com`.
 
2. Copy `config/mail_room.yml.example` to `config/mail_room.yml`:
 
Loading
Loading
@@ -84,6 +103,40 @@ In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
```
 
```yaml
# Postfix mail server
:mailboxes:
-
# IMAP server host
:host: "gitlab.example.com"
# IMAP server port
:port: 143
# Whether the IMAP server uses SSL
:ssl: false
# Whether the IMAP server uses StartTLS
:start_tls: false
# Email account username. Usually the full email address.
:email: "incoming"
# Email account password
:password: "[REDACTED]"
# The name of the mailbox where incoming mail will end up. Usually "inbox".
:name: "inbox"
# Always "sidekiq".
:delivery_method: sidekiq
# Always true.
:delete_after_delivery: true
:delivery_options:
# The URL to the Redis server used by Sidekiq. Should match the URL in config/resque.yml.
:redis_url: redis://localhost:6379
# Always "resque:gitlab".
:namespace: resque:gitlab
# Always "incoming_email".
:queue: incoming_email
# Always "EmailReceiverWorker"
:worker: EmailReceiverWorker
```
```yaml
# Gmail / Google Apps
:mailboxes:
-
# IMAP server host
Loading
Loading
@@ -143,6 +196,7 @@ In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
1. Find the `incoming_email` section in `config/gitlab.yml`, enable the feature and enter the email address including a placeholder for the `key` that references the item being replied to:
 
```yaml
# Gmail / Google Apps, assumes mailbox gitlab-incoming@gmail.com
incoming_email:
enabled: true
address: "gitlab-incoming+%{key}@gmail.com"
Loading
Loading
@@ -159,6 +213,7 @@ In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
3. Uncomment the configuration options in `config/mail_room.yml` and fill in the details for your specific IMAP server and email account:
 
```yaml
# Gmail / Google Apps, assumes mailbox gitlab-incoming@gmail.com
:mailboxes:
-
# IMAP server host
Loading
Loading
@@ -208,4 +263,4 @@ In this example, we'll use the Gmail address `gitlab-incoming@gmail.com`.
bundle exec rake gitlab:incoming_email:check RAILS_ENV=development
```
 
8. Reply by email should now be working.
\ No newline at end of file
8. Reply by email should now be working.
Loading
Loading
@@ -37,7 +37,7 @@ def find_by_uid_and_provider
end
 
def find_by_email
::User.find_by(email: auth_hash.email)
::User.find_by(email: auth_hash.email.downcase)
end
 
def update_user_attributes
Loading
Loading
Loading
Loading
@@ -13,6 +13,17 @@
let(:auth_hash) do
OmniAuth::AuthHash.new(uid: 'my-uid', provider: 'ldapmain', info: info)
end
let(:ldap_user_upper_case) { Gitlab::LDAP::User.new(auth_hash_upper_case) }
let(:info_upper_case) do
{
name: 'John',
email: 'John@Example.com', # Email address has upper case chars
nickname: 'john'
}
end
let(:auth_hash_upper_case) do
OmniAuth::AuthHash.new(uid: 'my-uid', provider: 'ldapmain', info: info_upper_case)
end
 
describe :changed? do
it "marks existing ldap user as changed" do
Loading
Loading
@@ -57,6 +68,16 @@
expect(existing_user.id).to eql ldap_user.gl_user.id
end
 
it 'connects to existing ldap user if the extern_uid changes and email address has upper case characters' do
existing_user = create(:omniauth_user, email: 'john@example.com', extern_uid: 'old-uid', provider: 'ldapmain')
expect{ ldap_user_upper_case.save }.not_to change{ User.count }
existing_user.reload
expect(existing_user.ldap_identity.extern_uid).to eql 'my-uid'
expect(existing_user.ldap_identity.provider).to eql 'ldapmain'
expect(existing_user.id).to eql ldap_user.gl_user.id
end
it 'maintains an identity per provider' do
existing_user = create(:omniauth_user, email: 'john@example.com', provider: 'twitter')
expect(existing_user.identities.count).to eql(1)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment