Comments (5)
You are right @3emad!
So the scenario of implementing this, IMO, is tracking when we get 401
, save $location.path()
in cookies _redierect_to
just before redirect to the login page.
After login (or whatever), check $cookies._redirect_to
if existed then redirect to that path.
from manshar.
@amrnt I noticed the script expects the backend to return a response having two properties that depends on which are redirecting to login and assigning previous path, referring to this script:
$q.reject({
redirectTo: '/login',
previous: $location.path()
})
looking at this line, It seems we could just make sure the response object has the property of previous,maybe something like this:
'responseError': function(response) {
if (response.status === 401) {
if( typeof response.previous !== 'string')
response.previous = $location.path();
$location.path('/login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
on another thought if that works, even better:
'responseError': function(response) {
if (response.status === 401) {
if( typeof response.previous !== 'string')
response.previous = $location.path();
if( typeof response.redirectTo !== 'string')
response.redirectTo = '/login';
return $q.reject(response);
}
else {
return $q.reject(response);
}
Thoughts?
from manshar.
Great catch Emad.
I don't think this should rely on backend logic and the client should know where to go by itself.
The fix should be simple, in the resonseError part of the interceptor, we just need to set 'prev' search parameter on the location we're redirecting the user to ('/login'). LoginCtrl already knows what to do when a successful login happen when we have a prev parameter. So responseError becomes:
'responseError': function(response) {
if (response.status === 401) {
var previous = $location.path();
$location.path('/login').search('prev', previous);
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
I don't think the method 3emad proposed would be caught by $routeChangeError listener as this wasn't a route change (in the Angular Route sense).
Wanna create a pull request?
from manshar.
@mkhatib your correct, haven't used http interceptors before.
from manshar.
Wohoo! Thanks @3emad
from manshar.
Related Issues (20)
- Allow Community Moderators to make limited changes directly to the articles, for example: Removing extra whitespace, Making styling changes HOT 1
- Check if editor picks only one article at a time. HOT 1
- Comments flows behind Author card
- Expose an API to allow admins to update the role of a user
- Send Email notification to users when promoted to staff
- Add an item under admin dashboard for managing user roles
- Build admin UI for filtering users by names and promoting them to staff
- List all staff members and allow demoting them back to authors
- Expose an API to list users by role
- Add codeclimate
- Add rubocop to catch syntax errors.
- Broken API/ trouble accessing my Manshar account HOT 3
- Profile name is not updated in published articles HOT 5
- Manshar Story URL is broken
- updated articles' titles don't show up once shared on facebook HOT 2
- Add news from the development team category HOT 3
- Cann't reset my password HOT 2
- Update: the article was published later HOT 1
- For anyone looking for the data HOT 2
- Who to contact for security issues HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from manshar.