aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--locale/translations.go7
-rw-r--r--locale/translations/fr_FR.json3
-rw-r--r--server/ui/controller/integrations.go6
-rw-r--r--storage/integration.go16
4 files changed, 27 insertions, 5 deletions
diff --git a/locale/translations.go b/locale/translations.go
index 749e964..e32f754 100644
--- a/locale/translations.go
+++ b/locale/translations.go
@@ -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",
}
diff --git a/locale/translations/fr_FR.json b/locale/translations/fr_FR.json
index f0086d0..28ebe28 100644
--- a/locale/translations/fr_FR.json
+++ b/locale/translations/fr_FR.json
@@ -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 !"
}
diff --git a/server/ui/controller/integrations.go b/server/ui/controller/integrations.go
index 99971b0..9ff4baa 100644
--- a/server/ui/controller/integrations.go
+++ b/server/ui/controller/integrations.go
@@ -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 {
diff --git a/storage/integration.go b/storage/integration.go
index 779ca81..aacb520 100644
--- a/storage/integration.go
+++ b/storage/integration.go
@@ -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