diff --git a/README.md b/README.md
index 9c180c7..12d9503 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Shipped version:** 2.5.4~ynh7
+**Shipped version:** 2.6.9~ynh1
**Demo:**
diff --git a/README_es.md b/README_es.md
index 59026a1..650c885 100644
--- a/README_es.md
+++ b/README_es.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Versión actual:** 2.5.4~ynh7
+**Versión actual:** 2.6.9~ynh1
**Demo:**
diff --git a/README_eu.md b/README_eu.md
index 6413d14..99d76b3 100644
--- a/README_eu.md
+++ b/README_eu.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Paketatutako bertsioa:** 2.5.4~ynh7
+**Paketatutako bertsioa:** 2.6.9~ynh1
**Demoa:**
diff --git a/README_fr.md b/README_fr.md
index 486ed25..064405d 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -22,7 +22,7 @@ Sont disponibles une interface web, des add-ons pour navigateurs (Firefox/Chrome
La mise à niveau depuis le paquet YunoHost de [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) demande une opération manuelle, c'est pourquoi un nouveau paquet est fournit. Pour le processus de migration, merci de vous référer à [la documentation officiel de Wallabag](https://doc.wallabag.org/fr/user/import/wallabagv1.html).
-**Version incluse :** 2.5.4~ynh7
+**Version incluse :** 2.6.9~ynh1
**Démo :**
diff --git a/README_gl.md b/README_gl.md
index 2c9c64f..c3f4077 100644
--- a/README_gl.md
+++ b/README_gl.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Versión proporcionada:** 2.5.4~ynh7
+**Versión proporcionada:** 2.6.9~ynh1
**Demo:**
diff --git a/README_id.md b/README_id.md
index 1dd1cec..fd7a157 100644
--- a/README_id.md
+++ b/README_id.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Versi terkirim:** 2.5.4~ynh7
+**Versi terkirim:** 2.6.9~ynh1
**Demo:**
diff --git a/README_nl.md b/README_nl.md
index fe579f1..e3a4a3b 100644
--- a/README_nl.md
+++ b/README_nl.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Geleverde versie:** 2.5.4~ynh7
+**Geleverde versie:** 2.6.9~ynh1
**Demo:**
diff --git a/README_ru.md b/README_ru.md
index a000145..8bda273 100644
--- a/README_ru.md
+++ b/README_ru.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**Поставляемая версия:** 2.5.4~ynh7
+**Поставляемая версия:** 2.6.9~ynh1
**Демо-версия:**
diff --git a/README_zh_Hans.md b/README_zh_Hans.md
index a5a8963..f0a8ec7 100644
--- a/README_zh_Hans.md
+++ b/README_zh_Hans.md
@@ -22,7 +22,7 @@ It provides a web interface, browser (Firefox/Chrome/Opera) add-ons, mobile apps
Upgrade from the YunoHost [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) app requires a manual operation. That's why it's provided as a new package. For the migration process, please refer to the [Wallabag official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html).
-**分发版本:** 2.5.4~ynh7
+**分发版本:** 2.6.9~ynh1
**演示:**
diff --git a/conf/foreign-keys-removal.sql b/conf/foreign-keys-removal.sql
new file mode 100644
index 0000000..0ebad2c
--- /dev/null
+++ b/conf/foreign-keys-removal.sql
@@ -0,0 +1,12 @@
+# Drop old foreign keys
+
+ALTER TABLE `oauth2_access_tokens` DROP FOREIGN KEY IF EXISTS FK_D247A21BA76ED395;
+ALTER TABLE `oauth2_access_tokens` DROP FOREIGN KEY IF EXISTS FK_D247A21B19EB6921;
+ALTER TABLE `oauth2_auth_codes` DROP FOREIGN KEY IF EXISTS FK_A018A10DA76ED395;
+ALTER TABLE `oauth2_clients` DROP FOREIGN KEY IF EXISTS FK_F9D02AE6A76ED395;
+ALTER TABLE `oauth2_refresh_tokens` DROP FOREIGN KEY IF EXISTS FK_D394478CA76ED395;
+ALTER TABLE `config` DROP FOREIGN KEY IF EXISTS FK_D48A2F7CA76ED395;
+ALTER TABLE `entry` DROP FOREIGN KEY IF EXISTS FK_2B219D70A76ED395;
+ALTER TABLE `oauth2_auth_codes` DROP FOREIGN KEY IF EXISTS FK_A018A10D19EB6921;
+ALTER TABLE `oauth2_refresh_tokens` DROP FOREIGN KEY IF EXISTS FK_D394478C19EB6921;
+ALTER TABLE `tagging_rule` DROP FOREIGN KEY IF EXISTS FK_1AF95E7824DB0683;
diff --git a/conf/parameters.yml b/conf/parameters.yml
index 5cc47fb..474971d 100644
--- a/conf/parameters.yml
+++ b/conf/parameters.yml
@@ -1,74 +1,38 @@
-# This file is a "template" of what your parameters.yml file should look like
+# This file is auto-generated during the composer install
parameters:
- # Uncomment these settings or manually update your parameters.yml
- # to use docker-compose
- #
- # database_driver: %env.database_driver%
- # database_host: %env.database_host%
- # database_port: %env.database_port%
- # database_name: %env.database_name%
- # database_user: %env.database_user%
- # database_password: %env.database_password%
-
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: ~
database_name: __DB_NAME__
database_user: __DB_USER__
database_password: __DB_PWD__
- # For SQLite, database_path should be "%kernel.project_dir%/data/db/wallabag.sqlite"
database_path: null
database_table_prefix: null
database_socket: null
- # with PostgreSQL and SQLite, you must set "utf8"
database_charset: utf8mb4
-
- domain_name: https://__DOMAIN____PATH__
- server_name: "Your wallabag instance"
-
- mailer_transport: smtp
- mailer_user: ~
- mailer_password: ~
- mailer_host: 127.0.0.1
- mailer_port: false
- mailer_encryption: ~
- mailer_auth_mode: ~
-
+ domain_name: 'https://__DOMAIN____PATH__'
+ server_name: 'Your wallabag instance'
+ mailer_dsn: smtp://__APP__:__MAIL_PWD__@__DOMAIN__:25
locale: en
-
- # A secret key that's used to generate certain security-related tokens
secret: __DESKEY__
-
- # two factor stuff
- twofactor_auth: true
twofactor_sender: no-reply@wallabag.org
-
- # fosuser stuff
fosuser_registration: false
fosuser_confirmation: true
-
- # how long the access token should live in seconds for the API
fos_oauth_server_access_token_lifetime: 3600
- # how long the refresh token should life in seconds for the API
fos_oauth_server_refresh_token_lifetime: 1209600
-
from_email: no-reply@wallabag.org
-
rss_limit: 50
- # RabbitMQ processing
rabbitmq_host: localhost
rabbitmq_port: 5672
rabbitmq_user: guest
rabbitmq_password: guest
rabbitmq_prefetch_count: 10
- # Redis processing
redis_scheme: tcp
redis_host: localhost
redis_port: 6379
redis_path: null
redis_password: null
- # sentry logging
sentry_dsn: ~
diff --git a/manifest.toml b/manifest.toml
index fcc25a8..2896b5c 100644
--- a/manifest.toml
+++ b/manifest.toml
@@ -6,7 +6,8 @@ id = "wallabag2"
name = "Wallabag"
description.en = "Save and classify articles. Read them later"
description.fr = "Enregistrez et classez les articles. Lisez-les plus tard"
-version = "2.5.4~ynh7"
+
+version = "2.6.9~ynh1"
maintainers = ["lapineige"]
@@ -47,13 +48,14 @@ ram.runtime = "50M"
[resources]
[resources.sources.main]
- url = "https://github.com/wallabag/wallabag/releases/download/2.5.4/wallabag-2.5.4.tar.gz"
- sha256 = "c953105e3181f18bf592541a1c46c318c6663ad00d4687052676b02a7d74c618"
+ url = "https://github.com/wallabag/wallabag/releases/download/2.6.9/wallabag-2.6.9.tar.gz"
+ sha256 = "578b39ff2f5f140999f969d4c54d37532462bc48a10f565429038eab84cb10ac"
autoupdate.strategy = "latest_github_release"
autoupdate.asset = ".*\\.tar\\.gz"
[resources.system_user]
+ allow_email = true
[resources.install_dir]
group = "www-data:r-x"
diff --git a/scripts/_common.sh b/scripts/_common.sh
index 2a416c6..f6ce6d5 100644
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -4,6 +4,8 @@
# COMMON VARIABLES AND CUSTOM HELPERS
#=================================================
+YNH_COMPOSER_VERSION="2.7.7"
+
# Define a function to execute commands with `php_exec`
php_exec() {
(cd "$install_dir" && ynh_exec_as_app \
diff --git a/scripts/install b/scripts/install
index b3b284c..6570488 100644
--- a/scripts/install
+++ b/scripts/install
@@ -29,6 +29,18 @@ if [ -e "$install_dir/var/cache/prod/appProdProjectContainer.php" ]; then
chmod 700 "$install_dir/var/cache/prod/appProdProjectContainer.php"
fi
+#=================================================
+# INSTALL SYMFONY LDAP
+#=================================================
+ynh_script_progression --message="Installing dependencies for LDAP..." --weight=1
+
+# Some trick to actually not run composer install…
+ynh_install_composer --install_args="--dry-run"
+ynh_composer_exec --commands="require symfony/ldap"
+# SYMFONY_ENV=prod ynh_composer_exec --commands="install --no-dev"
+
+chown -R "$app:www-data" "$install_dir"
+
#=================================================
# APP INITIAL CONFIGURATION
#=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index d187fa4..49d7f2c 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -3,6 +3,19 @@
source _common.sh
source /usr/share/yunohost/helpers
+#=================================================
+# ENSURE DOWNWARD COMPATIBILITY
+#=================================================
+ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
+
+if ynh_compare_current_package_version --comparison lt --version "2.4~ynh1"; then
+ # Migrate old (erroneous) database scheme (see: https://github.com/YunoHost-Apps/wallabag2_ynh/pull/125#issuecomment-1041426972)
+ ynh_script_progression --message="Migrating old (pre-2018) database scheme..." --weight=11
+
+ ynh_exec_warn_less ynh_mysql_execute_file_as_root --database="$db_name" --file="../conf/foreign-keys-removal.sql"
+ ynh_script_progression --message="Database migration done. Resuming normal upgrade process" --weight=11
+fi
+
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
@@ -20,11 +33,28 @@ if [ -e "$install_dir/var/cache/prod/appProdProjectContainer.php" ]; then
chmod 700 "$install_dir/var/cache/prod/appProdProjectContainer.php"
fi
+#=================================================
+# INSTALL SYMFONY LDAP
+#=================================================
+ynh_script_progression --message="Installing dependencies for LDAP..." --weight=1
+
+# Some trick to actually not run composer install…
+ynh_install_composer --install_args="--dry-run"
+ynh_composer_exec --commands="require symfony/ldap"
+# SYMFONY_ENV=prod ynh_composer_exec --commands="install --no-dev"
+
+chown -R "$app:www-data" "$install_dir"
+
#=================================================
# UPDATE A CONFIG FILE
#=================================================
ynh_script_progression "Reconfiguring $app..."
+ynh_add_config --template="parameters.yml" --destination="$install_dir/app/config/parameters.yml"
+
+chmod 600 "$install_dir/app/config/parameters.yml"
+chown "$app:$app" "$install_dir/app/config/parameters.yml"
+
# Upgrade database and clear the cache
php_exec doctrine:migrations:migrate
php_exec cache:clear
diff --git a/sources/patches/main-00-ldap-auth.patch b/sources/patches/main-00-ldap-auth.patch
index 3a36f5e..8e9a0d8 100644
--- a/sources/patches/main-00-ldap-auth.patch
+++ b/sources/patches/main-00-ldap-auth.patch
@@ -1,5 +1,15 @@
+From 488b781e030637ab6feafc0da640217e1d654ead Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?=
+Date: Tue, 11 Jun 2024 11:50:36 +0200
+Subject: [PATCH 1/3] Add ldap auth
+
+---
+ app/config/security.yml | 12 ++++++++++++
+ app/config/services.yml | 7 +++++++
+ 2 files changed, 19 insertions(+)
+
diff --git a/app/config/security.yml b/app/config/security.yml
-index 02afc9ea..5a3f7a34 100644
+index 9ab51621..f4ea3d47 100644
--- a/app/config/security.yml
+++ b/app/config/security.yml
@@ -13,6 +13,14 @@ security:
@@ -8,39 +18,41 @@ index 02afc9ea..5a3f7a34 100644
id: fos_user.user_provider.username_email
+ yunohost_users:
+ ldap:
-+ service: yunohost.ldap
++ service: Symfony\Component\Ldap\Ldap
+ base_dn: ou=users,dc=yunohost,dc=org
+ search_dn:
+ search_password:
+ filter: (&(uid={username})(objectClass=posixAccount))
+ default_roles: ROLE_USER
-
+
# the main part of the security, where you can set up firewalls
# for specific sections of your app
-@@ -38,6 +46,9 @@ security:
-
+@@ -39,6 +47,10 @@ security:
+
secured_area:
pattern: ^/
+ http_basic_ldap:
-+ service: yunohost.ldap
++ provider: yunohost_users
++ service: Symfony\Component\Ldap\Ldap
+ dn_string: "uid={username},ou=users,dc=yunohost,dc=org"
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
diff --git a/app/config/services.yml b/app/config/services.yml
-index 7b85d846..f23961c5 100644
+index 270e79d9..c67341e8 100644
--- a/app/config/services.yml
+++ b/app/config/services.yml
-@@ -43,6 +43,10 @@ services:
- tags:
- - { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin }
-
-+ yunohost.ldap:
-+ class: Symfony\Component\Ldap\LdapClient
-+ arguments: ["localhost"]
-+
- craue_config_cache_provider:
- class: Symfony\Component\Cache\Adapter\FilesystemAdapter
+@@ -394,3 +394,10 @@ services:
public: false
---
-2.17.1
+ tags:
+ - { name: pagerfanta.view, alias: default_wallabag }
++
++ Symfony\Component\Ldap\Ldap:
++ arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
++ tags: [ldap]
++ Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
++ arguments:
++ - host: localhost
+--
+2.45.1
+
diff --git a/sources/patches/main-01-logout-success-handler.patch b/sources/patches/main-01-logout-success-handler.patch
index d321d54..505c9f9 100644
--- a/sources/patches/main-01-logout-success-handler.patch
+++ b/sources/patches/main-01-logout-success-handler.patch
@@ -1,31 +1,40 @@
+From 711f4a49fa7d4c471cd905870fecaa6f83156d46 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?=
+Date: Tue, 11 Jun 2024 11:52:33 +0200
+Subject: [PATCH 2/3] Configure a custom logout success handler for yunohost
+ ldap
+
+---
+ app/config/security.yml | 2 +-
+ app/config/services.yml | 3 +++
+ .../Security/LogoutSuccessHandler.php | 27 +++++++++++++++++++
+ 3 files changed, 31 insertions(+), 1 deletion(-)
+ create mode 100644 src/Wallabag/YunoHostBundle/Security/LogoutSuccessHandler.php
+
diff --git a/app/config/security.yml b/app/config/security.yml
-index 5a3f7a34..1720e741 100644
+index f4ea3d47..de6b705b 100644
--- a/app/config/security.yml
+++ b/app/config/security.yml
-@@ -62,7 +62,7 @@ security:
-
+@@ -64,7 +64,7 @@ security:
+
logout:
path: /logout
- target: /
+ success_handler: yunohost.logout_success_handler
-
- access_control:
- - { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY }
+
+ two_factor:
+ provider: fos_userbundle
diff --git a/app/config/services.yml b/app/config/services.yml
-index f23961c5..f266e6d1 100644
+index c67341e8..7057ca42 100644
--- a/app/config/services.yml
+++ b/app/config/services.yml
-@@ -43,6 +43,10 @@ services:
- tags:
- - { name: kernel.event_listener, event: security.interactive_login, method: onInteractiveLogin }
-
+@@ -401,3 +401,6 @@ services:
+ Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
+ arguments:
+ - host: localhost
++
+ yunohost.logout_success_handler:
+ class: Wallabag\YunoHostBundle\Security\LogoutSuccessHandler
-+
-+
- yunohost.ldap:
- class: Symfony\Component\Ldap\LdapClient
- arguments: ["localhost"]
diff --git a/src/Wallabag/YunoHostBundle/Security/LogoutSuccessHandler.php b/src/Wallabag/YunoHostBundle/Security/LogoutSuccessHandler.php
new file mode 100644
index 00000000..b3268243
@@ -59,5 +68,6 @@ index 00000000..b3268243
+ return new RedirectResponse($url);
+ }
+}
---
-2.17.1
+--
+2.45.1
+
diff --git a/sources/patches/main-02-oauth-workaround.patch b/sources/patches/main-02-oauth-workaround.patch
index 6326570..747030f 100644
--- a/sources/patches/main-02-oauth-workaround.patch
+++ b/sources/patches/main-02-oauth-workaround.patch
@@ -1,11 +1,25 @@
---- a/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php 2016-02-22 13:57:55.000000000 +0000
-+++ b/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php 2017-04-13 17:16:06.298501506 +0000
-@@ -170,7 +170,7 @@
- if (null !== $user) {
- $encoder = $this->encoderFactory->getEncoder($user);
+From 85c26ff4df2191bf3494491f27e2922aa6b569c8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?=
+Date: Tue, 11 Jun 2024 11:54:25 +0200
+Subject: [PATCH 3/3] OAuthStorage workaround
+
+---
+ .../oauth-server-bundle/Storage/OAuthStorage.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php b/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php
+index 5ab6b7c9..7cb77913 100644
+--- a/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php
++++ b/vendor/friendsofsymfony/oauth-server-bundle/Storage/OAuthStorage.php
+@@ -158,7 +158,7 @@ class OAuthStorage implements IOAuth2RefreshTokens, IOAuth2GrantUser, IOAuth2Gra
+ }
+
+ $encoder = $this->encoderFactory->getEncoder($user);
+- if ($encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt())) {
++ if (true) {
+ return [
+ 'data' => $user,
+ ];
+--
+2.45.1
-- if ($encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt())) {
-+ if (true) {
- return array(
- 'data' => $user,
- );