// from: http://blog.willrax.com/fetching-the-current-user-with-simple-auth/
import Ember from "ember";
import Session from "simple-auth/session";

// This is pulled straight from ember-cli-simple-auth-token
function getTokenData(token) {
  var tokenData = atob(token.split('.')[1]);
  try {
    return JSON.parse(tokenData);
  } catch (e) {
    return tokenData;
  }
}

export default {
  name: "custom-session",
  before: "simple-auth",
  initialize: function(container) {
    Session.reopen({
      setCurrentUser: function() {
        var token = this.get("token");
        var self = this;

        if (!Ember.isEmpty(token)) {
          var t = getTokenData(token);
          return container.lookup("store:main").find("user", t['sub']).then(function(user) {
            self.set("currentUser", user);
          });
        }
      }.observes("token")
    });
  }
};