[Resolved] Change where goes Nextcloud after logout

Thanks for your answer and your propositions !

I just don’t want that people know that this nextcloud is on a yunohot server, and that logout redirection is a real problem, because as the users doesn’t have a yunohost account, when they are on the yunohost login page after logout of nextcloud, if they don’t take care and try to authenticate themselves by this login page, they never access to their nextcloud account !

The natural comportment of a website is, after a logout, to redirect user to the login page. For the moment, the redirection goes to the yunohost login page, and I would like to redirect to the nextcloud login page (for all users, it’s perfect).

There is some possibilities to custom this ‘default’ app ?

Thanks !

There’s a button the configuration page of each app,

So, anyone visiting the domain, is forwarded to the /blog location (instead of seeing the Yunohost login)

Is it uncomfortable for you when they find out, or confusing for them when they can’t log in? In case of the last, you could consider creating a new user group,

image

and then giving only Nextcloud permissions

and adding those users to Nextcloud anyway, but put them in the ‘only_nextcloud_users’ group.

Pay attention to the ‘All users’ group in that case, you will need to move those apps to another group of ‘full yunohost users’.

I just realize another option, that might be a better fit. Is Nextcloud on its own (sub)domain, or in a subdirectory? This would involve having Nextcloud and the Yunohost on different domains.

The Yunohost portal is on the default domain, marked with a star:
image

So, if your domain is cellophile.fr, and your Yuno-users go to cellophile.fr to log in, and your NC-users go to data.cellophile.fr to log in, would that reflect the situation?

So, after loging out from NC, users are redirected to the default app, which is the SSOwat-portal if nothing is changed. Would it work when configured like:

I think that should work. It is even compatible with ‘adding nextcloud users to yunohost and only giving them nextcloud’ as outlined above.

1 Like

Bonsoir,

As-u vu cette réponse de @ljf ?

Par contre je ne sais pas comment appliquer ce patch, avec un peu de chance @ljf passera par là. Par contre, distinguer les utilisateurs yunohost des autres utilisateurs, sa réponse laisse supposer que ce n’est pas évident.
Je n’ai pas suivi la réponse de @wbk , aussi suis-je peut-être à côté de la plaque ou que sa réponse répond déjà à ton attente.

2 Likes

Thanks @wbk for your response, but it doesn’t help me :wink:

The “make default” button is made to redirect the root server url. It’s not what I want, I have another url to access to my yunohost panel, and I keep this one :slight_smile:
Morover, as nextcloud is installed on this url, I can’t use it for a default url.

For your group’s proposition : Yes, it is a solution, if my users are registered in yunohost, but it’s not the case. Some users are directly created in nextcloud (yes you can do that, without create an account in yunohost :wink:) and those users haven’t a yunohost account. So I can’t create any group for them.
If I created users in yunohost, they could login by the yunohost portal, and my problem would be inexistant… But those users haven’t to be created in yunohost, only directly in nextcloud. Their ID and password aren’t managed by yunohost, but only nexctloud. I’m sorry if I repeat too many times the same things, it’s just to be sure that english doesn’t limit the problem understanding ! :smiley:

On its own subdomain.

Yes, it’s something like that !

Unfortunately not, because you can’t have more than one default domain on a yunohost server…


Bonsoir @metyun, Non je n’avais pas vu cette réponse !
C’est parfaitement ce que je cherchais !!! Merci !

Alors, pour expliquer ce que je fais, si d’autres ont le même problème :

cd /var/www/nextcloud/core/Controller
nano LoginController.php

j’ai bien

        public function logout() {
                $loginToken = $this->request->getCookie('nc_token');
                if (!is_null($loginToken)) {
                        $this->config->deleteUserValue($this->userSession->getUser()->getUID(), 'login_token', $loginToken);
                }
                $this->userSession->logout();

                $redirectUrl = $this->config->getSystemValue('logout_url',
                      $this->urlGenerator->linkToRouteAbsolute(
                              'core.login.showLoginForm',
                              ['clear' => true] // this param the the code in login.js may be removed when the "Clear-Site-Data" is working in the browsers)
                ));

                $response = new RedirectResponse($redirectUrl);
                $this->session->set('clearingExecutionContexts', '1');
                $this->session->close();

                if (!$this->request->isUserAgent([Request::USER_AGENT_CHROME, Request::USER_AGENT_ANDROID_MOBILE_CHROME])) {
                        $response->addHeader('Clear-Site-Data', '"cache", "storage"');
                }

                return $response;
        }

Et l’équipe de Yunohost est absolument géniale, parce qu’elle a laissé accessible le code original, dans un second fichier, stocké au même endroit, nommé LoginController.php.orig

Rien de plus simple donc, il suffit de renommer les deux fichiers :

mv LoginController.php LoginController.php.ynhmod 
mv LoginController.php.orig LoginController.php

Et le tour est joué !
La question que je me pose, c’est : Est-ce qu’à la prochaine mise à jour je devrai refaire ce changement ? Je le saurai… à la prochaine mise à jour ! :wink:


