Implement login/logout
[blerg.git] / www / jssrc / blerg / API.js
index 04e7ff9..2fb9561 100644 (file)
@@ -1,6 +1,59 @@
+var baseURL = '';
+
 enyo.kind({
        name: "blerg.API",
+       loggedIn: false,
+       username: "",
        create: function() {
                this.inherited(arguments);
+               if (enyo.getCookie('auth') && enyo.getCookie('username')) {
+                       this.loggedIn = true;
+                       this.username = enyo.getCookie('username');
+                       // Defer the signal until everything's initialized
+                       setTimeout(function() {
+                               this.bubble('onLoginSuccessful', {username: this.username});
+                       }.bind(this), 0);
+               }
+       },
+       login: function(username, password) {
+               var req = new enyo.Ajax({
+                       url: baseURL + '/login',
+                       method: 'POST'
+               });
+               req.response(function(inSender, inResponse) {
+                       if (inResponse.status == 'success') {
+                               this.loggedIn = true;
+                               this.username = username;
+                               enyo.setCookie('username', username);
+                               this.bubble('onLoginSuccessful', {username: username});
+                       } else {
+                               enyo.setCookie('username', '', {"Max-Age": 0});
+                               this.bubble('onLoginFailed');
+                       }
+               }.bind(this));
+               req.go({
+                       username: username,
+                       password: password
+               });
+       },
+       logout: function() {
+               var req = new enyo.Ajax({
+                       url: baseURL + '/logout',
+                       method: 'POST'
+               });
+               req.response(function(inSender, inResponse) {
+                       this.loggedIn = false;
+                       enyo.setCookie('auth', '', {"Max-Age": 0});
+                       this.bubble('onLogoutSuccessful');
+               }.bind(this));
+               req.go({
+                       username: this.username
+               });
+               enyo.setCookie('username', '', {"Max-Age": 0});
+       },
+       requestFeedStatus: function() {
+               if (!this.loggedIn)
+                       throw new Error('Cannot request feed status when not logged in');
+               // TODO
        }
 });