From 0de0e809accb682864810582bd9ce6995fe3b5c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Troncy?=
<86081901+Nounoursdestavernes@users.noreply.github.com>
Date: Wed, 14 Aug 2024 21:37:02 +0200
Subject: [PATCH 1/5] fix: Update French translation (#849)
---
client/src/locales/fr-FR/core.js | 84 ++++++++++++++++++++++++-------
client/src/locales/fr-FR/login.js | 2 +
2 files changed, 69 insertions(+), 17 deletions(-)
diff --git a/client/src/locales/fr-FR/core.js b/client/src/locales/fr-FR/core.js
index c9cd88e9..fe117ccf 100644
--- a/client/src/locales/fr-FR/core.js
+++ b/client/src/locales/fr-FR/core.js
@@ -15,10 +15,12 @@ export default {
translation: {
common: {
+ aboutPlanka: 'À propos de Planka',
account: 'Compte',
actions: 'Actions',
addAttachment_title: 'Ajouter une pièce jointe',
addComment: 'Ajouter un commentaire',
+ addManager_title: 'Ajouter un manager',
addMember_title: 'Ajouter un membre',
addUser_title: 'Ajouter un utilisateur',
administrator: 'Administrateur',
@@ -26,32 +28,43 @@ export default {
allChangesWillBeAutomaticallySavedAfterConnectionRestored:
'Toutes les modifications seront automatiquement enregistrées
une fois la connexion rétablie.',
areYouSureYouWantToDeleteThisAttachment: 'Voulez-vous vraiment supprimer cette pièce jointe?',
- areYouSureYouWantToDeleteThisBoard: 'Êtes-vous sûr de vouloir supprimer ce forum?',
+ areYouSureYouWantToDeleteThisBoard: 'Êtes-vous sûr de vouloir supprimer ce tableau?',
areYouSureYouWantToDeleteThisCard: 'Voulez-vous vraiment supprimer cette carte?',
areYouSureYouWantToDeleteThisComment: 'Êtes-vous sûr de vouloir supprimer ce commentaire?',
- areYouSureYouWantToDeleteThisLabel: 'Voulez-vous vraiment supprimer ce libellé?',
+ areYouSureYouWantToDeleteThisLabel: 'Voulez-vous vraiment supprimer cette étiquette?',
areYouSureYouWantToDeleteThisList: 'Êtes-vous sûr de vouloir supprimer cette liste?',
areYouSureYouWantToDeleteThisProject: 'Êtes-vous sûr de vouloir supprimer ce projet?',
areYouSureYouWantToDeleteThisTask: 'Êtes-vous sûr de vouloir supprimer cette tâche?',
areYouSureYouWantToDeleteThisUser: 'Êtes-vous sûr de vouloir supprimer cet utilisateur?',
+ areYouSureYouWantToLeaveBoard: 'Êtes-vous sûr de vouloir quitter ce tableau ?',
+ areYouSureYouWantToLeaveProject: 'Êtes-vous sûr de vouloir quitter ce projet ?',
+ areYouSureYouWantToRemoveThisManagerFromProject:
+ 'Êtes-vous sûr de vouloir supprimer ce manager du projet ?',
areYouSureYouWantToRemoveThisMemberFromProject:
'Êtes-vous sûr de vouloir supprimer ce membre du projet?',
- attachment: 'Attachement',
+ attachment: 'Pièce jointe',
attachments: 'Pièces jointes',
authentication: 'Authentification',
+ background: 'Arrière-plan',
board: 'Tableau',
boardNotFound_title: 'Carte non trouvée',
+ canComment: 'Peut commenter',
+ canEditContentOfBoard: 'Peut éditer le contenu du tableau.',
+ canOnlyViewBoard: 'Peut uniquement voir le tableau.',
cardActions_title: 'Actions sur la carte',
cardNotFound_title: 'Carte non trouvée',
cardOrActionAreDeleted: "La carte ou l'action sont supprimées.",
color: 'Couleur',
+ copy_inline: 'copie',
createBoard_title: 'Créer un tableau',
createLabel_title: 'Créer une étiquette',
createNewOneOrSelectExistingOne: 'Créez-en un nouveau ou sélectionnez
un existant.',
createProject_title: 'Créer un projet',
createTextFile_title: 'Créer un fichier texte',
currentPassword: 'Mot de passe actuel',
+ dangerZone_title: 'Zone dangereuse',
date: 'Date',
+ dueDate: "Date d'échéance",
dueDate_title: "Date d'échéance",
deleteAttachment_title: 'Supprimer la pièce jointe',
deleteBoard_title: 'Supprimer le tableau',
@@ -63,67 +76,89 @@ export default {
deleteTask_title: 'Supprimer la tâche',
deleteUser_title: "Supprimer l'utilisateur",
description: 'Description',
+ detectAutomatically: 'Détecter automatiquement',
dropFileToUpload: 'Déposer le fichier à télécharger',
+ editor: 'Éditeur',
editAttachment_title: 'Modifier la pièce jointe',
editAvatar_title: 'Modifier Avatar',
editBoard_title: 'Modifier le tableau',
editDueDate_title: "Modifier la date d'échéance",
- editEmail_title: "Modifier l'e-mail",
+ editEmail_title: "Modifier l'email",
+ editInformation_title: 'Modifier les informations',
editLabel_title: "Modifier l'étiquette",
editPassword_title: 'Modifier le mot de passe',
+ editPermissions_title: 'Modifier les permissions',
editStopwatch_title: 'Modifier la minuterie',
editUsername_title: "Modifier le nom d'utilisateur",
email: 'E-mail',
emailAlreadyInUse: 'Email déjà utilisé',
- enterCardTitle: 'Entrer le titre de la carte...',
- enterDescription: 'Entrez la description...',
- enterFilename: 'Entrez le nom du fichier',
- enterListTitle: 'Entrer le titre de la liste...',
+ enterCardTitle: 'Saisir le titre de la carte... [Ctrl+Enter] pour ouvrir automatiquement',
+ enterDescription: 'Saisir la description...',
+ enterFilename: 'Saisir le nom du fichier',
+ enterListTitle: 'Saisie le titre de la liste...',
enterProjectTitle: 'Saisir le titre du projet',
enterTaskDescription: 'Saisir la description de la tâche...',
- filterByLabels_title: 'Filtrer par libellés',
+ filterByLabels_title: 'Filtrer par étiquettes',
filterByMembers_title: 'Filtrer par membres',
fromComputer_title: "Depuis l'ordinateur",
- hours: 'Les heures',
+ fromTrello: 'Depuis Trello',
+ general: 'Général',
+ hours: 'Heures',
+ importBoard_title: 'Importer un tableau',
invalidCurrentPassword: 'Mot de passe actuel invalide',
labels: 'Étiquettes',
+ language: 'Langue',
+ leaveBoard_title: 'Quitter le tableau',
+ leaveProject_title: 'Quitter le projet',
+ linkIsCopied: 'Le lien est copié',
list: 'Lister',
listActions_title: 'Liste des actions',
+ managers: 'Managers',
+ managerActions_title: 'Actions des managers',
members: 'Membres',
+ memberActions_title: 'Actions des membres',
minutes: 'Minutes',
moveCard_title: 'Déplacer la carte',
name: 'Nom',
- newEmail: 'Nouveau courriel',
+ newestFirst: 'Le plus récent en premier',
+ newEmail: 'Nouveau email',
newPassword: 'Nouveau mot de passe',
newUsername: "Nouveau nom d'utilisateur",
noConnectionToServer: 'Pas de connexion au serveur',
- noBoards: 'Pas de planches',
+ noBoards: 'Pas de tableau',
noLists: 'Pas de listes',
noProjects: 'Pas de projets',
notifications: 'Notifications',
noUnreadNotifications: 'Aucune notification non lue.',
- openBoard_title: 'Open Board',
+ oldestFirst: 'Le plus ancien en premier',
+ openBoard_title: 'Ouvrir le tableau',
optional_inline: 'optionnel',
organization: 'Organisation',
phone: 'Téléphone',
preferences: 'Préférences',
- pressPasteShortcutToAddAttachmentFromClipboard: 'Conseil',
+ pressPasteShortcutToAddAttachmentFromClipboard:
+ 'Conseil: appuyer sur Ctrl-V (Cmd-V sur Mac) pour ajouter une pièce jointe depuis le presse-papiers',
project: 'Projet',
projectNotFound_title: 'Projet introuvable',
+ removeManager_title: 'Supprimer le manager',
removeMember_title: 'Supprimer le membre',
searchLabels: 'Chercher une étiquette...',
searchMembers: 'Chercher un membre...',
searchUsers: 'Chercher un utilisateur...',
searchCards: 'Chercher une carte...',
seconds: 'Secondes',
- selectBoard: 'Sélectionner une carte',
+ selectBoard: 'Sélectionner un tableau',
selectList: 'Sélectionner une liste',
+ selectPermissions_title: 'Sélectionner les permissions',
selectProject: 'Sélectionner un projet',
settings: 'Réglages',
+ sortList_title: 'Trier la liste',
stopwatch: 'Minuteur',
subscribeToMyOwnCardsByDefault: 'Abonnez-vous à mes propres cartes par défaut',
taskActions_title: 'Actions de tâche',
tasks: 'Tâches',
+ thereIsNoPreviewAvailableForThisAttachment:
+ "Il n'y a pas de prévisualisation de disponible pour cette pièce jointe.",
time: 'Temps',
title: 'Titre',
userActions_title: "Actions de l'utilisateur",
@@ -137,6 +172,8 @@ export default {
username: "Nom d'utilisateur",
usernameAlreadyInUse: "Nom d'utilisateur déjà utilisé",
users: 'Utilisateurs',
+ version: 'Version',
+ viewer: 'Spectateur',
writeComment: 'Écrire un commentaire...',
},
@@ -148,10 +185,12 @@ export default {
addCard_title: 'Ajouter une carte',
addComment: 'Ajouter un commentaire',
addList: 'Ajouter la liste',
+ addMember: 'Ajouter un membre',
addMoreDetailedDescription: 'Ajouter une description plus détaillée',
addTask: 'Ajouter une tâche',
addToCard: 'Ajouter à la carte',
addUser: 'Ajouter un utilisateur',
+ copyLink_title: 'Copier le lien',
createBoard: 'Créer un tableau',
createFile: 'Créer un fichier',
createLabel: 'Créer une étiquette',
@@ -174,14 +213,21 @@ export default {
deleteTask_title: 'Supprimer la tâche',
deleteUser: "Supprimer l'utilisateur",
duplicate: 'Dupliquer',
+ duplicateCard_title: 'Dupliquer la carte',
edit: 'Modifier',
editDueDate_title: "Modifier la date d'échéance",
- editDescription_title: 'Éditer la description',
- editEmail_title: "Modifier l'e-mail",
+ editDescription_title: 'Modifier la description',
+ editEmail_title: "Modifier l'email",
+ editInformation_title: 'Modifier les informations',
editPassword_title: 'Modifier le mot de passe',
+ editPermissions: 'Modifier les permissions',
editStopwatch_title: 'Modifier la minuterie',
editTitle_title: 'Modifier le titre',
editUsername_title: "Modifier le nom d'utilisateur",
+ hideDetails: 'Cacher les détails',
+ import: 'Importer',
+ leaveBoard: 'Quitter le tableau',
+ leaveProject: 'Quitter le projet',
logOut_title: 'Se déconnecter',
makeCover_title: 'Faire la jaquette',
move: 'Déplacer',
@@ -189,11 +235,15 @@ export default {
remove: 'Supprimer',
removeBackground: "Supprimer l'arrière-plan",
removeCover_title: 'Supprimer la jaquette',
+ removeFromBoard: 'Supprimer le tableau',
removeFromProject: 'Supprimer du projet',
+ removeManager: 'Supprimer le manager',
removeMember: 'Supprimer le membre',
save: 'Sauvegarder',
showAllAttachments: 'Afficher toutes les pièces jointes ({{hidden}} masquées)',
+ showDetails: 'Afficher les détails',
showFewerAttachments: 'Afficher moins de pièces jointes',
+ sortList_title: 'Trier la liste',
start: 'Début',
stop: 'Arrêter',
subscribe: "S'abonner",
diff --git a/client/src/locales/fr-FR/login.js b/client/src/locales/fr-FR/login.js
index afbd3161..c584ae88 100644
--- a/client/src/locales/fr-FR/login.js
+++ b/client/src/locales/fr-FR/login.js
@@ -11,10 +11,12 @@ export default {
projectManagement: 'Gestion de projet',
serverConnectionFailed: 'Connection au serveur échouée',
unknownError: 'Erreur inconnue, réessayez plus tard',
+ useSingleSignOn: "Utiliser l'authentification unique",
},
action: {
logIn: 'Se connecter',
+ logInWithSSO: "Se connecter avec l'authentification unique",
},
},
};
From 818ae4a6df0671f4fab42300a7ca1138d0c78a22 Mon Sep 17 00:00:00 2001
From: Maksim Eltyshev
Date: Wed, 14 Aug 2024 21:39:43 +0200
Subject: [PATCH 2/5] chore: Update version
---
charts/planka/Chart.yaml | 4 ++--
client/src/version.js | 2 +-
package-lock.json | 4 ++--
package.json | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/charts/planka/Chart.yaml b/charts/planka/Chart.yaml
index 713f2b2f..5e3fba61 100644
--- a/charts/planka/Chart.yaml
+++ b/charts/planka/Chart.yaml
@@ -15,13 +15,13 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 0.2.6
+version: 0.2.7
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
-appVersion: "1.21.0"
+appVersion: "1.21.1"
dependencies:
- alias: postgresql
diff --git a/client/src/version.js b/client/src/version.js
index a915f239..a191c752 100644
--- a/client/src/version.js
+++ b/client/src/version.js
@@ -1 +1 @@
-export default '1.21.0';
+export default '1.21.1';
diff --git a/package-lock.json b/package-lock.json
index 72c32e27..a56abe00 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "planka",
- "version": "1.21.0",
+ "version": "1.21.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "planka",
- "version": "1.21.0",
+ "version": "1.21.1",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
diff --git a/package.json b/package.json
index fa2a6a7f..5aa835d7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "planka",
- "version": "1.21.0",
+ "version": "1.21.1",
"private": true,
"homepage": "https://plankanban.github.io/planka",
"repository": {
From b2e1fba9a0beb969c7af60d794eab3d7a985f2dd Mon Sep 17 00:00:00 2001
From: Blyamur <409434+blyamur@users.noreply.github.com>
Date: Tue, 27 Aug 2024 17:09:31 +0300
Subject: [PATCH 3/5] fix: Update Russian translation (#857)
---
client/src/locales/ru-RU/core.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/client/src/locales/ru-RU/core.js b/client/src/locales/ru-RU/core.js
index 923deb0a..bad66e44 100644
--- a/client/src/locales/ru-RU/core.js
+++ b/client/src/locales/ru-RU/core.js
@@ -180,6 +180,7 @@ export default {
addAnotherCard: 'Добавить еще одну карточку',
addAnotherList: 'Добавить еще один список',
addAnotherTask: 'Добавить еще одну задачу',
+ addCard: 'Добавить карточку',
addCard_title: 'Добавить карточку',
addComment: 'Добавить комментарий',
addList: 'Добавить список',
From 9a5049472f40d35299ea9b56f76143b09896f40c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20TRONCY?=
Date: Wed, 28 Aug 2024 22:25:44 +0200
Subject: [PATCH 4/5] fix: more generic error messages on login
---
client/src/components/Login/Login.jsx | 9 +++++++++
client/src/locales/en-US/login.js | 1 +
docker-compose.yml | 2 ++
server/.env.sample | 2 ++
server/api/controllers/access-tokens/create.js | 12 ++++++++++++
server/config/custom.js | 2 ++
6 files changed, 28 insertions(+)
diff --git a/client/src/components/Login/Login.jsx b/client/src/components/Login/Login.jsx
index 6f547ee2..6303d34b 100755
--- a/client/src/components/Login/Login.jsx
+++ b/client/src/components/Login/Login.jsx
@@ -28,6 +28,11 @@ const createMessage = (error) => {
type: 'error',
content: 'common.invalidPassword',
};
+ case 'Invalid credentials':
+ return {
+ type: 'error',
+ content: 'common.invalidCredentials',
+ };
case 'Use single sign-on':
return {
type: 'error',
@@ -116,6 +121,10 @@ const Login = React.memo(
useEffect(() => {
if (wasSubmitting && !isSubmitting && error) {
switch (error.message) {
+ case 'Invalid credentials':
+ emailOrUsernameField.current.select();
+
+ break;
case 'Invalid email or username':
emailOrUsernameField.current.select();
diff --git a/client/src/locales/en-US/login.js b/client/src/locales/en-US/login.js
index 5e7f10c3..813522fe 100644
--- a/client/src/locales/en-US/login.js
+++ b/client/src/locales/en-US/login.js
@@ -3,6 +3,7 @@ export default {
common: {
emailOrUsername: 'E-mail or username',
invalidEmailOrUsername: 'Invalid e-mail or username',
+ invalidCredentials: 'Invalid credentials',
invalidPassword: 'Invalid password',
logInToPlanka: 'Log in to Planka',
noInternetConnection: 'No internet connection',
diff --git a/docker-compose.yml b/docker-compose.yml
index d28cfd6b..15a3cbc7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -31,6 +31,8 @@ services:
# - DEFAULT_ADMIN_NAME=Demo Demo
# - DEFAULT_ADMIN_USERNAME=demo
+ # - ENABLE_VERBOSE_ON_LOGIN=false # Set to true will show more verbose error messages on login. Should not be disabled without a rate limiter for security reasons.
+
# - ALLOW_ALL_TO_CREATE_PROJECTS=true
# - OIDC_ISSUER=
diff --git a/server/.env.sample b/server/.env.sample
index 19cbc5c9..7293e31f 100644
--- a/server/.env.sample
+++ b/server/.env.sample
@@ -22,6 +22,8 @@ SECRET_KEY=notsecretkey
# DEFAULT_ADMIN_NAME=Demo Demo
# DEFAULT_ADMIN_USERNAME=demo
+# ENABLE_VERBOSE_ON_LOGIN=false # Set to true will show more verbose error messages on login. Should not be disabled without a rate limiter for security reasons.
+
# ALLOW_ALL_TO_CREATE_PROJECTS=true
# OIDC_ISSUER=
diff --git a/server/api/controllers/access-tokens/create.js b/server/api/controllers/access-tokens/create.js
index ed9eb8cb..41a548cf 100755
--- a/server/api/controllers/access-tokens/create.js
+++ b/server/api/controllers/access-tokens/create.js
@@ -10,6 +10,9 @@ const Errors = {
INVALID_PASSWORD: {
invalidPassword: 'Invalid password',
},
+ INVALID_CREDENTIALS: {
+ invalidCredentials: 'Invalid credentials',
+ },
USE_SINGLE_SIGN_ON: {
useSingleSignOn: 'Use single sign-on',
},
@@ -40,6 +43,9 @@ module.exports = {
invalidPassword: {
responseType: 'unauthorized',
},
+ invalidCredentials: {
+ responseType: 'unauthorized',
+ },
useSingleSignOn: {
responseType: 'forbidden',
},
@@ -57,6 +63,9 @@ module.exports = {
sails.log.warn(
`Invalid email or username: "${inputs.emailOrUsername}"! (IP: ${remoteAddress})`,
);
+ if (sails.config.custom.enableVerboseOnLogin) {
+ throw Errors.INVALID_CREDENTIALS;
+ }
throw Errors.INVALID_EMAIL_OR_USERNAME;
}
@@ -66,6 +75,9 @@ module.exports = {
if (!bcrypt.compareSync(inputs.password, user.password)) {
sails.log.warn(`Invalid password! (IP: ${remoteAddress})`);
+ if (sails.config.custom.enableVerboseOnLogin) {
+ throw Errors.INVALID_CREDENTIALS;
+ }
throw Errors.INVALID_PASSWORD;
}
diff --git a/server/config/custom.js b/server/config/custom.js
index 6d641573..e1c39986 100644
--- a/server/config/custom.js
+++ b/server/config/custom.js
@@ -36,6 +36,8 @@ module.exports.custom = {
allowAllToCreateProjects: process.env.ALLOW_ALL_TO_CREATE_PROJECTS === 'true',
+ enableVerboseOnLogin: process.env.ENABLE_VERBOSE_ON_LOGIN ? process.env.ENABLE_VERBOSE_ON_LOGIN === 'true' : true,
+
oidcIssuer: process.env.OIDC_ISSUER,
oidcClientId: process.env.OIDC_CLIENT_ID,
oidcClientSecret: process.env.OIDC_CLIENT_SECRET,
From 82b03e55426e6c005a5956d0739b171a4a6761b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20TRONCY?=
Date: Thu, 29 Aug 2024 00:26:49 +0200
Subject: [PATCH 5/5] feat: correct bool according to the name (inversion of
enable and disable)
---
server/api/controllers/access-tokens/create.js | 4 ++--
server/config/custom.js | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/server/api/controllers/access-tokens/create.js b/server/api/controllers/access-tokens/create.js
index 41a548cf..cecc2585 100755
--- a/server/api/controllers/access-tokens/create.js
+++ b/server/api/controllers/access-tokens/create.js
@@ -63,7 +63,7 @@ module.exports = {
sails.log.warn(
`Invalid email or username: "${inputs.emailOrUsername}"! (IP: ${remoteAddress})`,
);
- if (sails.config.custom.enableVerboseOnLogin) {
+ if (!sails.config.custom.enableVerboseOnLogin) {
throw Errors.INVALID_CREDENTIALS;
}
throw Errors.INVALID_EMAIL_OR_USERNAME;
@@ -75,7 +75,7 @@ module.exports = {
if (!bcrypt.compareSync(inputs.password, user.password)) {
sails.log.warn(`Invalid password! (IP: ${remoteAddress})`);
- if (sails.config.custom.enableVerboseOnLogin) {
+ if (!sails.config.custom.enableVerboseOnLogin) {
throw Errors.INVALID_CREDENTIALS;
}
throw Errors.INVALID_PASSWORD;
diff --git a/server/config/custom.js b/server/config/custom.js
index e1c39986..2bb8a03e 100644
--- a/server/config/custom.js
+++ b/server/config/custom.js
@@ -36,7 +36,7 @@ module.exports.custom = {
allowAllToCreateProjects: process.env.ALLOW_ALL_TO_CREATE_PROJECTS === 'true',
- enableVerboseOnLogin: process.env.ENABLE_VERBOSE_ON_LOGIN ? process.env.ENABLE_VERBOSE_ON_LOGIN === 'true' : true,
+ enableVerboseOnLogin: process.env.ENABLE_VERBOSE_ON_LOGIN ? process.env.ENABLE_VERBOSE_ON_LOGIN === 'true' : false,
oidcIssuer: process.env.OIDC_ISSUER,
oidcClientId: process.env.OIDC_CLIENT_ID,