can share a site with others
This commit is contained in:
		
							parent
							
								
									f33ea552b4
								
							
						
					
					
						commit
						3a36bd1f61
					
				@ -1 +1 @@
 | 
				
			|||||||
Subproject commit 1fe8733a064c55024bc384691813772d4c94665d
 | 
					Subproject commit db284fbf911dc4f9d0cb99bb512d9663dcfd0ece
 | 
				
			||||||
@ -27,6 +27,7 @@
 | 
				
			|||||||
    <script src="/assets/oauth3.org/oauth3.dns.js" charset="utf-8"></script>
 | 
					    <script src="/assets/oauth3.org/oauth3.dns.js" charset="utf-8"></script>
 | 
				
			||||||
    <script src="/assets/oauth3.org/oauth3.domains.js" charset="utf-8"></script>
 | 
					    <script src="/assets/oauth3.org/oauth3.domains.js" charset="utf-8"></script>
 | 
				
			||||||
    <script src="/js/www@daplie.com.js" charset="utf-8"></script>
 | 
					    <script src="/js/www@daplie.com.js" charset="utf-8"></script>
 | 
				
			||||||
 | 
					    <script src="/js/email@daplie.com.js" charset="utf-8"></script>
 | 
				
			||||||
    <!-- Angular Modules -->
 | 
					    <!-- Angular Modules -->
 | 
				
			||||||
    <script src="/js/lib/angular/angular.min.js" charset="utf-8"></script>
 | 
					    <script src="/js/lib/angular/angular.min.js" charset="utf-8"></script>
 | 
				
			||||||
    <script src="/js/lib/angular/angular-local-storage.js" charset="utf-8"></script>
 | 
					    <script src="/js/lib/angular/angular-local-storage.js" charset="utf-8"></script>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,16 @@
 | 
				
			|||||||
