move js to own file
This commit is contained in:
		
							parent
							
								
									40ab6a4bb8
								
							
						
					
					
						commit
						8fe1f4d82a
					
				@ -21,119 +21,6 @@
 | 
				
			|||||||
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 | 
					    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script src="assets/oauth3.org/oauth3.core.js"></script>
 | 
					    <script src="assets/oauth3.org/oauth3.core.js"></script>
 | 
				
			||||||
    <script>
 | 
					    <script src="js/account.js"></script>
 | 
				
			||||||
      (function () {
 | 
					 | 
				
			||||||
        'use strict';
 | 
					 | 
				
			||||||
        var OAUTH3 = window.OAUTH3;
 | 
					 | 
				
			||||||
        var oauth3 = OAUTH3.create({
 | 
					 | 
				
			||||||
          host: window.location.host
 | 
					 | 
				
			||||||
        , pathname: window.location.pathname.replace(/\/[^\/]*$/, '/')
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        var $ = function () { return document.querySelector.apply(document, arguments); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        function onChangeProvider(providerUri) {
 | 
					 | 
				
			||||||
          // example https://oauth3.org
 | 
					 | 
				
			||||||
          return oauth3.setIdentityProvider(providerUri);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // This opens up the login window for the specified provider
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        function onClickLogin(ev) {
 | 
					 | 
				
			||||||
          ev.preventDefault();
 | 
					 | 
				
			||||||
          ev.stopPropagation();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          var email = $('.js-auth-subject').value;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          // TODO check subject for provider viability
 | 
					 | 
				
			||||||
          return oauth3.authenticate({
 | 
					 | 
				
			||||||
            subject: email
 | 
					 | 
				
			||||||
          , scope: 'email@oauth3.org'
 | 
					 | 
				
			||||||
          }).then(function (session) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            console.info('Authentication was Successful:');
 | 
					 | 
				
			||||||
            console.log(session);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // You can use the PPID (or preferably a hash of it) as the login for your app
 | 
					 | 
				
			||||||
            // (it securely functions as both username and password which is known only by your app)
 | 
					 | 
				
			||||||
            // If you use a hash of it as an ID, you can also use the PPID itself as a decryption key
 | 
					 | 
				
			||||||
            //
 | 
					 | 
				
			||||||
            console.info('Secure PPID (aka subject):', session.token.sub);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            function listStuff(data) {
 | 
					 | 
				
			||||||
              //window.alert("TODO: show authorized devices, domains, and connectivity information");
 | 
					 | 
				
			||||||
              var app6 = new Vue({
 | 
					 | 
				
			||||||
                el: '.v-app',
 | 
					 | 
				
			||||||
                data: {
 | 
					 | 
				
			||||||
                  domains: data.domains
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
              });
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return oauth3.request({
 | 
					 | 
				
			||||||
              url: 'https://api.oauth3.org/api/issuer@oauth3.org/jwks/:sub/:kid.json'
 | 
					 | 
				
			||||||
                .replace(/:sub/g, session.token.sub)
 | 
					 | 
				
			||||||
                .replace(/:kid/g, session.token.iss)
 | 
					 | 
				
			||||||
            , session: session
 | 
					 | 
				
			||||||
            }).then(function (resp) {
 | 
					 | 
				
			||||||
              console.info("Public Key:");
 | 
					 | 
				
			||||||
              console.log(resp.data);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
              return oauth3.request({
 | 
					 | 
				
			||||||
                url: 'https://api.oauth3.org/api/issuer@oauth3.org/acl/profile'
 | 
					 | 
				
			||||||
              , session: session
 | 
					 | 
				
			||||||
              }).then(function (resp) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                console.info("Inspect Token:");
 | 
					 | 
				
			||||||
                console.log(resp.data);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                return oauth3.request({
 | 
					 | 
				
			||||||
                  url: 'https://api.' + location.hostname + '/api/telebit.cloud/account'
 | 
					 | 
				
			||||||
                , session: session
 | 
					 | 
				
			||||||
                }).then(function (resp) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  console.info("Telebit Account:");
 | 
					 | 
				
			||||||
                  console.log(resp.data);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  if (resp.data && resp.data.domains) {
 | 
					 | 
				
			||||||
                    listStuff(resp.data);
 | 
					 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                  if (1 === resp.data.accounts.length) {
 | 
					 | 
				
			||||||
                    listStuff(resp);
 | 
					 | 
				
			||||||
                  } else if (0 === resp.data.accounts.length) {
 | 
					 | 
				
			||||||
                    return oauth3.request({
 | 
					 | 
				
			||||||
                      url: 'https://api.' + location.hostname + 'api/telebit.cloud/account'
 | 
					 | 
				
			||||||
                    , method: 'POST'
 | 
					 | 
				
			||||||
                    , session: session
 | 
					 | 
				
			||||||
                    , body: {
 | 
					 | 
				
			||||||
                        email: email
 | 
					 | 
				
			||||||
                      }
 | 
					 | 
				
			||||||
                    }).then(function (resp) {
 | 
					 | 
				
			||||||
                      listStuff(resp);
 | 
					 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                  } if (resp.data.accounts.length > 2) {
 | 
					 | 
				
			||||||
                    window.alert("Multiple accounts.");
 | 
					 | 
				
			||||||
                  } else {
 | 
					 | 
				
			||||||
                    window.alert("Bad response.");
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
              });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          }, function (err) {
 | 
					 | 
				
			||||||
            console.error('Authentication Failed:');
 | 
					 | 
				
			||||||
            console.log(err);
 | 
					 | 
				
			||||||
          });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $('body form.js-auth-form').addEventListener('submit', onClickLogin);
 | 
					 | 
				
			||||||
        onChangeProvider('oauth3.org');
 | 
					 | 
				
			||||||
      }());
 | 
					 | 
				
			||||||
    </script>
 | 
					 | 
				
			||||||
  </body>
 | 
					  </body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										112
									
								
								lib/extensions/admin/js/account.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								lib/extensions/admin/js/account.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,112 @@
 | 
				
			|||||||
 | 
					(function () {
 | 
				
			||||||
 | 
					  'use strict';
 | 
				
			||||||
 | 
					  var OAUTH3 = window.OAUTH3;
 | 
				
			||||||
 | 
					  var oauth3 = OAUTH3.create({
 | 
				
			||||||
 | 
					    host: window.location.host
 | 
				
			||||||
 | 
					  , pathname: window.location.pathname.replace(/\/[^\/]*$/, '/')
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  var $ = function () { return document.querySelector.apply(document, arguments); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  function onChangeProvider(providerUri) {
 | 
				
			||||||
 | 
					    // example https://oauth3.org
 | 
				
			||||||
 | 
					    return oauth3.setIdentityProvider(providerUri);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // This opens up the login window for the specified provider
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  function onClickLogin(ev) {
 | 
				
			||||||
 | 
					    ev.preventDefault();
 | 
				
			||||||
 | 
					    ev.stopPropagation();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var email = $('.js-auth-subject').value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO check subject for provider viability
 | 
				
			||||||
 | 
					    return oauth3.authenticate({
 | 
				
			||||||
 | 
					      subject: email
 | 
				
			||||||
 | 
					    , scope: 'email@oauth3.org'
 | 
				
			||||||
 | 
					    }).then(function (session) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      console.info('Authentication was Successful:');
 | 
				
			||||||
 | 
					      console.log(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // You can use the PPID (or preferably a hash of it) as the login for your app
 | 
				
			||||||
 | 
					      // (it securely functions as both username and password which is known only by your app)
 | 
				
			||||||
 | 
					      // If you use a hash of it as an ID, you can also use the PPID itself as a decryption key
 | 
				
			||||||
 | 
					      //
 | 
				
			||||||
 | 
					      console.info('Secure PPID (aka subject):', session.token.sub);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      function listStuff(data) {
 | 
				
			||||||
 | 
					        //window.alert("TODO: show authorized devices, domains, and connectivity information");
 | 
				
			||||||
 | 
					        var app6 = new Vue({
 | 
				
			||||||
 | 
					          el: '.v-app',
 | 
				
			||||||
 | 
					          data: {
 | 
				
			||||||
 | 
					            domains: data.domains
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return oauth3.request({
 | 
				
			||||||
 | 
					        url: 'https://api.oauth3.org/api/issuer@oauth3.org/jwks/:sub/:kid.json'
 | 
				
			||||||
 | 
					          .replace(/:sub/g, session.token.sub)
 | 
				
			||||||
 | 
					          .replace(/:kid/g, session.token.iss)
 | 
				
			||||||
 | 
					      , session: session
 | 
				
			||||||
 | 
					      }).then(function (resp) {
 | 
				
			||||||
 | 
					        console.info("Public Key:");
 | 
				
			||||||
 | 
					        console.log(resp.data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return oauth3.request({
 | 
				
			||||||
 | 
					          url: 'https://api.oauth3.org/api/issuer@oauth3.org/acl/profile'
 | 
				
			||||||
 | 
					        , session: session
 | 
				
			||||||
 | 
					        }).then(function (resp) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          console.info("Inspect Token:");
 | 
				
			||||||
 | 
					          console.log(resp.data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          return oauth3.request({
 | 
				
			||||||
 | 
					            url: 'https://api.' + location.hostname + '/api/telebit.cloud/account'
 | 
				
			||||||
 | 
					          , session: session
 | 
				
			||||||
 | 
					          }).then(function (resp) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            console.info("Telebit Account:");
 | 
				
			||||||
 | 
					            console.log(resp.data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (resp.data && resp.data.domains) {
 | 
				
			||||||
 | 
					              listStuff(resp.data);
 | 
				
			||||||
 | 
					              return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (1 === resp.data.accounts.length) {
 | 
				
			||||||
 | 
					              listStuff(resp);
 | 
				
			||||||
 | 
					            } else if (0 === resp.data.accounts.length) {
 | 
				
			||||||
 | 
					              return oauth3.request({
 | 
				
			||||||
 | 
					                url: 'https://api.' + location.hostname + 'api/telebit.cloud/account'
 | 
				
			||||||
 | 
					              , method: 'POST'
 | 
				
			||||||
 | 
					              , session: session
 | 
				
			||||||
 | 
					              , body: {
 | 
				
			||||||
 | 
					                  email: email
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              }).then(function (resp) {
 | 
				
			||||||
 | 
					                listStuff(resp);
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					            } if (resp.data.accounts.length > 2) {
 | 
				
			||||||
 | 
					              window.alert("Multiple accounts.");
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					              window.alert("Bad response.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }, function (err) {
 | 
				
			||||||
 | 
					      console.error('Authentication Failed:');
 | 
				
			||||||
 | 
					      console.log(err);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $('body form.js-auth-form').addEventListener('submit', onClickLogin);
 | 
				
			||||||
 | 
					  onChangeProvider('oauth3.org');
 | 
				
			||||||
 | 
					}());
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user