making it better
This commit is contained in:
		
							parent
							
								
									a7d93827d1
								
							
						
					
					
						commit
						ff8d740da1
					
				@ -18,7 +18,7 @@ app.config(['$stateProvider', '$urlRouterProvider', 'localStorageServiceProvider
 | 
				
			|||||||
    views: {
 | 
					    views: {
 | 
				
			||||||
      'header': {
 | 
					      'header': {
 | 
				
			||||||
        templateUrl: '/templates/partials/header.html',
 | 
					        templateUrl: '/templates/partials/header.html',
 | 
				
			||||||
        controller: 'HomeController',
 | 
					        controller: 'SignInController',
 | 
				
			||||||
        controllerAs: 'vm'
 | 
					        controllerAs: 'vm'
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      'menu': {
 | 
					      'menu': {
 | 
				
			||||||
@ -34,7 +34,7 @@ app.config(['$stateProvider', '$urlRouterProvider', 'localStorageServiceProvider
 | 
				
			|||||||
    views: {
 | 
					    views: {
 | 
				
			||||||
      'content@': {
 | 
					      'content@': {
 | 
				
			||||||
        templateUrl: 'templates/home.html',
 | 
					        templateUrl: 'templates/home.html',
 | 
				
			||||||
        controller: 'HomeController',
 | 
					        controller: 'SignInController',
 | 
				
			||||||
        controllerAs: 'vm'
 | 
					        controllerAs: 'vm'
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -17,4 +17,5 @@ app.controller('HomeController', [
 | 
				
			|||||||
    return profile.email;
 | 
					    return profile.email;
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  throw new Error('loaded home controller');
 | 
				
			||||||
}]);
 | 
					}]);
 | 
				
			||||||
 | 
				
			|||||||
@ -9,10 +9,22 @@ app.controller('SignInController', [
 | 
				
			|||||||
  vm.timers = {};
 | 
					  vm.timers = {};
 | 
				
			||||||
  vm.defaultIssuer = 'provider.' + location.host.replace(/^cloud\./, '');
 | 
					  vm.defaultIssuer = 'provider.' + location.host.replace(/^cloud\./, '');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vm.session = Auth.session;
 | 
				
			||||||
 | 
					  vm.sessions = Auth.sessions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vm.showAdvanced = true;
 | 
				
			||||||
  vm.toggleAdvanced = function () {
 | 
					  vm.toggleAdvanced = function () {
 | 
				
			||||||
 | 
					    vm.showAdvanced = !vm.showAdvanced;
 | 
				
			||||||
    vm.independentIssuer = !vm.independentIssuer;
 | 
					    vm.independentIssuer = !vm.independentIssuer;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vm.notification = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vm.signOut = function () {
 | 
				
			||||||
 | 
					    Auth.signOut();
 | 
				
			||||||
 | 
					    $location.path('/splash-page');
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vm._setSubject = function (subject) {
 | 
					  vm._setSubject = function (subject) {
 | 
				
			||||||
    vm.currentSubject = vm.newSubject;
 | 
					    vm.currentSubject = vm.newSubject;
 | 
				
			||||||
    subject = subject || vm.newSubject;
 | 
					    subject = subject || vm.newSubject;
 | 
				
			||||||
@ -69,14 +81,14 @@ app.controller('SignInController', [
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vm.selectSession = function (session) {
 | 
					  vm.selectSession = function (session) {
 | 
				
			||||||
 | 
					    vm.session = session;
 | 
				
			||||||
    vm.oauth3.init({
 | 
					    vm.oauth3.init({
 | 
				
			||||||
      location: location
 | 
					      location: location
 | 
				
			||||||
    , issuer: vm.currentIssuer
 | 
					    , issuer: session.issuer
 | 
				
			||||||
    , audience: vm.currentIssuer
 | 
					    , audience: session.audience || session.issuer
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vm.oauth3.sessions = vm.oauth3.sessions || [];
 | 
					 | 
				
			||||||
  vm.instaauth = function () {
 | 
					  vm.instaauth = function () {
 | 
				
			||||||
    return vm._setSubject().then(function () {
 | 
					    return vm._setSubject().then(function () {
 | 
				
			||||||
      return vm._setIssuer().then(function () {
 | 
					      return vm._setIssuer().then(function () {
 | 
				
			||||||
@ -91,11 +103,9 @@ app.controller('SignInController', [
 | 
				
			|||||||
      subject: subject
 | 
					      subject: subject
 | 
				
			||||||
    , scope: [ 'domains@oauth3.org', 'domains', 'dns@oauth3.org', 'dns', 'www@daplie.com' ]
 | 
					    , scope: [ 'domains@oauth3.org', 'domains', 'dns@oauth3.org', 'dns', 'www@daplie.com' ]
 | 
				
			||||||
    }).then(function (session) {
 | 
					    }).then(function (session) {
 | 
				
			||||||
      console.log('session', session);
 | 
					 | 
				
			||||||
      vm.hasSession = session;
 | 
					 | 
				
			||||||
      session.subject = subject;
 | 
					      session.subject = subject;
 | 
				
			||||||
      session.issuer = issuer;
 | 
					      session.issuer = issuer;
 | 
				
			||||||
      vm.oauth3.sessions.push(session);
 | 
					      Auth.add(session);
 | 
				
			||||||
    }, function (err) {
 | 
					    }, function (err) {
 | 
				
			||||||
      console.log('auth error');
 | 
					      console.log('auth error');
 | 
				
			||||||
      console.log(err);
 | 
					      console.log(err);
 | 
				
			||||||
@ -106,13 +116,7 @@ app.controller('SignInController', [
 | 
				
			|||||||
  vm.setIssuer(vm.defaultIssuer);
 | 
					  vm.setIssuer(vm.defaultIssuer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vm.signIn = function () {
 | 
					  vm.signIn = function () {
 | 
				
			||||||
    vm.auth().then(function () {
 | 
					    vm.auth();
 | 
				
			||||||
      var userInfo = {
 | 
					 | 
				
			||||||
        email: vm.currentSubject,
 | 
					 | 
				
			||||||
        name: 'Johnny Cash'
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
      Auth.setUser(userInfo);
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}]);
 | 
					}]);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
app.controller('WebsiteController', [ 'azp@oauth3.org', function ($scope, Oauth3) {
 | 
					app.controller('WebsiteController', [ '$scope', 'azp@oauth3.org', function ($scope, Oauth3) {
 | 
				
			||||||
  var vm = this;
 | 
					  var vm = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vm.oauth3 = Oauth3.oauth3;
 | 
					  vm.oauth3 = Oauth3.oauth3;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,26 +1,66 @@
 | 
				
			|||||||
app.factory('Auth', [
 | 
					app.factory('Auth', [
 | 
				
			||||||
  '$rootScope', 'localStorageService', '$location', 'azp@oauth3.org'
 | 
					  '$rootScope', 'localStorageService', '$location', 'azp@oauth3.org'
 | 
				
			||||||
, function($rootScope, localStorageService, $location, Oauth3) {
 | 
					, function($rootScope, localStorageService, $location, Oauth3) {
 | 
				
			||||||
  var user;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return {
 | 
					  var dapSession = 'dap-session';
 | 
				
			||||||
    setUser: function(currentUser){
 | 
					  var dapSessions = 'dap-sessions';
 | 
				
			||||||
      user = currentUser;
 | 
					
 | 
				
			||||||
 | 
					  var Auth = {
 | 
				
			||||||
 | 
					    setUser: function (currentUser) {
 | 
				
			||||||
      if (redirectedURL === '/splash-page') {
 | 
					      if (redirectedURL === '/splash-page') {
 | 
				
			||||||
        $location.path('/home');
 | 
					        $location.path('/home');
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        $location.path('/' + redirectedURL);
 | 
					        $location.path('/' + redirectedURL);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      user = localStorageService.set('userAuth', JSON.stringify(currentUser));
 | 
					      localStorageService.set('userAuth', JSON.stringify(currentUser));
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    isLoggedIn: function(){
 | 
					    isLoggedIn: function () {
 | 
				
			||||||
      // TODO check sessions instead
 | 
					      Auth.restore();
 | 
				
			||||||
      user = JSON.parse(localStorageService.get('userAuth'));
 | 
					
 | 
				
			||||||
      return (user) ? user : false;
 | 
					      return Auth.session || false;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    getProfile: function(profile) {
 | 
					    getProfile: function (profile) {
 | 
				
			||||||
      profile = user;
 | 
					      Auth.restore();
 | 
				
			||||||
      return profile;
 | 
					
 | 
				
			||||||
 | 
					      return Auth.session || false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					  , add: function (session) {
 | 
				
			||||||
 | 
					      var obj = JSON.parse(localStorage.getItem(dapSessions) || 'null') || {};
 | 
				
			||||||
 | 
					      var dapName = 'dap-' + session.subject + '|' + session.issuer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      console.log('session', session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      Auth.session = session;
 | 
				
			||||||
 | 
					      Auth.sessions.push(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      localStorage.setItem(dapName, JSON.stringify(session));
 | 
				
			||||||
 | 
					      localStorage.setItem(dapSession, dapName);
 | 
				
			||||||
 | 
					      obj[dapName] = true;
 | 
				
			||||||
 | 
					      localStorage.setItem(dapSessions, JSON.stringify(obj));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  , restore: function () {
 | 
				
			||||||
 | 
					      var dapName = localStorage.getItem(dapSession);
 | 
				
			||||||
 | 
					      Auth.sessions.length = 0; // don't overwrite with a new array, keep original references
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      (Object.keys(JSON.parse(localStorage.getItem(dapSessions) || 'null') || {})).forEach(function (name) {
 | 
				
			||||||
 | 
					        var session = JSON.parse(localStorage.getItem(name) || 'null');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (session) {
 | 
				
			||||||
 | 
					          session.email = session.subject;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (dapName === name) {
 | 
				
			||||||
 | 
					          Auth.session = session;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Auth.sessions.push(session);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return Auth.session;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  , sessions: []
 | 
				
			||||||
 | 
					  , session: null
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return Auth;
 | 
				
			||||||
}]);
 | 
					}]);
 | 
				
			||||||
 | 
				
			|||||||
@ -19,13 +19,28 @@
 | 
				
			|||||||
      </form>
 | 
					      </form>
 | 
				
			||||||
      <ul class="nav navbar-nav navbar-right">
 | 
					      <ul class="nav navbar-nav navbar-right">
 | 
				
			||||||
        <li class="dropdown">
 | 
					        <li class="dropdown">
 | 
				
			||||||
          <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ vm.userName() }} <i class="fa fa-user" aria-hidden="true"></i> <span class="caret"></span></a>
 | 
					          <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span ng-bind="vm.session.subject">me@example.com</span>
 | 
				
			||||||
 | 
					            <i class="fa fa-user" aria-hidden="true"></i> <span class="caret"></span>
 | 
				
			||||||
 | 
					            <br><small ng-bind="vm.session.issuer">example.com</small></a>
 | 
				
			||||||
          <ul class="dropdown-menu">
 | 
					          <ul class="dropdown-menu">
 | 
				
			||||||
            <li><a href="feed.html" target="_blank">Preview My Public Site</a></li>
 | 
					            <li><a href="feed.html" target="_blank">Preview My Public Site</a></li>
 | 
				
			||||||
            <li><a>Account Settings</a></li>
 | 
					            <li><a>Account Settings</a></li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <li role="separator" class="divider"></li>
 | 
					            <li role="separator" class="divider"></li>
 | 
				
			||||||
            <li><a>Switch User</a></li>
 | 
					
 | 
				
			||||||
            <li ng-click="vm.signOut()"><a>Logout</a></li>
 | 
					            <li ng-if="vm.sessions.length">Switch User</li>
 | 
				
			||||||
 | 
					            <li ng-repeat="session in vm.sessions"><a ng-click="vm.selectSession(session)"><span ng-bind="session.subject">me@example.com</span> <i class="fa fa-user" aria-hidden="true"></i>
 | 
				
			||||||
 | 
					              <br><small ng-bind="session.issuer">example.com</small></a></li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <li ng-if="vm.sessions.length" role="separator" class="divider"></li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <li>Add User <i class="fa fa-cog" aria-hidden="true" ng-click="vm.toggleAdvanced()"></i>
 | 
				
			||||||
 | 
					              <br><input class="input" type="text" ng-model="vm.newSubject" ng-change="vm.setSubject()" />
 | 
				
			||||||
 | 
					              <br><input class="input" type="text" ng-if="vm.showAdvanced" ng-model="vm.newIssuer" ng-change="vm.setIssuer()" />
 | 
				
			||||||
 | 
					              <br><button class="btn btn-default" type="button" ng-click="vm.auth()" >Add</button>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <li ng-click="vm.signOut()"><a>Logout <i class="fa fa-sign-out" aria-hidden="true"></i></a></li>
 | 
				
			||||||
          </ul>
 | 
					          </ul>
 | 
				
			||||||
        </li>
 | 
					        </li>
 | 
				
			||||||
      </ul>
 | 
					      </ul>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user