work on jwt auth
This commit is contained in:
@@ -5,6 +5,8 @@ import { inject as service } from '@ember/service';
|
|||||||
export default class ApplicationAdapter extends JSONAPIAdapter {
|
export default class ApplicationAdapter extends JSONAPIAdapter {
|
||||||
@service session;
|
@service session;
|
||||||
|
|
||||||
|
namespace = 'api/v1';
|
||||||
|
|
||||||
@computed('session.{data.authenticated.access_token,isAuthenticated}')
|
@computed('session.{data.authenticated.access_token,isAuthenticated}')
|
||||||
get headers() {
|
get headers() {
|
||||||
let headers = {};
|
let headers = {};
|
||||||
@@ -15,4 +17,10 @@ export default class ApplicationAdapter extends JSONAPIAdapter {
|
|||||||
|
|
||||||
return headers;
|
return headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleResponse(status) {
|
||||||
|
if (status === 401 && this.session.isAuthenticated) {
|
||||||
|
this.session.invalidate();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
import RSVP from 'rsvp';
|
import RSVP from 'rsvp';
|
||||||
import fetch from 'fetch';
|
import fetch from 'fetch';
|
||||||
import {
|
import { run, later, cancel } from '@ember/runloop';
|
||||||
run, later, cancel
|
import { isEmpty } from '@ember/utils';
|
||||||
} from '@ember/runloop';
|
import { warn } from '@ember/debug';
|
||||||
import {
|
|
||||||
isEmpty
|
|
||||||
} from '@ember/utils';
|
|
||||||
import {
|
|
||||||
warn
|
|
||||||
} from '@ember/debug';
|
|
||||||
import BaseAuthenticator from 'ember-simple-auth/authenticators/base';
|
import BaseAuthenticator from 'ember-simple-auth/authenticators/base';
|
||||||
|
|
||||||
export default BaseAuthenticator.extend({
|
export default BaseAuthenticator.extend({
|
||||||
@@ -248,7 +242,7 @@ export default BaseAuthenticator.extend({
|
|||||||
const serverRefreshTokenEndpoint = this.get('serverRefreshTokenEndpoint');
|
const serverRefreshTokenEndpoint = this.get('serverRefreshTokenEndpoint');
|
||||||
|
|
||||||
return new RSVP.Promise((resolve, reject) => {
|
return new RSVP.Promise((resolve, reject) => {
|
||||||
this.makeRequest(serverRefreshTokenEndpoint, data)
|
this.makeRequest(serverRefreshTokenEndpoint, data, { Authorization:data["access_token"] })
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
return this._validateTokenAndScheduleRefresh(response);
|
return this._validateTokenAndScheduleRefresh(response);
|
||||||
})
|
})
|
||||||
|
|||||||
9
app/models/edition.js
Normal file
9
app/models/edition.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import Model, { attr } from "@ember-data/model";
|
||||||
|
|
||||||
|
export default class EditionModel extends Model {
|
||||||
|
@attr name;
|
||||||
|
@attr theme;
|
||||||
|
@attr status;
|
||||||
|
@attr startDate;
|
||||||
|
@attr endDate;
|
||||||
|
}
|
||||||
7
app/models/person.js
Normal file
7
app/models/person.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import Model, { attr } from "@ember-data/model";
|
||||||
|
|
||||||
|
export default class PersonModel extends Model {
|
||||||
|
@attr("string") firstname;
|
||||||
|
@attr("string") lastname;
|
||||||
|
@attr("date") birthday;
|
||||||
|
}
|
||||||
6
app/models/venue.js
Normal file
6
app/models/venue.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import Model, { attr } from "@ember-data/model";
|
||||||
|
|
||||||
|
export default class VenueModel extends Model {
|
||||||
|
@attr name;
|
||||||
|
@attr location;
|
||||||
|
}
|
||||||
@@ -8,4 +8,10 @@ export default class Router extends EmberRouter {
|
|||||||
|
|
||||||
Router.map(function() {
|
Router.map(function() {
|
||||||
this.route('login');
|
this.route('login');
|
||||||
|
this.route('authenticated', { path: '' }, function() {
|
||||||
|
// all routes that require the session to be authenticated
|
||||||
|
this.route('index', { path: '' });
|
||||||
|
this.route('editions');
|
||||||
|
this.route('venues');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
10
app/routes/application.js
Normal file
10
app/routes/application.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import Route from '@ember/routing/route';
|
||||||
|
import { inject } from '@ember/service';
|
||||||
|
|
||||||
|
export default class ApplicationRoute extends Route {
|
||||||
|
@inject session;
|
||||||
|
|
||||||
|
async beforeModel() {
|
||||||
|
await this.session.setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/routes/authenticated/editions.js
Normal file
10
app/routes/authenticated/editions.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import Route from '../authenticated';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class EditionsRoute extends Route {
|
||||||
|
@service store;
|
||||||
|
|
||||||
|
model() {
|
||||||
|
return this.store.findAll('edition');
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/routes/authenticated/venues.js
Normal file
10
app/routes/authenticated/venues.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import Route from '../authenticated';
|
||||||
|
import { service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class VenuesRoute extends Route {
|
||||||
|
@service store;
|
||||||
|
|
||||||
|
model() {
|
||||||
|
return this.store.findAll('venue');
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/routes/login.js
Normal file
10
app/routes/login.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import Route from '@ember/routing/route';
|
||||||
|
import { inject as service } from '@ember/service';
|
||||||
|
|
||||||
|
export default class LoginRoute extends Route {
|
||||||
|
@service session;
|
||||||
|
|
||||||
|
beforeModel(transition) {
|
||||||
|
this.get('session').prohibitAuthentication('index');
|
||||||
|
}
|
||||||
|
}
|
||||||
5
app/templates/authenticated/editions.hbs
Normal file
5
app/templates/authenticated/editions.hbs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{{#each @model as |edition|}}
|
||||||
|
<div>
|
||||||
|
{{edition.name}}
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
5
app/templates/authenticated/index.hbs
Normal file
5
app/templates/authenticated/index.hbs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<h3>Liste des pages</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><LinkTo @route="authenticated.editions">Editions</LinkTo></li>
|
||||||
|
</ul>
|
||||||
@@ -21,11 +21,11 @@ module.exports = function (environment) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (environment === 'development') {
|
if (environment === 'development') {
|
||||||
// ENV.APP.LOG_RESOLVER = true;
|
ENV.APP.LOG_RESOLVER = true;
|
||||||
// ENV.APP.LOG_ACTIVE_GENERATION = true;
|
ENV.APP.LOG_ACTIVE_GENERATION = true;
|
||||||
// ENV.APP.LOG_TRANSITIONS = true;
|
ENV.APP.LOG_TRANSITIONS = true;
|
||||||
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
|
ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
|
||||||
// ENV.APP.LOG_VIEW_LOOKUPS = true;
|
ENV.APP.LOG_VIEW_LOOKUPS = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (environment === 'test') {
|
if (environment === 'test') {
|
||||||
@@ -44,5 +44,10 @@ module.exports = function (environment) {
|
|||||||
// here you can enable a production-specific feature
|
// here you can enable a production-specific feature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENV['ember-simple-auth'] = {
|
||||||
|
routeAfterAuthentication: 'authenticated.index',
|
||||||
|
routeAfterInvalidation: 'login',
|
||||||
|
};
|
||||||
|
|
||||||
return ENV;
|
return ENV;
|
||||||
};
|
};
|
||||||
|
|||||||
6
package-lock.json
generated
6
package-lock.json
generated
@@ -1921,9 +1921,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@ember-data/model/node_modules/inflection": {
|
"node_modules/@ember-data/model/node_modules/inflection": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/inflection/-/inflection-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/inflection/-/inflection-3.0.2.tgz",
|
||||||
"integrity": "sha512-EpyF+TLa3xZPClbkp9pDJZtJFYPHouWuFYsfAQI8AfjnaPVOpmRV6GSzCs+QGelj2eZ7oQllcK23aI1vHhPVVg==",
|
"integrity": "sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": ">=18.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user