diff --git a/bower.json b/bower.json
index 5fc2fd4..ad65dce 100755
--- a/bower.json
+++ b/bower.json
@@ -38,7 +38,8 @@
"smalot-bootstrap-datetimepicker": "~2.3.4",
"js-data-angular": "~3.1.0",
"ui-select": "angular-ui-select#~0.13.2",
- "ngInfiniteScroll": "~1.2.1"
+ "ngInfiniteScroll": "~1.2.1",
+ "satellizer": "~0.13.3"
},
"devDependencies": {
"angular-mocks": ">=1.2.*",
diff --git a/client/app/app.js b/client/app/app.js
index c86dbec..78f98ec 100755
--- a/client/app/app.js
+++ b/client/app/app.js
@@ -19,9 +19,10 @@ angular.module('dssWebApp', [
'angular-jwt',
'http-auth-interceptor',
'angular-smilies',
+ 'satellizer',
'angulartics.google.analytics'
])
- .config(function ($stateProvider, $sceDelegateProvider, $httpProvider, $urlRouterProvider, $locationProvider, $provide,
+ .config(function ($stateProvider, $sceDelegateProvider, $httpProvider, $urlRouterProvider, $locationProvider, $provide, $authProvider,
ngClipProvider, jwtInterceptorProvider, $analyticsProvider, dialogsProvider, DSProvider, DSHttpAdapterProvider,
SERVER_CONFIG, STORAGE) {
$urlRouterProvider
@@ -30,7 +31,27 @@ angular.module('dssWebApp', [
//$httpProvider.defaults.headers.common.Accept = 'application/json';
$httpProvider.defaults.useXDomain = true;
$httpProvider.interceptors.push('AuthInterceptor');
+ $authProvider.baseUrl = SERVER_CONFIG.apiUrl + '/';
+ $authProvider.loginUrl = '_login';
+ $authProvider.authToken = 'JWT';
+ $authProvider.facebook({
+ name: 'facebook',
+ url: '/_login/?backend=facebook',
+ clientId: '154504534677009',
+ authorizationEndpoint: 'https://www.facebook.com/v2.5/dialog/oauth',
+ redirectUri: window.location.origin + '/',
+ requiredUrlParams: ['display', 'scope'],
+ scope: ['email'],
+ scopeDelimiter: ',',
+ display: 'popup',
+ type: '2.0',
+ popupOptions: {width: 580, height: 400}
+ });
+ $authProvider.twitter({
+ //qmvJ6tptgd8G9T9WYp6P3Q
+ url: '/_login?backend=twitter',
+ });
ngClipProvider.setPath("bower_components/zeroclipboard/dist/ZeroClipboard.swf");
$analyticsProvider.firstPageview(true);
@@ -54,6 +75,11 @@ angular.module('dssWebApp', [
'https://dsscdn.blob.core.windows.net/mixes/**'
]);
$locationProvider.html5Mode(true);
+
+ $authProvider.google({
+ clientId: '248170132962-5km115budk9h84raa26hdmnnqdj8ivkl.apps.googleusercontent.com'
+ });
+
}).run(function ($http, $rootScope, $state, $window, LoginService, Session, SocketService) {
$rootScope.isPlaying = false;
@@ -78,14 +104,6 @@ angular.module('dssWebApp', [
});
};
- hello.init({
- facebook: '154504534677009',
- twitter: 'qmvJ6tptgd8G9T9WYp6P3Q',
- google: '248170132962-5km115budk9h84raa26hdmnnqdj8ivkl.apps.googleusercontent.com'
- }, {
- redirect_uri: '/'
- });
-
//ensure login before state change
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
if (!$rootScope.currentUser && Session.getLocalToken() != null && Session.getBackend()) {
diff --git a/client/app/services/auth/login.service.js b/client/app/services/auth/login.service.js
index 44fbd4e..b2f49a4 100644
--- a/client/app/services/auth/login.service.js
+++ b/client/app/services/auth/login.service.js
@@ -1,5 +1,5 @@
angular.module('dssWebApp')
- .factory('LoginService', function ($rootScope, $http, $q, Session, UserModel, logger,
+ .factory('LoginService', function ($rootScope, $http, $q, $auth, Session, UserModel, logger,
SERVER_CONFIG, STORAGE, AUTH_BACKENDS, AUTH_EVENTS) {
return {
@@ -10,32 +10,38 @@ angular.module('dssWebApp')
};
function loginUser(provider) {
- var defer = $q.defer();
- var backend = provider || Session.getBackend();
- hello(backend).login({force: false}).then(function (result) {
- var response = hello.getAuthResponse(backend);
- Session.setLocalToken(response.access_token);
- getJwtToken(response.access_token, AUTH_BACKENDS[backend])
- .then(function (user) {
- defer.resolve(user);
- }).error(function (reason, code) {
- defer.reject(reason, code);
- });
- }, function (e) {
- console.error(e);
- defer.reject(e);
- });
- return defer.promise;
+ var deferred = $q.defer();
+
+ var prov = provider || Session.getBackend();
+ $auth.authenticate(prov)
+ .then(function () {
+ console.log('You have successfully signed in with ' + prov + '!');
+ deferred.resolve();
+ })
+ .catch(function (error) {
+ if (error.error) {
+ // Popup error - invalid redirect_uri, pressed cancel button, etc.
+ console.error(error.error);
+ deferred.reject(error.error);
+ } else if (error.data) {
+ // HTTP response error from server
+ console.error(error.data.message, error.status);
+ deferred.reject(error.status);
+ } else {
+ console.error(error);
+ deferred.reject(error);
+ }
+ });
+ return deferred.promise;
}
- function getJwtToken(helloToken, backend) {
+ function getJwtToken(token, backend) {
var defer = $q.defer();
//need to clear any cached tokens before attempting login
//otherwise server will 403 us
Session.removeJwtToken();
- $http.post(SERVER_CONFIG.apiUrl + '/_login/', {
- "access_token": helloToken,
- "backend": backend
+ $http.post(SERVER_CONFIG.apiUrl + '/_login?backend?backend=' + backend , {
+ 'code': token
}).success(function (response, status, headers, config) {
if (response.token) {
Session.setToken(response.token);
@@ -43,10 +49,10 @@ angular.module('dssWebApp')
Session.setBackend(backend);
defer.resolve(backend);
} else {
- defer.reject("Invalid response token", 500);
+ defer.reject('Invalid response token', 500);
}
}).error(function (response, status, headers, config) {
- defer.reject("Unable to retrieve access token", 500);
+ defer.reject('Unable to retrieve access token', 500);
});
return defer.promise;
}
@@ -61,11 +67,11 @@ angular.module('dssWebApp')
$rootScope.$broadcast(AUTH_EVENTS.loginSuccess, user);
defer.resolve(user);
}, function (result) {
- defer.reject("Unable to get user object", 500);
+ defer.reject('Unable to get user object', 500);
})
}).error(function (data, status, headers, config) {
- defer.reject("Unable to get user proxy", 500);
- });
+ defer.reject('Unable to get user proxy', 500);
+ });
return defer.promise;
}
diff --git a/client/index.html b/client/index.html
index c1c0ce0..d822013 100644
--- a/client/index.html
+++ b/client/index.html
@@ -123,6 +123,7 @@
+