Skip to content

Commit

Permalink
Merge branch 'master' into feature/dismissing_reviews
Browse files Browse the repository at this point in the history
  • Loading branch information
a1012112796 committed Nov 22, 2020
2 parents 46cbcc2 + de1e4b2 commit a060513
Show file tree
Hide file tree
Showing 33 changed files with 449 additions and 133 deletions.
27 changes: 16 additions & 11 deletions models/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"errors"
"fmt"
_ "image/jpeg" // Needed for jpeg support
"net/mail"
"os"
"path/filepath"
"regexp"
Expand Down Expand Up @@ -809,9 +808,8 @@ func CreateUser(u *User) (err error) {
return ErrEmailAlreadyUsed{u.Email}
}

_, err = mail.ParseAddress(u.Email)
if err != nil {
return ErrEmailInvalid{u.Email}
if err = ValidateEmail(u.Email); err != nil {
return err
}

isExist, err = isEmailUsed(sess, u.Email)
Expand Down Expand Up @@ -956,11 +954,10 @@ func checkDupEmail(e Engine, u *User) error {
return nil
}

func updateUser(e Engine, u *User) error {
func updateUser(e Engine, u *User) (err error) {
u.Email = strings.ToLower(u.Email)
_, err := mail.ParseAddress(u.Email)
if err != nil {
return ErrEmailInvalid{u.Email}
if err = ValidateEmail(u.Email); err != nil {
return err
}
_, err = e.ID(u.ID).AllCols().Update(u)
return err
Expand All @@ -982,13 +979,21 @@ func updateUserCols(e Engine, u *User, cols ...string) error {
}

// UpdateUserSetting updates user's settings.
func UpdateUserSetting(u *User) error {
func UpdateUserSetting(u *User) (err error) {
sess := x.NewSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
return err
}
if !u.IsOrganization() {
if err := checkDupEmail(x, u); err != nil {
if err = checkDupEmail(sess, u); err != nil {
return err
}
}
return updateUser(x, u)
if err = updateUser(sess, u); err != nil {
return err
}
return sess.Commit()
}

// deleteBeans deletes all given beans, beans should contain delete conditions.
Expand Down
25 changes: 19 additions & 6 deletions models/user_mail.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,21 @@ type EmailAddress struct {
IsPrimary bool `xorm:"-"`
}

// ValidateEmail check if email is a allowed address
func ValidateEmail(email string) error {
if len(email) == 0 {
return nil
}

if _, err := mail.ParseAddress(email); err != nil {
return ErrEmailInvalid{email}
}

// TODO: add an email allow/block list

return nil
}

// GetEmailAddresses returns all email addresses belongs to given user.
func GetEmailAddresses(uid int64) ([]*EmailAddress, error) {
emails := make([]*EmailAddress, 0, 5)
Expand Down Expand Up @@ -144,9 +159,8 @@ func addEmailAddress(e Engine, email *EmailAddress) error {
return ErrEmailAlreadyUsed{email.Email}
}

_, err = mail.ParseAddress(email.Email)
if err != nil {
return ErrEmailInvalid{email.Email}
if err = ValidateEmail(email.Email); err != nil {
return err
}

_, err = e.Insert(email)
Expand All @@ -173,9 +187,8 @@ func AddEmailAddresses(emails []*EmailAddress) error {
} else if used {
return ErrEmailAlreadyUsed{emails[i].Email}
}
_, err = mail.ParseAddress(emails[i].Email)
if err != nil {
return ErrEmailInvalid{emails[i].Email}
if err = ValidateEmail(emails[i].Email); err != nil {
return err
}
}

Expand Down
2 changes: 0 additions & 2 deletions options/locale/locale_bg-BG.ini
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,6 @@ register_helper_msg=Вече имате профил? Впишете се сег
social_register_helper_msg=Вече имате акаунт? Свържето го сега!
disable_register_prompt=Регистрациите са заключени. Моля обърнете се към администратора на сайта.
disable_register_mail=Потвърждението на регистрация през имейл е изключено.
remember_me=Запомни ме
forgot_password_title=Забравена парола
forgot_password=Забравена парола?
sign_up_now=Нуждаете се от профил? Регистрирайте се сега.
Expand All @@ -242,7 +241,6 @@ twofa_scratch_token_incorrect=Вашият код за възстановява
login_userpass=Вход
login_openid=OpenID
oauth_signup_tab=Регистрация на нов профил
oauth_signup_title=Добавяне на имейл адрес и парола (за възстановяване на профила)
oauth_signup_submit=Завършване на профил
oauth_signin_tab=Свържи към съществуващ акаунт
oauth_signin_submit=Свържи профил
Expand Down
2 changes: 0 additions & 2 deletions options/locale/locale_cs-CZ.ini
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ register_helper_msg=Již máte účet? Přihlaste se!
social_register_helper_msg=Již máte účet? Připojte ho!
disable_register_prompt=Registrace jsou vypnuty. Prosíme, kontaktujte správce systému.
disable_register_mail=E-mailové potvrzení o registraci je zakázané.
remember_me=Zapamatovat si mne
forgot_password_title=Zapomenuté heslo
forgot_password=Zapomenuté heslo?
sign_up_now=Potřebujete účet? Zaregistrujte se.
Expand Down Expand Up @@ -278,7 +277,6 @@ twofa_scratch_token_incorrect=Váš pomocný kód není správný.
login_userpass=Přihlásit se
login_openid=OpenID
oauth_signup_tab=Zaregistrovat nový účet
oauth_signup_title=Přidejte e-mail a heslo (pro obnovení účtu)
oauth_signup_submit=Dokončit účet
oauth_signin_tab=Propojit s existujícím účtem
oauth_signin_title=Přihlaste se pro ověření propojeného účtu
Expand Down
41 changes: 37 additions & 4 deletions options/locale/locale_de-DE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ register_helper_msg=Hast du bereits ein Konto? Jetzt anmelden!
social_register_helper_msg=Hast du bereits ein Konto? Jetzt verknüpfen!
disable_register_prompt=Die Registrierung ist deaktiviert. Bitte wende dich an den Administrator.
disable_register_mail=E-Mail-Bestätigung bei der Registrierung ist deaktiviert.
remember_me=Angemeldet bleiben
forgot_password_title=Passwort vergessen
forgot_password=Passwort vergessen?
sign_up_now=Noch kein Konto? Jetzt registrieren.
Expand Down Expand Up @@ -278,7 +277,6 @@ twofa_scratch_token_incorrect=Das Einmalpasswort ist falsch.
login_userpass=Anmelden
login_openid=OpenID
oauth_signup_tab=Neues Konto registrieren
oauth_signup_title=E-Mail und Password hinzufügen (für Kontowiederherstellung)
oauth_signup_submit=Konto vervollständigen
oauth_signin_tab=Mit existierendem Konto verbinden
oauth_signin_title=Anmelden um verbundenes Konto zu autorisieren
Expand Down Expand Up @@ -382,6 +380,7 @@ cannot_add_org_to_team=Eine Organisation kann nicht als Teammitglied hinzugefüg

invalid_ssh_key=Dein SSH-Key kann nicht überprüft werden: %s
invalid_gpg_key=Dein GPG-Key kann nicht überprüft werden: %s
invalid_ssh_principal=Ungültige Identität: %s
unable_verify_ssh_key=Dein SSH-Key kann nicht überprüft werden, probiere es erneut.
auth_failed=Authentifizierung fehlgeschlagen: %v

Expand Down Expand Up @@ -500,33 +499,42 @@ keep_email_private_popup=Deine E-Mail-Adresse wird für andere Benutzer ausgeble
openid_desc=Mit OpenID kannst du dich über einen Drittanbieter authentifizieren.

manage_ssh_keys=SSH-Schlüssel verwalten
manage_ssh_principals=SSH-Zertifikat's Identitäten verwalten
manage_gpg_keys=GPG-Schlüssel verwalten
add_key=Schlüssel hinzufügen
ssh_desc=Diese öffentlichen SSH-Keys sind mit deinem Account verbunden. Der dazugehörigen privaten SSH-Keys geben dir vollen Zugriff auf deine Repositories.
principal_desc=Diese SSH-Zertifikat-Identitäten sind mit deinem Konto verknüpft und erlauben den vollen Zugriff auf deine Repositories.
gpg_desc=Diese öffentlichen GPG-Keys sind mit deinem Account verbunden. Halte die dazugehörigen privaten GPG-Keys geheim, da diese deine Commits signieren.
ssh_helper=<strong>Brauchst du Hilfe?</strong> Hier ist GitHubs Anleitung zum <a href="%s">Erzeugen von SSH-Schlüsseln</a> oder zum <a href="%s">Lösen einfacher SSH-Probleme</a>.
gpg_helper=<strong>Brauchst du Hilfe?</strong> Hier ist GitHubs Anleitung <a href="%s">über GPG</a>.
add_new_key=SSH-Schlüssel hinzufügen
add_new_gpg_key=GPG-Schlüssel hinzufügen
key_content_ssh_placeholder=Beginnt mit 'ssh-ed25519', 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384' oder 'ecdsa-sha2-nistp521'
key_content_gpg_placeholder=Beginnt mit '-----BEGIN PGP PUBLIC KEY BLOCK-----'
add_new_principal=Identität hinzufügen
ssh_key_been_used=Dieser SSH-Key wird auf diesem Server bereits verwendet.
ssh_key_name_used=Ein gleichnamiger SSH-Key existiert bereits in deinem Account.
ssh_principal_been_used=Diese Identität ist bereits auf dem Server vorhanden.
gpg_key_id_used=Ein öffentlicher GPG-Schlüssel mit der gleichen ID existiert bereits.
gpg_no_key_email_found=Dieser GPG-Schlüssel kann mit keiner E-Mail-Adresse deines Kontos verwendet werden.
subkeys=Unterschlüssel
key_id=Schlüssel-ID
key_name=Schlüsselname
key_content=Inhalt
principal_content=Inhalt
add_key_success=Der SSH-Schlüssel „%s“ wurde hinzugefügt.
add_gpg_key_success=Der GPG-Key „%s“ wurde hinzugefügt.
add_principal_success=Die SSH-Zertifikat-Identität '%s' wurde hinzugefügt.
delete_key=Entfernen
ssh_key_deletion=SSH-Schlüssel entfernen
gpg_key_deletion=GPG-Schlüssel entfernen
ssh_principal_deletion=SSH-Zertifik-Identität entfernen
ssh_key_deletion_desc=Wenn du einen SSH-Key entfernst, hast du mit diesem Key keinen Zugriff mehr. Fortfahren?
gpg_key_deletion_desc=Wenn du einen GPG-Schlüssel entfernst, können damit unterschriebene Commits nicht mehr verifiziert werden. Fortfahren?
ssh_principal_deletion_desc=Das Entfernen einer SSH-Zertifikat-Identität entzieht den Zugriff auf dein Konto. Fortfahren?
ssh_key_deletion_success=Der SSH-Schlüssel wurde entfernt.
gpg_key_deletion_success=Der GPG-Schlüssel wurde entfernt.
ssh_principal_deletion_success=Die Identität wurde entfernt.
add_on=Hinzugefügt am
valid_until=Gültig bis
valid_forever=Gültig für immer
Expand All @@ -536,6 +544,7 @@ can_read_info=Lesezugriff
can_write_info=Schreibzugriff
key_state_desc=Dieser Schlüssel wurde in den letzten 7 Tagen verwendet
token_state_desc=Dieser Token wurde in den letzten 7 Tagen benutzt
principal_state_desc=Diese Identität wurde in den letzten 7 Tagen verwendet
show_openid=Im Profil anzeigen
hide_openid=Nicht im Profil anzeigen
ssh_disabled=SSH ist deaktiviert
Expand Down Expand Up @@ -796,7 +805,9 @@ org_labels_desc_manage=verwalten
milestones=Meilensteine
commits=Commits
commit=Commit
release=Erscheinungsdatum
releases=Releases
released_this=hat released
file_raw=Originalformat
file_history=Verlauf
file_view_raw=Originalformat anzeigen
Expand Down Expand Up @@ -858,7 +869,11 @@ editor.file_already_exists=Eine Datei mit dem Namen „%s“ ist bereits in dies
editor.commit_empty_file_header=Leere Datei committen
editor.commit_empty_file_text=Die Datei, die du commiten willst, ist leer. Fortfahren?
editor.no_changes_to_show=Keine Änderungen vorhanden.
editor.fail_to_update_file=Fehler beim Aktualisieren/Erstellen der Datei '%s'.
editor.fail_to_update_file_summary=Fehlermeldung:
editor.push_rejected_no_message=Die Änderung wurde vom Server ohne Nachricht abgelehnt. Bitte überprüfe die githooks.
editor.push_rejected=Die Änderung wurde vom Server abgelehnt. Bitte überprüfe die githooks.
editor.push_rejected_summary=Vollständige Ablehnungsmeldung:
editor.add_subdir=Verzeichnis erstellen…
editor.unable_to_upload_files=Fehler beim Hochladen der Dateien nach „%s“. Fehler: %v
editor.upload_file_is_locked=Datei „%s” ist durch %s gesperrt.
Expand Down Expand Up @@ -1036,8 +1051,9 @@ issues.create_comment=Kommentieren
issues.closed_at=`hat diesen Issue <a id="%[1]s" href="#%[1]s">%[2]s</a> geschlossen`
issues.reopened_at=`hat diesen Issue <a id="%[1]s" href="#%[1]s">%[2]s</a> wieder geöffnet`
issues.commit_ref_at=`hat dieses Issue <a id="%[1]s" href="#%[1]s">%[2]s</a> aus einem Commit referenziert`
issues.ref_issue_from=`<a href="%[3]s">verweist auf dieses Issue %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_pull_from=`<a href="%[3]s">verweist auf diesen Pull Request %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_issue_from=`<a href="%[3]s">hat</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">auf dieses Issue verwiesen %[4]s</a>`
issues.ref_pull_from=`<a href="%[3]s">hat</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">auf diesen Pull Request verwiesen %[4]s</a>`
issues.ref_closing_from=`<a href="%[3]s">hat</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">auf einen Pull Request %[4]s verwiesen, welcher das Issue schließen wird</a>`
issues.ref_reopening_from=`<a href="%[3]s">hat auf einen Pull Request %[4]s verwiesen, welcher das Issue</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> erneut öffnen wird`
issues.ref_closed_from=`<a href="%[3]s">hat dieses Issue %[4]s geschlossen</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopened_from=`<a href="%[3]s">hat dieses Issue %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> wieder geöffnet`
Expand Down Expand Up @@ -1171,6 +1187,7 @@ issues.review.remove_review_request_self=hat das Review verweigert %s
issues.review.pending=Ausstehend
issues.review.review=Review
issues.review.reviewers=Reviewer
issues.review.outdated=Veraltet
issues.review.show_outdated=Veraltete anzeigen
issues.review.hide_outdated=Veraltete ausblenden
issues.review.show_resolved=Gelöste anzeigen
Expand Down Expand Up @@ -1239,9 +1256,15 @@ pulls.rebase_merge_commit_pull_request=Rebasen und Mergen (--no-ff)
pulls.squash_merge_pull_request=Zusammenfassen und Mergen
pulls.require_signed_wont_sign=Die Branch erfordert einen signierten Commit, aber dieser Merge wird nicht signiert
pulls.invalid_merge_option=Du kannst diese Mergeoption auf diesen Pull-Request nicht anwenden.
pulls.merge_conflict=Zusammenführen fehlgeschlagen: Beim Zusammenführen gab es einen Konflikt. Hinweis: Probiere eine andere Strategie
pulls.merge_conflict_summary=Fehlermeldung
pulls.rebase_conflict=Zusammenführen fehlgeschlagen: Es gab einen Konflikt beim Rebasing des Commits: %[1]s. Hinweis: Versuche eine andere Strategie
pulls.rebase_conflict_summary=Fehlermeldung
; </summary><code>%[2]s<br>%[3]s</code></details>
pulls.unrelated_histories=Zusammenführung fehlgeschlagen: Der Head der Zusammenführung und die Basis haben keinen gemeinsamen Verlauf. Hinweis: Versuche eine andere Strategie
pulls.merge_out_of_date=Zusammenführung fehlgeschlagen: Während der Zusammenführung wurde die Basis aktualisiert. Hinweis: Versuche es erneut.
pulls.push_rejected=Zusammenführen fehlgeschlagen: Der Push wurde abgelehnt. Überprüfe die githooks für dieses Repository.
pulls.push_rejected_summary=Vollständige Ablehnungsmeldung
pulls.push_rejected_no_message=Merge fehlgeschlagen: Der Push wurde abgelehnt, aber es gab keine Fehlermeldung.<br>Überprüfe die Githooks für dieses Repository
pulls.open_unmerged_pull_exists=`Du kannst diesen Pull-Request nicht erneut öffnen, da noch ein anderer (#%d) mit identischen Eigenschaften offen ist.`
pulls.status_checking=Einige Prüfungen sind noch ausstehend
Expand Down Expand Up @@ -1765,6 +1788,8 @@ diff.protected=Geschützt

releases.desc=Behalte den Überblick über Versionen und Downloads.
release.releases=Releases
release.detail=Release-Details
release.tags=Tags
release.new_release=Neues Release
release.draft=Entwurf
release.prerelease=Pre-Release
Expand All @@ -1787,10 +1812,15 @@ release.publish=Release veröffentlichen
release.save_draft=Entwurf speichern
release.edit_release=Release aktualisieren
release.delete_release=Release löschen
release.delete_tag=Tag löschen
release.deletion=Release löschen
release.deletion_desc=Das Löschen einer Version entfernt sie nur von Gitea. Git-Tag, Repository-Inhalt und Verlauf bleiben unverändert. Fortfahren?
release.deletion_success=Das Release wurde gelöscht.
release.deletion_tag_desc=Löscht dieses Tag aus dem Projektarchiv. Repository-Inhalt und Verlauf bleiben unverändert. Fortfahren?
release.deletion_tag_success=Der Tag wurde gelöscht.
release.tag_name_already_exist=Ein Release mit diesem Tag existiert bereits.
release.tag_name_invalid=Der Tag-Name ist ungültig.
release.tag_already_exist=Dieser Tag-Name existiert bereits.
release.downloads=Downloads
release.download_count=Downloads: %s

Expand Down Expand Up @@ -1986,6 +2016,7 @@ dashboard.update_migration_poster_id=Migration Poster-IDs updaten
dashboard.git_gc_repos=Garbage-Collection auf Repositories ausführen
dashboard.resync_all_sshkeys=Die Datei '.ssh/authorized_keys' mit Gitea SSH-Schlüsseln aktualisieren.
dashboard.resync_all_sshkeys.desc=(Nicht benötigt für den eingebauten SSH-Server.)
dashboard.resync_all_sshprincipals=Aktualisiere die Datei '.ssh/authorized_principals' mit Gitea SSH Identitäten.
dashboard.resync_all_sshprincipals.desc=(Nicht benötigt für den eingebauten SSH-Server.)
dashboard.resync_all_hooks=Synchronisiere „pre-receive“-, „update“- und „post-receive“-Hooks für alle Repositories erneut.
dashboard.reinit_missing_repos=Alle Git-Repositories mit Einträgen neu einlesen
Expand Down Expand Up @@ -2048,6 +2079,7 @@ users.prohibit_login=Anmelden deaktivieren
users.is_admin=Ist Administrator
users.is_restricted=Ist eingeschränkt
users.allow_git_hook=Darf „Git Hooks“ erstellen
users.allow_git_hook_tooltip=Git Hooks werden mit den selben Benutzer-Rechten ausgeführt, mit der Gitea leuft und haben den gleichen Host-Zugriff. Dadurch können Benutzer mit diesem speziellen Git Hook Privileg auf alle Gitea Repositories sowie auf die von Gitea verwendete Datenbank zugreifen und diese ändern. Auch das erhalten der Administratorrechte von Gitea ist möglich!
users.allow_import_local=Darf lokale Repositories importieren
users.allow_create_organization=Darf Organisationen erstellen
users.update_profile=Benutzerkonto aktualisieren
Expand Down Expand Up @@ -2177,6 +2209,7 @@ auths.tip.twitter=Gehe auf https://dev.twitter.com/apps, erstelle eine Anwendung
auths.tip.discord=Erstelle unter https://discordapp.com/developers/applications/me eine neue Anwendung.
auths.tip.gitea=Registriere eine neue OAuth2-Anwendung. Eine Anleitung findest du unter https://docs.gitea.io/en-us/oauth2-provider/
auths.tip.yandex=Erstelle eine neue Anwendung auf https://oauth.yandex.com/client/new. Wähle folgende Berechtigungen aus dem "Yandex.Passport API" Bereich: "Zugriff auf E-Mail-Adresse", "Zugriff auf Benutzeravatar" und "Zugriff auf Benutzername, Vor- und Nachname, Geschlecht"
auths.tip.mastodon=Gebe eine benutzerdefinierte URL für die Mastodon-Instanz ein, mit der du dich authentifizieren möchtest (oder benutze die standardmäßige)
auths.edit=Authentifikationsquelle bearbeiten
auths.activated=Diese Authentifikationsquelle ist aktiviert
auths.new_success=Die Authentifizierung „%s“ wurde hinzugefügt.
Expand Down
4 changes: 2 additions & 2 deletions options/locale/locale_en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ register_helper_msg = Already have an account? Sign in now!
social_register_helper_msg = Already have an account? Link it now!
disable_register_prompt = Registration is disabled. Please contact your site administrator.
disable_register_mail = Email confirmation for registration is disabled.
remember_me = Remember Me
remember_me = Remember this Device
forgot_password_title= Forgot Password
forgot_password = Forgot password?
sign_up_now = Need an account? Register now.
Expand Down Expand Up @@ -278,7 +278,7 @@ twofa_scratch_token_incorrect = Your scratch code is incorrect.
login_userpass = Sign In
login_openid = OpenID
oauth_signup_tab = Register New Account
oauth_signup_title = Add Email and Password (for Account Recovery)
oauth_signup_title = Complete New Account
oauth_signup_submit = Complete Account
oauth_signin_tab = Link to Existing Account
oauth_signin_title = Sign In to Authorize Linked Account
Expand Down
2 changes: 0 additions & 2 deletions options/locale/locale_es-ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ register_helper_msg=¿Ya tienes una cuenta? ¡Inicia sesión!
social_register_helper_msg=¿Ya tienes una cuenta? ¡Enlázala!
disable_register_prompt=Registro deshabilitado. Por favor, póngase en contacto con el administrador del sitio.
disable_register_mail=Correo electrónico de confirmación de registro deshabilitado.
remember_me=Recuérdame
forgot_password_title=He olvidado mi contraseña
forgot_password=¿Has olvidado tu contraseña?
sign_up_now=¿Necesitas una cuenta? Regístrate ahora.
Expand Down Expand Up @@ -278,7 +277,6 @@ twofa_scratch_token_incorrect=El código de respaldo es incorrecto.
login_userpass=Iniciar sesión
login_openid=OpenID
oauth_signup_tab=Registrar nueva cuenta
oauth_signup_title=Añadir email y contraseña (para la recuperación de la cuenta)
oauth_signup_submit=Completar Cuenta
oauth_signin_tab=Vincular a una Cuenta Existente
oauth_signin_title=Regístrese para autorizar cuenta vinculada
Expand Down
Loading

0 comments on commit a060513

Please sign in to comment.