0
votes

I'm using ember-simple-auth along with ember-validations to validate my user login credentials

in order to validate I "override" the login route's login action in controller.

The problem is that after validation I now wanna bubble up the action; however, since validate returns a promise I can't just simply return true.

I tried calling my route with this.get('target').send('login') but apparently it doesn't work. I tried this.send('login') but this creates an infinite loop as the controller calls itself recursively.

1

1 Answers

0
votes

Just use a different action name in the controller and call login there

actions: {
    validate: function() {

        var that = this;
        return this.validate().then(function() {
            that.send('login');
        }, function() {
            // report errors in an array
            var errors = that.get('errors');
            var fullErrors = [];
            Object.keys(errors).forEach(function(val) {
                if(errors[val] instanceof Array)
                    errors[val].forEach(function(msg) {
                        fullErrors.push([val, msg].join(" "));
                    });
            });
            that.set('fullErrors',fullErrors);
        });
    },
    loginFailed: function(xhr) {
        this.set('errorMessage', xhr.responseText);
    }
}