Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
b8720e81ba17
Commit
1dcb7111
authored
Sep 27, 2017
by
James Lopez
Browse files
refactor emails service
parent
ea44e4a29e0d
Changes
7
Hide whitespace changes
Inline
Side-by-side
app/controllers/admin/users_controller.rb
View file @
b8720e81
...
...
@@ -155,7 +155,7 @@ def destroy
def
remove_email
email
=
user
.
emails
.
find
(
params
[
:email_id
])
success
=
Emails
::
DestroyService
.
new
(
current_user
,
user
,
email:
email
.
email
).
execute
success
=
Emails
::
DestroyService
.
new
(
current_user
,
user:
user
,
email:
email
.
email
).
execute
respond_to
do
|
format
|
if
success
...
...
app/controllers/profiles/emails_controller.rb
View file @
b8720e81
...
...
@@ -5,7 +5,7 @@ def index
end
def
create
@email
=
Emails
::
CreateService
.
new
(
current_user
,
current_user
,
email_params
).
execute
@email
=
Emails
::
CreateService
.
new
(
current_user
,
email_params
.
merge
(
user:
current_user
)
).
execute
if
@email
.
errors
.
blank?
NotificationService
.
new
.
new_email
(
@email
)
...
...
@@ -19,7 +19,7 @@ def create
def
destroy
@email
=
current_user
.
emails
.
find
(
params
[
:id
])
Emails
::
DestroyService
.
new
(
current_user
,
current_user
,
email:
@email
.
email
).
execute
Emails
::
DestroyService
.
new
(
current_user
,
user:
current_user
,
email:
@email
.
email
).
execute
respond_to
do
|
format
|
format
.
html
{
redirect_to
profile_emails_url
,
status:
302
}
...
...
app/models/user.rb
View file @
b8720e81
...
...
@@ -526,8 +526,8 @@ def owns_public_email
def
update_emails_with_primary_email
primary_email_record
=
emails
.
find_by
(
email:
email
)
if
primary_email_record
Emails
::
DestroyService
.
new
(
self
,
self
,
email:
email
).
execute
Emails
::
CreateService
.
new
(
self
,
self
,
email:
email_was
).
execute
Emails
::
DestroyService
.
new
(
self
,
user:
self
,
email:
email
).
execute
Emails
::
CreateService
.
new
(
self
,
user:
self
,
email:
email_was
).
execute
end
end
...
...
app/services/emails/base_service.rb
View file @
b8720e81
module
Emails
class
BaseService
def
initialize
(
current_user
,
user
,
opts
)
def
initialize
(
current_user
,
opts
)
@current_user
=
current_user
@user
=
user
@user
=
opts
.
delete
(
:
user
)
@email
=
opts
[
:email
]
end
end
...
...
lib/api/users.rb
View file @
b8720e81
...
...
@@ -326,7 +326,7 @@ def find_user_by_id(params)
user
=
User
.
find_by
(
id:
params
.
delete
(
:id
))
not_found!
(
'User'
)
unless
user
email
=
Emails
::
CreateService
.
new
(
current_user
,
user
,
declared_params
(
include_missing:
false
)).
execute
email
=
Emails
::
CreateService
.
new
(
current_user
,
declared_params
(
include_missing:
false
)
.
merge
(
user:
user
)
).
execute
if
email
.
errors
.
blank?
NotificationService
.
new
.
new_email
(
email
)
...
...
@@ -367,7 +367,7 @@ def find_user_by_id(params)
not_found!
(
'Email'
)
unless
email
destroy_conditionally!
(
email
)
do
|
email
|
Emails
::
DestroyService
.
new
(
current_user
,
user
,
email:
email
.
email
).
execute
Emails
::
DestroyService
.
new
(
current_user
,
user:
user
,
email:
email
.
email
).
execute
end
user
.
update_secondary_emails!
...
...
@@ -672,7 +672,7 @@ def find_impersonation_token
requires
:email
,
type:
String
,
desc:
'The new email'
end
post
"emails"
do
email
=
Emails
::
CreateService
.
new
(
current_user
,
current_user
,
declared_params
).
execute
email
=
Emails
::
CreateService
.
new
(
current_user
,
declared_params
.
merge
(
user:
current_user
)
).
execute
if
email
.
errors
.
blank?
NotificationService
.
new
.
new_email
(
email
)
...
...
@@ -691,7 +691,7 @@ def find_impersonation_token
not_found!
(
'Email'
)
unless
email
destroy_conditionally!
(
email
)
do
|
email
|
Emails
::
DestroyService
.
new
(
current_user
,
current_user
,
email:
email
.
email
).
execute
Emails
::
DestroyService
.
new
(
current_user
,
user:
current_user
,
email:
email
.
email
).
execute
end
current_user
.
update_secondary_emails!
...
...
spec/services/emails/create_service_spec.rb
View file @
b8720e81
...
...
@@ -2,9 +2,9 @@
describe
Emails
::
CreateService
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:opts
)
{
{
email:
'new@email.com'
}
}
let
(
:opts
)
{
{
email:
'new@email.com'
,
user:
user
}
}
subject
(
:service
)
{
described_class
.
new
(
user
,
user
,
opts
)
}
subject
(
:service
)
{
described_class
.
new
(
user
,
opts
)
}
describe
'#execute'
do
it
'creates an email with valid attributes'
do
...
...
spec/services/emails/destroy_service_spec.rb
View file @
b8720e81
...
...
@@ -4,7 +4,7 @@
let!
(
:user
)
{
create
(
:user
)
}
let!
(
:email
)
{
create
(
:email
,
user:
user
)
}
subject
(
:service
)
{
described_class
.
new
(
user
,
user
,
email:
email
.
email
)
}
subject
(
:service
)
{
described_class
.
new
(
user
,
user:
user
,
email:
email
.
email
)
}
describe
'#execute'
do
it
'removes an email'
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment