Skip to content
This repository was archived by the owner on May 13, 2024. It is now read-only.

Commit 9fc732d

Browse files
author
Akanksh Saxena
authored
Merge pull request #664 from aziiee/add-users-me-error-handling
fix(auth): redirect to login on HTTP 401
2 parents eeea6ab + 45e30e1 commit 9fc732d

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

app/services/ajax.js

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
* @submodule timed-services
44
* @public
55
*/
6-
import { computed } from "@ember/object";
76
import { reads } from "@ember/object/computed";
87
import { inject as service } from "@ember/service";
8+
import { isUnauthorizedError } from "ember-ajax/errors";
99
import AjaxService from "ember-ajax/services/ajax";
1010

1111
/**
@@ -15,22 +15,17 @@ import AjaxService from "ember-ajax/services/ajax";
1515
* @extends EmberAjax.AjaxService
1616
* @public
1717
*/
18-
export default AjaxService.extend({
19-
/**
20-
* The session service
21-
*
22-
* @property {EmberSimpleAuth.SessionService} session
23-
* @public
24-
*/
25-
session: service("session"),
18+
export default class AjaxCustomService extends AjaxService {
19+
@service session;
20+
@service router;
2621

2722
/**
2823
* The JWT access token.
2924
*
3025
* @property {String} token
3126
* @public
3227
*/
33-
token: reads("session.data.authenticated.access_token"),
28+
@reads("session.data.authenticated.access_token") token;
3429

3530
/**
3631
* The HTTP request headers
@@ -40,16 +35,28 @@ export default AjaxService.extend({
4035
* @property {Object} headers
4136
* @public
4237
*/
43-
headers: computed("token", function() {
38+
get headers() {
4439
const headers = {
4540
Accept: "application/vnd.api+json",
4641
"Content-Type": "application/vnd.api+json"
4742
};
4843

49-
const auth = this.get("token")
50-
? { Authorization: `Bearer ${this.get("token")}` }
51-
: {};
44+
const auth = this.token ? { Authorization: `Bearer ${this.token}` } : {};
5245

5346
return Object.assign(headers, auth);
54-
})
55-
});
47+
}
48+
49+
handleResponse(status, headers, payload, requestData) {
50+
const response = super.handleResponse(
51+
status,
52+
headers,
53+
payload,
54+
requestData
55+
);
56+
57+
if (isUnauthorizedError(response)) {
58+
this.router.transitionTo("login");
59+
}
60+
return response;
61+
}
62+
}

0 commit comments

Comments
 (0)