Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
P
parlote-facil
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
facil
parlote-facil
Validations
d75f795c
Valider
d75f795c
rédigé
il y a 8 ans
par
aoh0x7DE
Validation de
Jonne Haß
il y a 8 ans
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Fix issue #6847 (#6905)
* Fix issue #6847
parent
5778e7b3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
3
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
app/controllers/users_controller.rb
+25
-24
25 ajouts, 24 suppressions
app/controllers/users_controller.rb
app/models/user.rb
+18
-2
18 ajouts, 2 suppressions
app/models/user.rb
spec/models/user_spec.rb
+14
-2
14 ajouts, 2 suppressions
spec/models/user_spec.rb
avec
57 ajouts
et
28 suppressions
app/controllers/users_controller.rb
+
25
−
24
Voir le fichier @
d75f795c
...
@@ -25,49 +25,50 @@ class UsersController < ApplicationController
...
@@ -25,49 +25,50 @@ class UsersController < ApplicationController
# change email notifications
# change email notifications
if
u
[
:email_preferences
]
if
u
[
:email_preferences
]
@user
.
update_user_preferences
(
u
[
:email_preferences
])
@user
.
update_user_preferences
(
u
[
:email_preferences
])
flash
[
:notice
]
=
I18n
.
t
'
users.update.email_notifications_changed
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.email_notifications_changed
"
# change password
# change password
elsif
params
[
:change_password
]
elsif
params
[
:change_password
]
if
@user
.
update_with_password
(
u
)
if
@user
.
update_with_password
(
u
)
password_changed
=
true
password_changed
=
true
flash
[
:notice
]
=
I18n
.
t
'
users.update.password_changed
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.password_changed
"
else
else
flash
[
:error
]
=
I18n
.
t
'
users.update.password_not_changed
'
flash
[
:error
]
=
I18n
.
t
"
users.update.password_not_changed
"
end
end
elsif
u
[
:show_community_spotlight_in_stream
]
||
u
[
:getting_started
]
elsif
u
[
:show_community_spotlight_in_stream
]
||
u
[
:getting_started
]
if
@user
.
update_attributes
(
u
)
if
@user
.
update_attributes
(
u
)
flash
[
:notice
]
=
I18n
.
t
'
users.update.settings_updated
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.settings_updated
"
else
else
flash
[
:notice
]
=
I18n
.
t
'
users.update.settings_not_updated
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.settings_not_updated
"
end
end
elsif
u
[
:strip_exif
]
elsif
u
[
:strip_exif
]
if
@user
.
update_attributes
(
u
)
if
@user
.
update_attributes
(
u
)
flash
[
:notice
]
=
I18n
.
t
'
users.update.settings_updated
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.settings_updated
"
else
else
flash
[
:notice
]
=
I18n
.
t
'
users.update.settings_not_updated
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.settings_not_updated
"
end
end
elsif
u
[
:language
]
elsif
u
[
:language
]
if
@user
.
update_attributes
(
u
)
if
@user
.
update_attributes
(
u
)
I18n
.
locale
=
@user
.
language
I18n
.
locale
=
@user
.
language
flash
[
:notice
]
=
I18n
.
t
'
users.update.language_changed
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.language_changed
"
else
else
flash
[
:error
]
=
I18n
.
t
'
users.update.language_not_changed
'
flash
[
:error
]
=
I18n
.
t
"
users.update.language_not_changed
"
end
end
elsif
u
[
:email
]
elsif
u
[
:email
]
@user
.
unconfirmed_email
=
u
[
:email
]
@user
.
unconfirmed_email
=
u
[
:email
]
if
@user
.
save
if
@user
.
save
@user
.
send_confirm_email
@user
.
send_confirm_email
if
@user
.
unconfirmed_email
if
@user
.
unconfirmed_email
flash
[
:notice
]
=
I18n
.
t
'
users.update.unconfirmed_email_changed
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.unconfirmed_email_changed
"
end
end
else
else
flash
[
:error
]
=
I18n
.
t
'users.update.unconfirmed_email_not_changed'
@user
.
reload
# match user object with the database
flash
[
:error
]
=
I18n
.
t
"users.update.unconfirmed_email_not_changed"
end
end
elsif
u
[
:auto_follow_back
]
elsif
u
[
:auto_follow_back
]
if
@user
.
update_attributes
(
u
)
if
@user
.
update_attributes
(
u
)
flash
[
:notice
]
=
I18n
.
t
'
users.update.follow_settings_changed
'
flash
[
:notice
]
=
I18n
.
t
"
users.update.follow_settings_changed
"
else
else
flash
[
:error
]
=
I18n
.
t
'
users.update.follow_settings_not_changed
'
flash
[
:error
]
=
I18n
.
t
"
users.update.follow_settings_not_changed
"
end
end
elsif
u
[
:color_theme
]
elsif
u
[
:color_theme
]
if
@user
.
update_attributes
(
u
)
if
@user
.
update_attributes
(
u
)
...
@@ -98,9 +99,9 @@ class UsersController < ApplicationController
...
@@ -98,9 +99,9 @@ class UsersController < ApplicationController
redirect_to
(
new_user_session_path
(
format:
request
[
:format
]),
notice:
I18n
.
t
(
"users.destroy.success"
))
redirect_to
(
new_user_session_path
(
format:
request
[
:format
]),
notice:
I18n
.
t
(
"users.destroy.success"
))
else
else
if
params
[
:user
].
present?
&&
params
[
:user
][
:current_password
].
present?
if
params
[
:user
].
present?
&&
params
[
:user
][
:current_password
].
present?
flash
[
:error
]
=
t
'
users.destroy.wrong_password
'
flash
[
:error
]
=
t
"
users.destroy.wrong_password
"
else
else
flash
[
:error
]
=
t
'
users.destroy.no_password
'
flash
[
:error
]
=
t
"
users.destroy.no_password
"
end
end
redirect_to
:back
redirect_to
:back
end
end
...
@@ -111,16 +112,16 @@ class UsersController < ApplicationController
...
@@ -111,16 +112,16 @@ class UsersController < ApplicationController
respond_to
do
|
format
|
respond_to
do
|
format
|
format
.
atom
do
format
.
atom
do
@posts
=
Post
.
where
(
author_id:
@user
.
person_id
,
public:
true
)
@posts
=
Post
.
where
(
author_id:
@user
.
person_id
,
public:
true
)
.
order
(
'
created_at DESC
'
)
.
order
(
"
created_at DESC
"
)
.
limit
(
25
)
.
limit
(
25
)
.
map
{
|
post
|
post
.
is_a?
(
Reshare
)
?
post
.
absolute_root
:
post
}
.
map
{
|
post
|
post
.
is_a?
(
Reshare
)
?
post
.
absolute_root
:
post
}
.
compact
.
compact
end
end
format
.
any
{
redirect_to
person_path
(
@user
.
person
)
}
format
.
any
{
redirect_to
person_path
(
@user
.
person
)
}
end
end
else
else
redirect_to
stream_path
,
:
error
=>
I18n
.
t
(
'
users.public.does_not_exist
'
,
:
username
=>
params
[
:username
])
redirect_to
stream_path
,
error
:
I18n
.
t
(
"
users.public.does_not_exist
"
,
username
:
params
[
:username
])
end
end
end
end
...
@@ -141,7 +142,7 @@ class UsersController < ApplicationController
...
@@ -141,7 +142,7 @@ class UsersController < ApplicationController
def
export_profile
def
export_profile
current_user
.
queue_export
current_user
.
queue_export
flash
[
:notice
]
=
I18n
.
t
(
'
users.edit.export_in_progress
'
)
flash
[
:notice
]
=
I18n
.
t
(
"
users.edit.export_in_progress
"
)
redirect_to
edit_user_path
redirect_to
edit_user_path
end
end
...
@@ -151,7 +152,7 @@ class UsersController < ApplicationController
...
@@ -151,7 +152,7 @@ class UsersController < ApplicationController
def
export_photos
def
export_photos
current_user
.
queue_export_photos
current_user
.
queue_export_photos
flash
[
:notice
]
=
I18n
.
t
(
'
users.edit.export_photos_in_progress
'
)
flash
[
:notice
]
=
I18n
.
t
(
"
users.edit.export_photos_in_progress
"
)
redirect_to
edit_user_path
redirect_to
edit_user_path
end
end
...
@@ -171,9 +172,9 @@ class UsersController < ApplicationController
...
@@ -171,9 +172,9 @@ class UsersController < ApplicationController
def
confirm_email
def
confirm_email
if
current_user
.
confirm_email
(
params
[
:token
])
if
current_user
.
confirm_email
(
params
[
:token
])
flash
[
:notice
]
=
I18n
.
t
(
'
users.confirm_email.email_confirmed
'
,
:
email
=>
current_user
.
email
)
flash
[
:notice
]
=
I18n
.
t
(
"
users.confirm_email.email_confirmed
"
,
email
:
current_user
.
email
)
elsif
current_user
.
unconfirmed_email
.
present?
elsif
current_user
.
unconfirmed_email
.
present?
flash
[
:error
]
=
I18n
.
t
(
'
users.confirm_email.email_not_confirmed
'
)
flash
[
:error
]
=
I18n
.
t
(
"
users.confirm_email.email_not_confirmed
"
)
end
end
redirect_to
edit_user_path
redirect_to
edit_user_path
end
end
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
app/models/user.rb
+
18
−
2
Voir le fichier @
d75f795c
...
@@ -32,6 +32,8 @@ class User < ActiveRecord::Base
...
@@ -32,6 +32,8 @@ class User < ActiveRecord::Base
validates
:color_theme
,
inclusion:
{
in:
AVAILABLE_COLOR_THEME_CODES
},
allow_blank:
true
validates
:color_theme
,
inclusion:
{
in:
AVAILABLE_COLOR_THEME_CODES
},
allow_blank:
true
validates_format_of
:unconfirmed_email
,
:with
=>
Devise
.
email_regexp
,
:allow_blank
=>
true
validates_format_of
:unconfirmed_email
,
:with
=>
Devise
.
email_regexp
,
:allow_blank
=>
true
validate
:unconfirmed_email_quasiuniqueness
validates_presence_of
:person
,
:unless
=>
proc
{
|
user
|
user
.
invitation_token
.
present?
}
validates_presence_of
:person
,
:unless
=>
proc
{
|
user
|
user
.
invitation_token
.
present?
}
validates_associated
:person
validates_associated
:person
validate
:no_person_with_same_username
validate
:no_person_with_same_username
...
@@ -83,6 +85,8 @@ class User < ActiveRecord::Base
...
@@ -83,6 +85,8 @@ class User < ActiveRecord::Base
before_save
:guard_unconfirmed_email
before_save
:guard_unconfirmed_email
after_save
:remove_invalid_unconfirmed_emails
def
self
.
all_sharing_with_person
(
person
)
def
self
.
all_sharing_with_person
(
person
)
User
.
joins
(
:contacts
).
where
(
:contacts
=>
{
:person_id
=>
person
.
id
})
User
.
joins
(
:contacts
).
where
(
:contacts
=>
{
:person_id
=>
person
.
id
})
end
end
...
@@ -484,6 +488,13 @@ class User < ActiveRecord::Base
...
@@ -484,6 +488,13 @@ class User < ActiveRecord::Base
end
end
# Ensure that the unconfirmed email isn't already someone's email
def
unconfirmed_email_quasiuniqueness
if
User
.
exists?
([
"id != ? AND email = ?"
,
id
,
unconfirmed_email
])
errors
.
add
(
:unconfirmed_email
,
I18n
.
t
(
"errors.messages.taken"
))
end
end
def
guard_unconfirmed_email
def
guard_unconfirmed_email
self
.
unconfirmed_email
=
nil
if
unconfirmed_email
.
blank?
||
unconfirmed_email
==
email
self
.
unconfirmed_email
=
nil
if
unconfirmed_email
.
blank?
||
unconfirmed_email
==
email
...
@@ -492,11 +503,16 @@ class User < ActiveRecord::Base
...
@@ -492,11 +503,16 @@ class User < ActiveRecord::Base
end
end
end
end
# Whenever email is set, clear all unconfirmed emails which match
def
remove_invalid_unconfirmed_emails
User
.
where
(
unconfirmed_email:
email
).
update_all
(
unconfirmed_email:
nil
)
if
email_changed?
end
# Generate public/private keys for User and associated Person
# Generate public/private keys for User and associated Person
def
generate_keys
def
generate_keys
key_size
=
(
Rails
.
env
==
'
test
'
?
512
:
4096
)
key_size
=
(
Rails
.
env
==
"
test
"
?
512
:
4096
)
self
.
serialized_private_key
=
OpenSSL
::
PKey
::
RSA
::
generate
(
key_size
).
to_s
if
self
.
serialized_private_key
.
blank?
self
.
serialized_private_key
=
OpenSSL
::
PKey
::
RSA
.
generate
(
key_size
).
to_s
if
serialized_private_key
.
blank?
if
self
.
person
&&
self
.
person
.
serialized_public_key
.
blank?
if
self
.
person
&&
self
.
person
.
serialized_public_key
.
blank?
self
.
person
.
serialized_public_key
=
OpenSSL
::
PKey
::
RSA
.
new
(
self
.
serialized_private_key
).
public_key
.
to_s
self
.
person
.
serialized_public_key
=
OpenSSL
::
PKey
::
RSA
.
new
(
self
.
serialized_private_key
).
public_key
.
to_s
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
spec/models/user_spec.rb
+
14
−
2
Voir le fichier @
d75f795c
...
@@ -305,6 +305,13 @@ describe User, :type => :model do
...
@@ -305,6 +305,13 @@ describe User, :type => :model do
alice
.
email
=
"somebody@anywhere"
alice
.
email
=
"somebody@anywhere"
expect
(
alice
).
not_to
be_valid
expect
(
alice
).
not_to
be_valid
end
end
it
"resets a matching unconfirmed_email on save"
do
eve
.
update_attribute
:unconfirmed_email
,
"new@example.com"
alice
.
update_attribute
:email
,
"new@example.com"
eve
.
reload
expect
(
eve
.
unconfirmed_email
).
to
eql
(
nil
)
end
end
end
describe
"of unconfirmed_email"
do
describe
"of unconfirmed_email"
do
...
@@ -316,11 +323,16 @@ describe User, :type => :model do
...
@@ -316,11 +323,16 @@ describe User, :type => :model do
end
end
it
"does NOT require a unique unconfirmed_email address"
do
it
"does NOT require a unique unconfirmed_email address"
do
eve
.
update_attribute
:unconfirmed_email
,
"new@e
mail
.com"
eve
.
update_attribute
:unconfirmed_email
,
"new@e
xample
.com"
alice
.
unconfirmed_email
=
"new@e
mail
.com"
alice
.
unconfirmed_email
=
"new@e
xample
.com"
expect
(
alice
).
to
be_valid
expect
(
alice
).
to
be_valid
end
end
it
"requires an unconfirmed_email address which is not another user's email address"
do
alice
.
unconfirmed_email
=
eve
.
email
expect
(
alice
).
not_to
be_valid
end
it
"requires a valid unconfirmed_email address"
do
it
"requires a valid unconfirmed_email address"
do
alice
.
unconfirmed_email
=
"somebody@anywhere"
alice
.
unconfirmed_email
=
"somebody@anywhere"
expect
(
alice
).
not_to
be_valid
expect
(
alice
).
not_to
be_valid
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter