From 466c727d4e16551f726a788a35d283f757a4c506 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 3 Sep 2013 23:40:27 -0400 Subject: [PATCH] rewrite: facebook auth bug fixes. still not ideal solution, but it works for now --- assets/js/app.js | 2 +- assets/js/controllers/authCtrl.js | 5 +++++ src/controllers/auth.js | 14 +++++++++----- src/controllers/user.js | 2 -- src/routes/auth.js | 2 +- views/static/front.jade | 4 ++-- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/assets/js/app.js b/assets/js/app.js index 7a00d04f36..266fa4d352 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -21,7 +21,7 @@ window.habitrpg = angular.module('habitrpg', if (settings && settings.auth) { $httpProvider.defaults.headers.common['Content-Type'] = 'application/json;charset=utf-8'; $httpProvider.defaults.headers.common['x-api-user'] = settings.auth.apiId; - $httpProvider.defaults.headers.common['x-api-key'] = settings.auth.apiId; + $httpProvider.defaults.headers.common['x-api-key'] = settings.auth.apiToken; } // Handle errors diff --git a/assets/js/controllers/authCtrl.js b/assets/js/controllers/authCtrl.js index 1895063af8..da18fc6661 100644 --- a/assets/js/controllers/authCtrl.js +++ b/assets/js/controllers/authCtrl.js @@ -82,6 +82,11 @@ habitrpg.controller("AuthCtrl", ['$scope', '$rootScope', 'User', '$http', '$loca }).error(errorAlert); } + if ($location.path() == '/facebook-callback') { + var search = $location.search(); + runAuth(search._id, search.apiToken); + } + $scope.playButtonClick = function(){ if (User.authenticated()) { window.location.href = '/#/tasks'; diff --git a/src/controllers/auth.js b/src/controllers/auth.js index f56069e6c0..166923e44f 100644 --- a/src/controllers/auth.js +++ b/src/controllers/auth.js @@ -1,5 +1,7 @@ var passport = require('passport'); var _ = require('lodash'); +var async = require('async'); +var derbyAuthUtil = require('derby-auth/utils'); var User = require('../models/user').model; var api = module.exports; @@ -77,7 +79,7 @@ api.registerUser = function(req, res, next) { return cb("Username already taken"); } newUser = helpers.newUser(true); - salt = utils.makeSalt(); + salt = derbyAuthUtil.makeSalt(); newUser.auth = { local: { username: username, @@ -116,7 +118,7 @@ api.loginLocal = function(req, res, next) { // We needed the whole user object first so we can get his salt to encrypt password comparison User.findOne({ 'auth.local.username': username, - 'auth.local.hashed_password': utils.encryptPassword(password, user.auth.local.salt) + 'auth.local.hashed_password': derbyAuthUtil.encryptPassword(password, user.auth.local.salt) }, cb); } ], function(err, user) { @@ -200,9 +202,11 @@ api.setupPassport = function(router) { //res.redirect('/'); User.findOne({'auth.facebook.id':req.user.id}, function(err, user){ - if (err) return res.json(500, {err:err}); - if (!user) return res.json(401, {err: "New Facebook registrations aren't yet supported, only existing Facebook users. Help us code this!"}); - res.json({id: user._id, token: user.apiToken}); + if (err || !user) { + if (!err) err = "New Facebook registrations aren't yet supported, only existing Facebook users. Help us code this!"; + return res.redirect('/#/facebook-callback?err=' + err); + } + res.redirect('/#/facebook-callback?_id='+user._id+'&apiToken='+user.apiToken); }) }); diff --git a/src/controllers/user.js b/src/controllers/user.js index 4f5c9aa026..d2657c98b1 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -12,8 +12,6 @@ var items = require('habitrpg-shared/script/items'); var validator = require('derby-auth/node_modules/validator'); var check = validator.check; var sanitize = validator.sanitize; -var utils = require('derby-auth/utils'); -var derbyAuthUtil = require('derby-auth/utils'); var User = require('./../models/user').model; var Group = require('./../models/group').model; var api = module.exports; diff --git a/src/routes/auth.js b/src/routes/auth.js index ed921d1ee3..5bfc534d17 100644 --- a/src/routes/auth.js +++ b/src/routes/auth.js @@ -6,6 +6,6 @@ var router = new express.Router(); auth.setupPassport(router); //FIXME make this consistent with the others router.post('/register', auth.registerUser); router.post('/user/auth/local', auth.loginLocal); -router.post('/user/auth/facebook', auth.loginFacebook); +//router.post('/user/auth/facebook', auth.loginFacebook); module.exports = router; \ No newline at end of file diff --git a/views/static/front.jade b/views/static/front.jade index 59b4fdfe00..5bd1164f0f 100644 --- a/views/static/front.jade +++ b/views/static/front.jade @@ -25,9 +25,9 @@ block content button.close(type='button', data-dismiss='modal', aria-hidden='true') × h4.modal-title Login / Register .modal-body - //-a(ng-click='facebookAuth()') + a(href='/auth/facebook') img(src='/bower_components/habitrpg-shared/img/facebook-login-register.jpeg', alt='Login / Register With Facebook') - //h3 Or + h3 Or ul.nav.nav-tabs li.active a(data-toggle='tab',data-target='#login-tab') Login