0
votes

I'm creating a frontend for a C program with an embedded web interface that has a simple REST api. I'd like to use ember-simple-auth with a customer authenticator and authorizer that talks to that api endpoint.

var Authenticator = AuthenticatorBase.extend({
    restore: function(data) {
       ...
    },

    authenticate: function(credentials) {
        var _this = this;
        return new Ember.RSVP.Promise(function(resolve, reject) {
            ... ??? ...
        });
    },
    
    invalidate: function() {
        var _this = this;
        return new Ember.RSVP.Promise(function(resolve) {
            ... ??? ...
        });
    },
});

In the ember-simple-auth examples, I see the custom authenticator implementation that uses Ember.$.ajax to post to server like this:

authenticate: function(credentials) {
    var _this = this;
    return new Ember.RSVP.Promise(function(resolve, reject) {
        Ember.$.ajax({
            url:         _this.tokenEndpoint,
            type:        'POST',
            data:        { username: credentials.identification,
                           password: credentials.password },
        }).then(function(response) {
            Ember.run(function() {
                resolve({ token: response.session.token });
            });
        }, function(xhr, status, error) {
            var response = JSON.parse(xhr.responseText);
            Ember.run(function() {
                reject(response.error);
            });
        });
    });
},
   

But I'd rather use ember-data for this (I think) -- new to ember and ember-data, so it's not clear. Assuming my API endpoint is /session, what would my authenticate method look like with ember-data?

On a related note: I'm using ember-cli and running ember server for development. How do I tell ember-data to point to my C-based server for the REST calls? I'm trying this, but doesn't seem to be affecting the ember-data calls - they just go to the ember server:

// app/adapters/application.js
import DS from "ember-data";

export default DS.RESTAdapter.extend({
    host: 'localhost:48880',
    namespace: '/'
});
1
You "tell" ember-data where to perform API calls by using an DS.Adapter (REST or JSON etc.) emberjs.com/api/data/classes/DS.Adapter.html Just like in your snippet, so why is not working? What errors did you encounter?givanse

1 Answers

0
votes

When you want to use Ember Data you'd need to have a Session model or so so that when you create an instance of that a POST to /sessions would be triggered. I don't actually think that makes sense though and you don't really get any benefits from using Ember Data in that case - I'd recommend to simply go with plain Ember.$.ajax and use Ember Data for your actual model data.