app.controller('emailCtrl', [
 | 
					app.controller('emailCtrl', [
 | 
				
			||||||
  '$scope',
 | 
					  '$scope', '$q', 'Auth', 'azp@oauth3.org', '$timeout'
 | 
				
			||||||
  function($scope) {
 | 
					, function ($scope, $q, Auth, Oauth3, $timeout) {
 | 
				
			||||||
    var vm = this;
 | 
					    var vm = this;
 | 
				
			||||||
}]);
 | 
					
 | 
				
			||||||
 | 
					    vm.getSettings = function () {
 | 
				
			||||||
 | 
					      var pkg = Auth.oauth3.pkg('email@daplie.com');
 | 
				
			||||||
 | 
					      return pkg.settings().then(function (resp) {
 | 
				
			||||||
 | 
					        vm.settings.service = 'mailgun.org';
 | 
				
			||||||
 | 
					        vm.settings = resp.data;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    vm.getSettings();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]);
 | 
				
			||||||
 | 
				
			|||||||
@ -303,13 +303,38 @@ app.controller('websiteCtrl', [
 | 
				
			|||||||
    , domain: r.domain
 | 
					    , domain: r.domain
 | 
				
			||||||
    , tld: r.tld
 | 
					    , tld: r.tld
 | 
				
			||||||
    , sld: r.sld
 | 
					    , sld: r.sld
 | 
				
			||||||
    //, sub: vm.record.sub
 | 
					    //, sub: r.sub
 | 
				
			||||||
    , path: r.newPath
 | 
					    , path: r.newPath
 | 
				
			||||||
    }).then(function (result) {
 | 
					    }).then(function (result) {
 | 
				
			||||||
      window.alert(JSON.stringify(result));
 | 
					      window.alert(JSON.stringify(result));
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vm.Shares = {};
 | 
				
			||||||
 | 
					  vm.Shares.invite = function (r) {
 | 
				
			||||||
 | 
					    var pkg = Auth.oauth3.pkg('www@daplie.com');
 | 
				
			||||||
 | 
					    return pkg.invite({
 | 
				
			||||||
 | 
					      email: r.shareEmail
 | 
				
			||||||
 | 
					    , domain: r.domain
 | 
				
			||||||
 | 
					    , tld: r.tld
 | 
				
			||||||
 | 
					    , sld: r.sld
 | 
				
			||||||
 | 
					    //, sub: r.sub
 | 
				
			||||||
 | 
					    , path: r.sharePath
 | 
				
			||||||
 | 
					    , mode: r.shareMode
 | 
				
			||||||
 | 
					    }).then(function (result) {
 | 
				
			||||||
 | 
					      window.alert(JSON.stringify(result));
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  vm.Shares.accept = function () {
 | 
				
			||||||
 | 
					    var pkg = Auth.oauth3.pkg('www@daplie.com');
 | 
				
			||||||
 | 
					    return pkg.acceptInvite({
 | 
				
			||||||
 | 
					      token: vm.Shares.inviteToken
 | 
				
			||||||
 | 
					    }).then(function (result) {
 | 
				
			||||||
 | 
					      window.alert(JSON.stringify(result));
 | 
				
			||||||
 | 
					      vm.listSites();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  vm.listSites = function () {
 | 
					  vm.listSites = function () {
 | 
				
			||||||
    var sites = [];
 | 
					    var sites = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										22
									
								
								js/email@daplie.com.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								js/email@daplie.com.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					;(function (exports) {
 | 
				
			||||||
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var OAUTH3 = exports.OAUTH3 = exports.OAUTH3 || require('./oauth3.core.js').OAUTH3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OAUTH3._pkgs['email@daplie.com'] = {
 | 
				
			||||||
 | 
					  settings: function (opts) {
 | 
				
			||||||
 | 
					    var providerUri = opts.audience;
 | 
				
			||||||
 | 
					    var session = opts.session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return OAUTH3.request({
 | 
				
			||||||
 | 
					      method: 'GET'
 | 
				
			||||||
 | 
					    , url: OAUTH3.url.normalize(providerUri)
 | 
				
			||||||
 | 
					        + '/api/email@daplie.com/acl/settings/'
 | 
				
			||||||
 | 
					    , session: session
 | 
				
			||||||
 | 
					    }).then(function (result) {
 | 
				
			||||||
 | 
					      return result;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}('undefined' !== typeof exports ? exports : window));
 | 
				
			||||||
@ -28,6 +28,36 @@ OAUTH3._pkgs['www@daplie.com'] = {
 | 
				
			|||||||
      + '?' + OAUTH3.utils.query.stringify({ tld: opts.tld, sld: opts.sld/*, sub: opts.sub*/, strip: opts.strip, path: opts.path })
 | 
					      + '?' + OAUTH3.utils.query.stringify({ tld: opts.tld, sld: opts.sld/*, sub: opts.sub*/, strip: opts.strip, path: opts.path })
 | 
				
			||||||
      ;
 | 
					      ;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					, invite: function (opts) {
 | 
				
			||||||
 | 
					    var providerUri = opts.audience;
 | 
				
			||||||
 | 
					    var session = opts.session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO needs a way to have api and assets for audience
 | 
				
			||||||
 | 
					    return OAUTH3.request({
 | 
				
			||||||
 | 
					      method: 'POST'
 | 
				
			||||||
 | 
					    , url: OAUTH3.url.normalize(providerUri)
 | 
				
			||||||
 | 
					        + '/api/www@daplie.com/acl/shares/' + (opts.domain || opts.hostname)
 | 
				
			||||||
 | 
					        + '?' + OAUTH3.utils.query.stringify({ tld: opts.tld, sld: opts.sld/*, sub: opts.sub*/, mode: opts.mode, path: opts.path })
 | 
				
			||||||
 | 
					    , session: session
 | 
				
			||||||
 | 
					    }).then(function (result) {
 | 
				
			||||||
 | 
					      return result;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					, acceptInvite: function (opts) {
 | 
				
			||||||
 | 
					    var providerUri = opts.audience;
 | 
				
			||||||
 | 
					    var session = opts.session;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO needs a way to have api and assets for audience
 | 
				
			||||||
 | 
					    return OAUTH3.request({
 | 
				
			||||||
 | 
					      method: 'POST'
 | 
				
			||||||
 | 
					    , url: OAUTH3.url.normalize(providerUri)
 | 
				
			||||||
 | 
					        + '/api/www@daplie.com/acl/shares/accept/' + opts.token
 | 
				
			||||||
 | 
					        + '?' + OAUTH3.utils.query.stringify({ tld: opts.tld, sld: opts.sld/*, sub: opts.sub*/ })
 | 
				
			||||||
 | 
					    , session: session
 | 
				
			||||||
 | 
					    }).then(function (result) {
 | 
				
			||||||
 | 
					      return result;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
, download: function (opts) {
 | 
					, download: function (opts) {
 | 
				
			||||||
    var session = opts.session;
 | 
					    var session = opts.session;
 | 
				
			||||||
    var me = this;
 | 
					    var me = this;
 | 
				
			||||||
 | 
				
			|||||||
@ -66,6 +66,19 @@
 | 
				
			|||||||
      </tr>
 | 
					      </tr>
 | 
				
			||||||
    </tbody>
 | 
					    </tbody>
 | 
				
			||||||
  </table>
 | 
					  </table>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <button ng-click="vm.showSettings = !vm.showSettings">Settings</button>
 | 
				
			||||||
 | 
					  <div ng-if="vm.showSettings">
 | 
				
			||||||
 | 
					    <label>Service:</label> <input type="text" ng-model="vm.settings.service" placeholder="ex: mailgun.org">
 | 
				
			||||||
 | 
					    <br>
 | 
				
			||||||
 | 
					    <label>API Key:</label> <input type="text" ng-model="vm.settings.apiKey" placeholder="ex: key-xxxxxxxxxxxx">
 | 
				
			||||||
 | 
					    <br>
 | 
				
			||||||
 | 
					    <label>SMTP Username:</label> <input type="text" ng-model="vm.settings.auth.user" placeholder="ex: johndoe">
 | 
				
			||||||
 | 
					    <br>
 | 
				
			||||||
 | 
					    <label>SMTP Password:</label> <input type="text" ng-model="vm.settings.auth.pass" placeholder="ex: ************">
 | 
				
			||||||
 | 
					    <br>
 | 
				
			||||||
 | 
					    <label>SMTP Domain:</label> <input type="text" ng-model="vm.settings.auth.domain" placeholder="ex: example.com">
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- <div class="white-well">
 | 
					<!-- <div class="white-well">
 | 
				
			||||||
 | 
				
			|||||||
@ -78,6 +78,10 @@
 | 
				
			|||||||
            <button ng-click="vm.createWebsite()" type="button" name="button" class="btn btn-default">Create Website</button>
 | 
					            <button ng-click="vm.createWebsite()" type="button" name="button" class="btn btn-default">Create Website</button>
 | 
				
			||||||
        <!-- </div>
 | 
					        <!-- </div>
 | 
				
			||||||
    </div> -->
 | 
					    </div> -->
 | 
				
			||||||
 | 
					        <div class="input-group">
 | 
				
			||||||
 | 
					          <div><label>Invite Code</label> <input type="text" ng-model="vm.Shares.inviteToken" /></div>
 | 
				
			||||||
 | 
					          <button ng-click="vm.Shares.accept()" type="button" name="button" class="btn btn-default">Accept Invite</button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <div class="white-well">
 | 
					  <div class="white-well">
 | 
				
			||||||
    <h1>Your Websites</h1>
 | 
					    <h1>Your Websites</h1>
 | 
				
			||||||
@ -85,13 +89,21 @@
 | 
				
			|||||||
      <tbody>
 | 
					      <tbody>
 | 
				
			||||||
        <tr ng-repeat="r in vm.sites">
 | 
					        <tr ng-repeat="r in vm.sites">
 | 
				
			||||||
          <td><a ng-href="https://{{r.domain}}" target="_blank" ng-bind="r.domain">example.com</a>
 | 
					          <td><a ng-href="https://{{r.domain}}" target="_blank" ng-bind="r.domain">example.com</a>
 | 
				
			||||||
            <a ng-href="{{r.download}}" target="_blank">download</a>
 | 
					            <a ng-href="{{r.download}}" target="_blank">Download</a>
 | 
				
			||||||
            <!-- button class="btn btn-link" ng-click="vm.Sites.archive(r)">download</button -->
 | 
					            <!-- button class="btn btn-link" ng-click="vm.Sites.archive(r)">download</button -->
 | 
				
			||||||
            <button class="btn btn-link" ng-click="vm.Sites.remove(r)">clear</button></td>
 | 
					            <button class="btn btn-link" ng-click="vm.Sites.remove(r)">Clear</button></td>
 | 
				
			||||||
          <td>
 | 
					          <td>
 | 
				
			||||||
            <input type="text" ng-model="r.newPath" /> <button class="btn btn-link" ng-click="vm.Sites.contents(r)">show</button></td>
 | 
					            <input type="text" ng-model="r.newPath" placeholder="/" />
 | 
				
			||||||
 | 
					            <button class="btn btn-default" ng-click="vm.Sites.contents(r)">List Files</button>
 | 
				
			||||||
 | 
					          </td>
 | 
				
			||||||
          <td ng-bind="r.path">Sites > blogs > blog.jane.smith.net</td>
 | 
					          <td ng-bind="r.path">Sites > blogs > blog.jane.smith.net</td>
 | 
				
			||||||
          <td ng-bind="r.users">jane@smith.net, jack@smith.net, friend@gmail.com</td>
 | 
					          <td ng-bind="r.users">jane@smith.net, jack@smith.net, friend@gmail.com</td>
 | 
				
			||||||
 | 
					          <td>
 | 
				
			||||||
 | 
					            <input type="text" ng-model="r.shareEmail" placeholder="ex: john@example.com" />
 | 
				
			||||||
 | 
					            <input type="text" ng-model="r.sharePath" placeholder="/" />
 | 
				
			||||||
 | 
					            <input type="text" ng-model="r.shareMode" placeholder="rwx (read, write, invite)" />
 | 
				
			||||||
 | 
					            <button class="btn btn-default" ng-click="vm.Shares.invite(r)">Invite</button>
 | 
				
			||||||
 | 
					          </td>
 | 
				
			||||||
        </tr>
 | 
					        </tr>
 | 
				
			||||||
      </tbody>
 | 
					      </tbody>
 | 
				
			||||||
    </table>
 | 
					    </table>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user