Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
a9b31786
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a9b31786
编写于
9月 11, 2017
作者:
B
Brett Walker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make GPG signature verification work with non-primary email (#36959)
上级
4457ae82
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
68 addition
and
22 deletion
+68
-22
app/models/user.rb
app/models/user.rb
+11
-4
doc/user/project/repository/gpg_signed_commits/index.md
doc/user/project/repository/gpg_signed_commits/index.md
+2
-2
spec/factories/emails.rb
spec/factories/emails.rb
+2
-0
spec/models/gpg_key_spec.rb
spec/models/gpg_key_spec.rb
+11
-2
spec/models/user_spec.rb
spec/models/user_spec.rb
+42
-14
未找到文件。
app/models/user.rb
浏览文件 @
a9b31786
...
...
@@ -817,6 +817,17 @@ class User < ActiveRecord::Base
all_emails
end
def
all_verified_emails
verified_emails
=
[]
verified_emails
<<
email
if
confirmed?
&&
!
temp_oauth_email?
verified_emails
.
concat
(
emails
.
select
{
|
e
|
e
.
confirmed?
}.
map
(
&
:email
))
verified_emails
end
def
verified_email?
(
email
)
all_verified_emails
.
include?
(
email
)
end
def
hook_attrs
{
name:
name
,
...
...
@@ -1041,10 +1052,6 @@ class User < ActiveRecord::Base
ensure_rss_token!
end
def
verified_email?
(
email
)
self
.
email
==
email
end
def
sync_attribute?
(
attribute
)
return
true
if
ldap_user?
&&
attribute
==
:email
...
...
doc/user/project/repository/gpg_signed_commits/index.md
浏览文件 @
a9b31786
...
...
@@ -26,7 +26,7 @@ to be uploaded to GitLab. For a signature to be verified three conditions need
to be met:
1.
The public key needs to be added your GitLab account
1.
One of the emails in the GPG key matches
your
**primary**
email
1.
One of the emails in the GPG key matches
a
**verified**
email address you use in GitLab
1.
The committer's email matches the verified email from the gpg key
## Generating a GPG key
...
...
@@ -94,7 +94,7 @@ started:
```
1.
Enter you real name, the email address to be associated with this key (should
match
the primary
email address you use in GitLab) and an optional comment
match
a verified
email address you use in GitLab) and an optional comment
(press
<kbd>
Enter
</kbd>
to skip):
```
...
...
spec/factories/emails.rb
浏览文件 @
a9b31786
...
...
@@ -2,5 +2,7 @@ FactoryGirl.define do
factory
:email
do
user
email
{
generate
(
:email_alias
)
}
trait
(
:confirmed
)
{
confirmed_at
Time
.
now
}
end
end
spec/models/gpg_key_spec.rb
浏览文件 @
a9b31786
...
...
@@ -88,12 +88,21 @@ describe GpgKey do
describe
'#emails_with_verified_status'
do
it
'email is verified if the user has the matching email'
do
user
=
create
:user
,
email:
'bette.cartwright@example.com'
user
=
create
:user
,
email:
'bette.cartwright@example.com'
gpg_key
=
create
:gpg_key
,
key:
GpgHelpers
::
User2
.
public_key
,
user:
user
email_unconfirmed
=
create
:email
,
user:
user
user
.
reload
expect
(
gpg_key
.
emails_with_verified_status
).
to
eq
(
'bette.cartwright@example.com'
=>
true
,
'bette.cartwright@example.net'
=>
false
)
email_confirmed
=
create
:email
,
:confirmed
,
user:
user
,
email:
'bette.cartwright@example.net'
user
.
reload
expect
(
gpg_key
.
emails_with_verified_status
).
to
eq
(
'bette.cartwright@example.com'
=>
true
,
'bette.cartwright@example.net'
=>
fals
e
'bette.cartwright@example.net'
=>
tru
e
)
end
end
...
...
spec/models/user_spec.rb
浏览文件 @
a9b31786
...
...
@@ -1093,6 +1093,48 @@ describe User do
end
end
describe
'#all_emails'
do
let
(
:user
)
{
create
(
:user
)
}
it
'returns all emails'
do
email_confirmed
=
create
:email
,
user:
user
,
confirmed_at:
Time
.
now
email_unconfirmed
=
create
:email
,
user:
user
user
.
reload
expect
(
user
.
all_emails
).
to
eq
([
user
.
email
,
email_unconfirmed
.
email
,
email_confirmed
.
email
])
end
end
describe
'#all_verified_emails'
do
let
(
:user
)
{
create
(
:user
)
}
it
'returns only confirmed emails'
do
email_confirmed
=
create
:email
,
user:
user
,
confirmed_at:
Time
.
now
email_unconfirmed
=
create
:email
,
user:
user
user
.
reload
expect
(
user
.
all_verified_emails
).
to
eq
([
user
.
email
,
email_confirmed
.
email
])
end
end
describe
'#verified_email?'
do
let
(
:user
)
{
create
(
:user
)
}
it
'returns true when the email is verified/confirmed'
do
email_confirmed
=
create
:email
,
user:
user
,
confirmed_at:
Time
.
now
email_unconfirmed
=
create
:email
,
user:
user
user
.
reload
expect
(
user
.
verified_email?
(
user
.
email
)).
to
be_truthy
expect
(
user
.
verified_email?
(
email_confirmed
.
email
)).
to
be_truthy
end
it
'returns false when the email is not verified/confirmed'
do
email_unconfirmed
=
create
:email
,
user:
user
user
.
reload
expect
(
user
.
verified_email?
(
email_unconfirmed
.
email
)).
to
be_falsy
end
end
describe
'#requires_ldap_check?'
do
let
(
:user
)
{
described_class
.
new
}
...
...
@@ -2073,20 +2115,6 @@ describe User do
end
end
describe
'#verified_email?'
do
it
'returns true when the email is the primary email'
do
user
=
build
:user
,
email:
'email@example.com'
expect
(
user
.
verified_email?
(
'email@example.com'
)).
to
be
true
end
it
'returns false when the email is not the primary email'
do
user
=
build
:user
,
email:
'email@example.com'
expect
(
user
.
verified_email?
(
'other_email@example.com'
)).
to
be
false
end
end
describe
'#sync_attribute?'
do
let
(
:user
)
{
described_class
.
new
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录