From 9379e6e5744d57296c80ba9eedbebddc0272fdeb Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Sat, 5 Sep 2015 14:30:02 -0300 Subject: [PATCH] Permissions --- public/views/glidera.html | 112 +++++++++++++++-------- src/js/controllers/glidera.js | 16 +--- src/js/controllers/index.js | 63 ++++++++++--- src/js/controllers/preferencesGlidera.js | 7 +- src/js/services/glideraService.js | 2 +- 5 files changed, 131 insertions(+), 69 deletions(-) diff --git a/public/views/glidera.html b/public/views/glidera.html index 549803a51..d39f553a3 100644 --- a/public/views/glidera.html +++ b/public/views/glidera.html @@ -22,44 +22,72 @@
- +
-

You can buy and sell Bitcoin with a US bank account directly in Copay

-

Connect your Glidera account to get started

+

You can buy and sell Bitcoin with a US bank account directly in Copay.

+
Connect your Glidera account to get started
- - Do you already have the Oauth Code? - +
+ + Do you already have the Oauth Code? + +

Paste the authorization code here

-
-
-
+ +
+
+ Could not connect with Glidera: Unauthorized + Could not connect with Glidera: Forbidden + Could not connect with Glidera +
+
+ +
+
+ +
+ +
+
{{index.glideraEmail}}
+ +
+ {{index.glideraPersonalInfo.firstName}} {{index.glideraPersonalInfo.lastName}} {{index.glideraPersonalInfo.personalInfoState}} +
+
- {{index.glideraEmail}}
Preferences
-
    +
    • Buy @@ -74,33 +102,39 @@
    -

    Activity

    -
    -
    - Bought - Sold +
    +

    Activity

    +
    + No activity in your account
    - -
    - - {{tx.subtotal}} {{tx.currency}} - -
    -
    -
    - +
    +
    + Bought + Sold +
    + +
    + + {{tx.subtotal}} {{tx.currency}} + +
    +
    +
    + +
    +
    +
    + +
    +
    + Completed + Processing + Error
    -
    -
    - -
    -
    - Completed - Processing - Error
    diff --git a/src/js/controllers/glidera.js b/src/js/controllers/glidera.js index c55429de5..0b8d6d6ed 100644 --- a/src/js/controllers/glidera.js +++ b/src/js/controllers/glidera.js @@ -1,21 +1,11 @@ 'use strict'; angular.module('copayApp.controllers').controller('glideraController', - function($scope, $timeout, $modal, profileService, configService, storageService, glideraService) { + function($scope, $timeout, $modal, applicationService, profileService, configService, storageService, glideraService) { var config = configService.getSync().wallet.settings; this.authenticateUrl = glideraService.getOauthCodeUrl(); - this.update = function(token) { - var self = this; - glideraService.getTransactions(token, function(error, txs) { - self.txs = txs; - }); - glideraService.getEmail(token, function(error, data) { - self.email = data.email; - }); - }; - this.submitOauthCode = function(code) { var fc = profileService.focusedClient; var self = this; @@ -24,9 +14,9 @@ angular.module('copayApp.controllers').controller('glideraController', glideraService.getToken(code, function(error, data) { if (data && data.access_token) { storageService.setGlideraToken(fc.credentials.network, data.access_token, function() { - $scope.$emit('Local/GlideraTokenUpdated'); + $scope.$emit('Local/GlideraTokenUpdated', data.access_token); $timeout(function() { - self.loading = false; + self.loading = null; $scope.$apply(); }, 100); }); diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index ee8dd7634..de09c9026 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -114,8 +114,10 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.setSpendUnconfirmed(); self.glideraToken = null; - self.glideraTxs = null; + self.glideraPermissions = null; self.glideraEmail = null; + self.glideraPersonalInfo = null; + self.glideraTxs = null; $timeout(function() { self.hasProfile = true; @@ -848,22 +850,55 @@ angular.module('copayApp.controllers').controller('indexController', function($r }), 'name'); }; - self.initGlidera = function() { + self.initGlidera = function(accessToken) { if (self.isShared) return; - storageService.getGlideraToken(self.network, function(err, val) { - if (err || !val) return; + + var getToken = function(cb) { + if (accessToken) { + cb(null, accessToken); + } else { + storageService.getGlideraToken(self.network, cb); + } + }; + + getToken(function(err, accessToken) { + if (err || !accessToken) return; else { - self.glideraToken = val; - glideraService.getTransactions(val, function(error, txs) { - self.glideraTxs = txs; - }); - glideraService.getEmail(val, function(error, data) { - self.glideraEmail = data.email; + self.glideraToken = accessToken; + glideraService.getAccessTokenPermissions(self.glideraToken, function(err, p) { + if (err) { + self.glideraError = err; + $log.error(err); + } + else { + self.glideraPermissions = p; + self.updateGlidera(accessToken, p); + } }); } }); }; + self.updateGlidera = function(accessToken, permissions) { + if (!accessToken || !permissions) return; + + if (permissions.view_email_address) { + glideraService.getEmail(accessToken, function(err, data) { + self.glideraEmail = data.email; + }); + } + if (permissions.personal_info) { + glideraService.getPersonalInfo(accessToken, function(err, data) { + self.glideraPersonalInfo = data; + }); + } + if (permissions.transaction_history) { + glideraService.getTransactions(accessToken, function(err, data) { + self.glideraTxs = data; + }); + } + }; + // UX event handlers $rootScope.$on('Local/ColorUpdated', function(event) { self.updateColor(); @@ -913,8 +948,12 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); }); - $rootScope.$on('Local/GlideraTokenUpdated', function() { - self.initGlidera(); + $rootScope.$on('Local/GlideraTokenUpdated', function(event, accessToken) { + self.initGlidera(accessToken); + }); + + $rootScope.$on('Local/GlideraUpdated', function(event, accessToken, permissions) { + self.updateGlidera(accessToken, permissions); }); $rootScope.$on('Local/UnitSettingUpdated', function(event) { diff --git a/src/js/controllers/preferencesGlidera.js b/src/js/controllers/preferencesGlidera.js index 0c2a73e9b..9d4d4bd7f 100644 --- a/src/js/controllers/preferencesGlidera.js +++ b/src/js/controllers/preferencesGlidera.js @@ -1,11 +1,11 @@ 'use strict'; angular.module('copayApp.controllers').controller('preferencesGlideraController', - function($scope, $timeout, profileService, go, glideraService, storageService) { + function($scope, $timeout, profileService, applicationService, glideraService, storageService) { this.init = function(token) { var self = this; - glideraService.getPermissions(token, function(error, permission) { + glideraService.getAccessTokenPermissions(token, function(error, permission) { self.permission = permission; }); @@ -29,9 +29,8 @@ angular.module('copayApp.controllers').controller('preferencesGlideraController' this.revokeToken = function() { var fc = profileService.focusedClient; storageService.removeGlideraToken(fc.credentials.network, function() { - $scope.$emit('Local/GlideraTokenUpdated'); $timeout(function() { - go.walletHome(); + applicationService.restart(); }, 100); }); }; diff --git a/src/js/services/glideraService.js b/src/js/services/glideraService.js index 1f5a29fb8..62cbe7eb2 100644 --- a/src/js/services/glideraService.js +++ b/src/js/services/glideraService.js @@ -53,7 +53,7 @@ angular.module('copayApp.services').factory('glideraService', function($http, $l }; }; - root.getPermissions = function(token, cb) { + root.getAccessTokenPermissions = function(token, cb) { if (!token) return cb('Invalid Token'); $http(_get('/oauth/token', token)).then(function(data) { $log.info('Glidera Access Token Permissions: SUCCESS');