How to make Nuxt-auth and Nuxt-i18n to be friends How to make Nuxt-auth and Nuxt-i18n to be friends vue.js vue.js

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();  };}