Make sure people don't create duplicate Fever usernames

This commit is contained in:
Frédéric Guillot 2017-12-29 14:38:43 -08:00
parent 9eb91e6f0b
commit 038ea790f7
4 changed files with 27 additions and 5 deletions

View File

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
// 2017-12-29 14:12:55.369940267 -0800 PST m=+0.042539315
// 2017-12-29 14:34:59.486421907 -0800 PST m=+0.007402806
package locale
@ -210,12 +210,13 @@ var translations = map[string]string{
"Toggle bookmark": "Ajouter/Enlever favoris",
"Close modal dialog": "Fermer la boite de dialogue",
"Save article": "Sauvegarder l'article",
"There is already someone associated with this provider!": "Il y a déjà quelqu'un d'associé avec ce provider !"
"There is already someone associated with this provider!": "Il y a déjà quelqu'un d'associé avec ce provider !",
"There is already someone else with the same Fever username!": "Il y a déjà quelqu'un d'autre avec le même nom d'utilisateur Fever !"
}
`,
}
var translationsChecksums = map[string]string{
"en_US": "6fe95384260941e8a5a3c695a655a932e0a8a6a572c1e45cb2b1ae8baa01b897",
"fr_FR": "710be25933b58ab1449ec8797696cf937d4854fa0e9db555e2ef8fadd09b4382",
"fr_FR": "3d8c0e211eb96ab28e2fd8fced718b6348a63ea824e54d0729a56e4e3f26ba64",
}

View File

@ -194,5 +194,6 @@
"Toggle bookmark": "Ajouter/Enlever favoris",
"Close modal dialog": "Fermer la boite de dialogue",
"Save article": "Sauvegarder l'article",
"There is already someone associated with this provider!": "Il y a déjà quelqu'un d'associé avec ce provider !"
"There is already someone associated with this provider!": "Il y a déjà quelqu'un d'associé avec ce provider !",
"There is already someone else with the same Fever username!": "Il y a déjà quelqu'un d'autre avec le même nom d'utilisateur Fever !"
}

View File

@ -62,6 +62,12 @@ func (c *Controller) UpdateIntegration(ctx *core.Context, request *core.Request,
integrationForm := form.NewIntegrationForm(request.Request())
integrationForm.Merge(integration)
if integration.FeverUsername != "" && c.store.HasDuplicateFeverUsername(user.ID, integration.FeverUsername) {
ctx.SetFlashErrorMessage(ctx.Translate("There is already someone else with the same Fever username!"))
response.Redirect(ctx.Route("integrations"))
return
}
if integration.FeverEnabled {
integration.FeverToken = fmt.Sprintf("%x", md5.Sum([]byte(integration.FeverUsername+":"+integration.FeverPassword)))
} else {

View File

@ -11,11 +11,25 @@ import (
"github.com/miniflux/miniflux/model"
)
// HasDuplicateFeverUsername checks if another user have the same fever username.
func (s *Storage) HasDuplicateFeverUsername(userID int64, feverUsername string) bool {
query := `
SELECT
count(*) as c
FROM integrations
WHERE user_id != $1 AND fever_username=$2
`
var result int
s.db.QueryRow(query, userID, feverUsername).Scan(&result)
return result >= 1
}
// UserByFeverToken returns a user by using the Fever API token.
func (s *Storage) UserByFeverToken(token string) (*model.User, error) {
query := `
SELECT
users.id, users.is_admin, users.timezone
users.id, users.is_admin, users.timezone
FROM users
LEFT JOIN integrations ON integrations.user_id=users.id
WHERE integrations.fever_enabled='t' AND integrations.fever_token=$1