How to make Nuxt-auth and Nuxt-i18n to be friends
Hope it'll be helpful for somebody =)
export default ({ app, $auth }) => { $auth.onRedirect((to, from) => { return app.localePath(to) })}
It seems that there was a solution for that problem https://github.com/nuxt-community/auth-module/pull/185, but I can't access to onRedirect
method in the current release.
I did a workaround. I added auth-lang-redirect.js
plugin, which overrides redirect
option defined in the nuxt.config.js
file.
export default ({ app }) => { var redirect = app.$auth.$storage.options.redirect for (var key in redirect) { redirect[key] = '/' + app.i18n.locale + redirect[key] } app.$auth.$storage.options.redirect = redirect}
Notice that I don't use nuxt-i18n
module, but you should get the point. You have to register this plugin in nuxt.config.js
like this:
auth: { strategies: { ... }, redirect: { login: '/login', logout: '/', callback: '/login', home: '/user/profile' }, plugins: ['@/plugins/auth-lang-redirect.js'] },
export default function({ app, $auth }) { const redirect = { ...$auth.$storage.options.redirect }; const localizeRedirects = () => { for (const key in redirect) { $auth.$storage.options.redirect[key] = app.localePath(redirect[key]); } }; localizeRedirects(); app.i18n.onLanguageSwitched = () => { localizeRedirects(); };}