:uk:
To explain in english :
Yunohost has done a patch to redirect NC to his own login portal. But, because they are totally awesome, they have put in same place the original file. If you want to redirect your NC to the NC login page, you have just to do this three commands :

cd /var/www/nextcloud/core/Controller
mv LoginController.php LoginController.php.ynhmod 
mv LoginController.php.orig LoginController.php

there is still a question about Nextcloud update : will I have to redo the manipulation for each update?
The next update will bring the response… :wink:

Thanks !

1 Like

Haha, repetition is the source of magic, or something like that they say in marketing :stuck_out_tongue:

That part of the problem was clear to me, it was just me ignoring it (not lack of clarity in your description :slight_smile: )

Great!

1 Like

J’ai testé mais il y a un souci quand je me connecte à partir de la tuile du SSO. Quand je me déconnecte via nextcloud, je tombe sur cette erreur: “Accès non autorisé CSRF check failed”. Donc cette solution n’est que partiel, elle oblige à se connecter uniquement à partir de la page de Login de Nextcloud.

Si tu ne veux pas te poser de question et être sûr que ça reste en place, profite du reload de nginx qui a lieu à la fin de l’installation ou des mises à jour de Nextcloud pour rétablir le bon fichier; Si la mise à jour n’écrase pas les modifications, le script ne fera rien dans ce cas:

/etc/yunohost/hooks.d/conf_regen/16-nginx_nextcloud

#!/bin/bash
action=$1
pending_dir=$4
nginx_dir=$pending_dir/../nginx/etc/nginx
nextcloud_dir=/var/www/nextcloud/core/Controller
[[ $action == "pre" ]] || exit 0
[[ -d $nginx_dir ]] || exit 0
[[ -e $nextcloud_dir ]] || exit 0

if [[ -e $nextcloud_dir/LoginController.php.orig ]];then
        mv $nextcloud_dir/LoginController.php $nextcloud_dir/LoginController.php.ynhmod &&
        mv $nextcloud_dir/LoginController.php.orig $nextcloud_dir/LoginController.php
fi

Salut @metyun,
J’ai fait un nouveau test, je n’ai pas ton erreur quand j’essaie pareil. Si je me connecte depuis la tuile Ynh, puis que je me déconnecte de nextcloud seulement, je retourne bien sur le portail de nextcloud après déconnexion, sans erreur.
Si je retourne sur le portail Ynh, je suis toujours connecté.
Par contre, il y a une erreur si je reclique sur la tuile nextcloud : je suis identifié, puis nextcloud me dit probleme, réauthentification dans 5,4,3,2,1… Et je me retrouve sur la page de nextcloud à devoir me reconnecter.

Pour moi, cela n’est pas un soucis. Les utilisateurs ayant un compte ynh savent qu’il ont un accès par tuile, et donc une déconnexion globale, les autres n’ont qu’un seul accès avec une seule déconnexion.

Pour le reload, bonne idée ! mais je ne trouve pas le fichier dont tu parles…
dans /etc/yunohost/hooks.d/ j’ai uniquement :

root@XXXX:/etc/yunohost/hooks.d# ls -l
total 12
drwxr-xr-x 2 root root 4096 Dec  8 13:19 backup
drwxr-xr-x 2 root root 4096 Dec  8 13:19 backup_method
drwxr-xr-x 2 root root 4096 Dec  9 08:02 post_user_create

Tant mieux si ça fonctionne pour toi, chez moi c’est aléatoire, un coup ça se déconnecte bien, une autre fois ça refuse de se déconnecter et parfois j’ai l’erreur CSRF. Je n’ai cette dernière erreur qu’avec firefox, sur chromium je ne l’ai pas.
Par contre en se connectant directement de l’interface de Nextcloud, tout fonctionne.

C’est normal que tu ne trouves pas ce fichier, c’est à toi de le créer, ça s’appelle un hook. J’ai posté un tuto à ce sujet sur le forum, c’est très pratique si tu apportes des modifications perso à ton yunohost qui t’oblige à les refaire à chaque mise à jour.

1 Like

Salut @metyun,
Excellent, un fois de plus ! :smiley:
J’ai regardé plusieurs de tes fils et tutos, pour essayer de comprendre comment ça marche.
J’ai plusieurs questions :

  • Comment choisis-tu le nom du fichier à créer (" 16-nginx_nextcloud" pour celui-ci par exemple) ? Dans ce fil, je vois qu’il y a toujours un chiffre, puis une appli, mais est-ce par convention, est-ce par rapport à d’autres fichiers installés par ailleurs, … ?
  • Dans ce tuto, tu parles de cette commande :

Est-ce à faire uniquement après la mise en place du hook (ou d’une modification du hook) ? Après chaque mise à jour de yunohost ou d’une appli ?

  • Quel langage est utilisé pour écrire ce hook ? ( c’est par curiosité, mais fermer la balise if par fi, je n’ai pas encore vu :slight_smile: )

