Created
July 2, 2015 18:18
-
-
Save brianally/300862be606a49fec8b2 to your computer and use it in GitHub Desktop.
Ember Simple-Auth authenticator for handling manual login and getting OAuth token back from server.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// app/authenticators/admin.js | |
import Ember from "ember"; | |
import Base from "simple-auth/authenticators/base"; | |
import ENV from "../config/environment"; | |
export default Base.extend({ | |
// called by login form action | |
// this.get("session").authenticate("authenticator:admin", credentials).then(...) | |
authenticate: function(credentials) { | |
return new Ember.RSVP.Promise(function(resolve, reject) { | |
var userData = { | |
User: { | |
email : credentials.email, | |
password: credentials.password | |
} | |
}; | |
var params = { | |
url : ENV.loginEndpoint, | |
type : "POST", | |
data : userData, | |
dataType : "json" | |
}; | |
Ember.$.ajax(params).then(function(response) { | |
Ember.run(function() { | |
if ( !response.success ) { | |
// shouldn't reach here as errors should flow to error handler below | |
console.log(response); | |
reject(response.message); | |
} | |
else { | |
// make both token and user data available in session | |
resolve({ | |
access_token: response.data.token, | |
expires : response.data.expires, | |
user : response.data.user | |
}); | |
} | |
}); | |
}, function(xhr, status, error) { | |
Ember.run(function() { | |
reject(xhr.responseJSON.data.message); | |
}); | |
}); | |
}); | |
}, | |
// called on page refresh | |
restore: function(data) { | |
return new Ember.RSVP.Promise(function(resolve, reject) { | |
if (!Ember.isEmpty(data.access_token)) { | |
// log user in | |
resolve(data); | |
} else { | |
// send to /login | |
reject(); | |
} | |
}); | |
}, | |
invalidate: function(data) { | |
return new Ember.RSVP.Promise(function(resolve, reject) { | |
Ember.$.ajax({ | |
url : ENV.logoutEndpoint, | |
type : "POST", | |
data : {User: {id: data.userData.id}}, | |
dataType: "json", | |
headers : { | |
"Authorize": "Bearer " + data.access_token | |
} | |
}).then(function(response) { | |
Ember.run(function() { | |
resolve(); | |
}); | |
}, function(xhr, status, error) { | |
var response = JSON.parse(xhr.responseText); | |
Ember.run(function() { | |
reject(response.error); | |
}); | |
}); | |
}); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment