I'm trying to implement an authenticator such that it will let me send a client_id
with OAuth. In app/authenticators/oauth-custom.js
:
import Authenticator from 'simple-auth-oauth2/authenticators/oauth2';
export default Authenticator.extend({
makeRequest: (url, data) => {
data.client_id = EmberENV.clientId;
return this._super(url, data);
}
});
This however generate an error when I attempt to sign in:
TypeError: Cannot read property '_super' of undefined
The source map seem to suggest that _this
is set to be undefined
.
define('frontend/authenticators/oauth-custom', ['exports', 'simple-auth-oauth2/authenticators/oauth2'], function (exports, Authenticator) {
'use strict';
var _this = undefined;
exports['default'] = Authenticator['default'].extend({
makeRequest: function makeRequest(url, data) {
data.client_id = EmberENV.clientId;
return _this._super(url, data);
}
});
});
I'm using the current latest ember-cli 0.2.7, ember 1.13.2, ember-simple-auth 0.8.0. What's the issue?
I was confused about how the arrow functions work in ES6. Using arrow function means that this
inside the arrow function body refers to the this
value of its parent. This works:
export default Authenticator.extend({
makeRequest: function makeRequest(url, data) {
data.client_id = EmberENV.clientId;
return this._super(url, data);
}
});