summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Pope <mute.pop3+gitlab@gmail.com>2016-08-02 06:56:23 +0100
committerKeith Pope <mute.pop3+gitlab@gmail.com>2016-08-02 06:56:23 +0100
commit4768afbdbf85abbb5e2281c8855e7d27c07a581e (patch)
tree457ef4821e5095080a797be1d2733d00ed6c2cf3
parente299504b798c053817f1c866649542ac0c779924 (diff)
downloadgitlab-ce-4768afbdbf85abbb5e2281c8855e7d27c07a581e.tar.gz
Add simple identifier to public SSH keys
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/key.rb5
-rw-r--r--spec/models/key_spec.rb5
3 files changed, 7 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 9b66108c160..86bf05bfc08 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -18,6 +18,7 @@ v 8.11.0 (unreleased)
- Fix renaming repository when name contains invalid chararacters under project settings
- Optimize checking if a user has read access to a list of issues !5370
- Nokogiri's various parsing methods are now instrumented
+ - Add simple identifier to public SSH keys (muteor)
- Add a way to send an email and create an issue based on private personal token. Find the email address from issues page. !3363
- Add build event color in HipChat messages (David Eisner)
- Make fork counter always clickable. !5463 (winniehell)
diff --git a/app/models/key.rb b/app/models/key.rb
index b9bc38a0436..568a60b8af3 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -26,8 +26,9 @@ class Key < ActiveRecord::Base
end
def publishable_key
- # Removes anything beyond the keytype and key itself
- self.key.split[0..1].join(' ')
+ # Strip out the keys comment so we don't leak email addresses
+ # Replace with simple ident of user_name (hostname)
+ self.key.split[0..1].push("#{self.user_name} (#{Gitlab.config.gitlab.host})").join(' ')
end
# projects that has this key
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index 49cf3d8633a..a4d46ca84de 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -16,12 +16,13 @@ describe Key, models: true do
end
describe "Methods" do
+ let(:user) { create(:user) }
it { is_expected.to respond_to :projects }
it { is_expected.to respond_to :publishable_key }
describe "#publishable_keys" do
- it 'strips all personal information' do
- expect(build(:key).publishable_key).not_to match(/dummy@gitlab/)
+ it 'replaces SSH key comment with simple identifier of username + hostname' do
+ expect(build(:key, user: user).publishable_key).to match(/#{Regexp.escape(user.name)} \(localhost\)/)
end
end
end