From 80117212b83ca088635eec6d153dcd05a973d5f7 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Fri, 15 Dec 2017 22:23:56 +0100
Subject: [PATCH] Fixed #2: now redirect to previous page after login

---
 CHANGELOG                           | 1 +
 front/src/components/auth/Login.vue | 5 ++++-
 front/src/main.js                   | 2 +-
 front/src/router/index.js           | 3 ++-
 4 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 3b31937fc..d67dac695 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -7,6 +7,7 @@ Changelog
 
 - Import: can now specify search template when querying import sources (#45)
 - Player: better handling of errors when fetching the audio file (#46)
+- Login form: now redirect to previous page after login (#2)
 
 
 0.2.4 (2017-12-14)
diff --git a/front/src/components/auth/Login.vue b/front/src/components/auth/Login.vue
index 867738759..54e7b82e0 100644
--- a/front/src/components/auth/Login.vue
+++ b/front/src/components/auth/Login.vue
@@ -43,6 +43,9 @@ import auth from '@/auth'
 
 export default {
   name: 'login',
+  props: {
+    next: {type: String}
+  },
   data () {
     return {
       // We need to initialize the component with any
@@ -69,7 +72,7 @@ export default {
       }
       // We need to pass the component's this context
       // to properly make use of http in the auth service
-      auth.login(this, credentials, {path: '/library'}, function (response) {
+      auth.login(this, credentials, {path: this.next}, function (response) {
         // error callback
         if (response.status === 400) {
           self.error = 'invalid_credentials'
diff --git a/front/src/main.js b/front/src/main.js
index a214c3881..f15363512 100644
--- a/front/src/main.js
+++ b/front/src/main.js
@@ -32,7 +32,7 @@ Vue.http.interceptors.push(function (request, next) {
     // redirect to login form when we get unauthorized response from server
     if (response.status === 401) {
       logger.default.warn('Received 401 response from API, redirecting to login form')
-      router.push({name: 'login'})
+      router.push({name: 'login', query: {next: router.currentRoute.fullPath}})
     }
   })
 })
diff --git a/front/src/router/index.js b/front/src/router/index.js
index e546172b5..e3d008f58 100644
--- a/front/src/router/index.js
+++ b/front/src/router/index.js
@@ -30,7 +30,8 @@ export default new Router({
     {
       path: '/login',
       name: 'login',
-      component: Login
+      component: Login,
+      props: (route) => ({ next: route.query.next || '/library' })
     },
     {
       path: '/logout',
-- 
GitLab