Pour le nom de fichier, j’ai mis le lien vers une discussion dans le fil que tu cites, tu trouveras les explications.
La commande est à faire uniquement après la mise en place du hook pour prendre en compte celui-ci. Après c’est automatique, il se fait oublier. Et l’avantage, le diagnostique ne râle pas, ces modifications sont considérées comme natives.
Pour le langage, c’est tout simplement du bash.
Si tu veux plus d’infos, passe sur le fil dédié, ça sera plus approprié qu’ici vu que ton sujet est résolu.

on, après quelques jours, je ne sais pas ce qui s’est passé, mais le hook n’existe plus, et les fichiers modifiés sont redevenus comme à l’origine.
J’ai soit oublié quelque chose, soit fait une fausse manip, soit…

Toujours est-il que ça m’a permis de découvrir une autre méthode beaucoup plus simple :smiley:

Dans /var/www/nextcloud/config/config.php
il y a cette ligne vers la fin :

'logout_url' => 'https://yourdomain.fr/yunohost/sso/?action=logout',

Il suffit de remplacer cette url par celle qu’on veut (en l’occurence, dans le cas de ce fil, j’ai remis l’adresse de mon nextcloud), et ça fonctionne sans problème.

C’est sans doute beaucoup plus simple, et peut-être même fait exprès ! :wink:

:uk:

There is a better way to resolve this problem.
Go directly to /var/www/nextcloud/config/config.php, and modify one of the latest lines :

'logout_url' => 'https://yourdomain.fr/yunohost/sso/?action=logout',

You just have to replace the existant url by one of your choice (in the case of this topic, I’ve replaced by my nextcloud url adress).

It’s easiest than hook, and maybe (surely) done for that ! :smiley:

3 Likes

??? Effectivement à part une fausse manip je ne vois pas. Même le dossier conf_regen a disparu?
/var/www/nextcloud/config/config.php est bien fait exprès pour les configurations personnelles de Nextcloud. Je l’utilise pour plusieurs choses dont les preview pdf,mp4,etc…la durée de rétention de la poubelle, preview generator, etc… et je n’avais même pas fais attention qu’il existait une option pour logout_url :roll_eyes:
Bien vu @Cellophile.

Oui, tout le dossier a disparu…

Ah? Bizarre, ça ne disparaît pas tout seul, il y a forcément une manip qui l’a supprimé comme une restauration de backup, un rm mal positionné, etc… L’essentiel est que tu as résolu ton problème.

Pour clarifier les choses, je voulais préciser que la piste du hook n’était pas bonne, ça ne peut fonctionner qu’avec des fichiers spécifiques à yunohost et non avec ceux spécifiques aux applications, je me suis aperçu de mon erreur entre temps. Ça automatise uniquement les modifications apportées qui apparaissent avec la commande yunohost tools regen-conf -n -d.
Donc même si il n’y avait pas eu de solution avec le fichier /var/www/nextcloud/config/config.php , le hook n’aurait pas été complètement automatique, la commande yunohost tools regen-conf nginx --force après la mise à jour de l’application aurait été nécessaire.

Ok, Merci Metyun pour la précision !

Je ne suis pas trop fan de cette solution, car la ligne initiale permettait de s’assurer que l’utilisateur était bien déconnecté de YunoHost après s’être déconnecté de Nextcloud. (De mémoire ça pouvait induire des risques de sécurité si on ne le faisait pas)

Tu peux garder la ligne initiale et ajouter &r= à la fin, suivi de la représentation en base64 de l’adresse de destination. Tu peux trouver des convertisseurs en ligne.

Rediriger vers https://test.example/ donnerait ainsi

'logout_url' => 'https://yourdomain.fr/yunohost/sso/?action=logout&r=aHR0cHM6Ly90ZXN0LmV4YW1wbGUv',

Il faudra vérifier que YunoHost ne grogne pas si on tente de déconnecter quelqu’un qui n’est pas déjà connecté. :sweat_smile:

1 Like

Bonjour @tituspijean !

Bien sûr, mais là, je ne sais pas si tu as tout lu, il se trouve que sur ce nextcloud, les utilisateurs n’ont pas de compte yunohost. Leur compte est seulement créé depuis l’interface de nextcloud. On aime ou on n’aime pas, pour moi dans un cas prévis, c’est la meilleure manière de donner un peu d’autonomie à un admin nextcloud, sans le perdre dans yunohost. Et donc je ne veux pas non plus perdre les utilisateurs en leur montrant une page de déconnexion sans aucun rapport avec le cloud qu’ils ont l’habitude d’utiliser ! :wink:

Oui, j’avais bien lu. :slight_smile: Ma suggestion permettait juste de répondre aux deux problèmes : gérer la déconnexion de YunoHost et maintenir une UX correcte en renvoyant tous les utilisateurs vers Nextcloud et non pas le SSO.

1 Like

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.