diff --git a/.versions b/.versions index 6fd1597..21570fa 100644 --- a/.versions +++ b/.versions @@ -1,75 +1,78 @@ -accounts-base@1.2.2 -angular-meteor-auth@1.0.1 +accounts-base@1.2.5 +allow-deny@1.0.3 +angular-meteor-auth@1.0.2 angular-meteor-data@1.3.9 angular:angular@1.4.8 angular:angular-mocks@1.4.8 -babel-compiler@5.8.24_1 -babel-runtime@0.1.4 -base64@1.0.4 +babel-compiler@6.6.1 +babel-runtime@0.1.7 +base64@1.0.7 benjamine:jsondiffpatch@0.1.38_1 -binary-heap@1.0.4 -blaze@2.1.3 -blaze-tools@1.0.4 -boilerplate-generator@1.0.4 -caching-compiler@1.0.0 -callback-hook@1.0.4 -check@1.1.0 -coffeescript@1.0.11 +binary-heap@1.0.7 +blaze@2.1.6 +blaze-tools@1.0.7 +boilerplate-generator@1.0.7 +caching-compiler@1.0.3 +callback-hook@1.0.7 +check@1.1.3 +coffeescript@1.0.16 dburles:mongo-collection-instances@0.3.4 -ddp@1.2.2 -ddp-client@1.2.1 -ddp-common@1.2.2 -ddp-rate-limiter@1.0.0 -ddp-server@1.2.2 -deps@1.0.9 -diff-sequence@1.0.1 -ecmascript@0.1.6 -ecmascript-runtime@0.2.6 -ejson@1.0.7 -geojson-utils@1.0.4 -html-tools@1.0.5 -htmljs@1.0.5 -id-map@1.0.4 -jquery@1.11.4 +ddp@1.2.4 +ddp-client@1.2.4 +ddp-common@1.2.4 +ddp-rate-limiter@1.0.3 +ddp-server@1.2.5 +deps@1.0.11 +diff-sequence@1.0.4 +ecmascript@0.4.2 +ecmascript-runtime@0.2.9 +ejson@1.0.10 +geojson-utils@1.0.7 +html-tools@1.0.8 +htmljs@1.0.8 +id-map@1.0.6 +jquery@1.11.7 lai:collection-extensions@0.1.4 -local-test:angular-meteor-auth@1.0.1 -localstorage@1.0.5 -logging@1.0.8 -meteor@1.1.10 -minimongo@1.0.10 -mongo@1.1.3 -mongo-id@1.0.1 -npm-mongo@1.4.39_1 -observe-sequence@1.0.7 -ordered-dict@1.0.4 -package-version-parser@3.0.4 +local-test:angular-meteor-auth@1.0.2 +localstorage@1.0.8 +logging@1.0.11 +meteor@1.1.13 +minimongo@1.0.13 +modules@0.5.2 +modules-runtime@0.6.2 +mongo@1.1.6 +mongo-id@1.0.3 +npm-mongo@1.4.42 +observe-sequence@1.0.10 +ordered-dict@1.0.6 +package-version-parser@3.0.7 practicalmeteor:chai@2.1.0_1 practicalmeteor:loglevel@1.2.0_2 -promise@0.5.1 -random@1.0.5 -rate-limit@1.0.0 -reactive-dict@1.1.3 -reactive-var@1.0.6 -reload@1.1.4 -retry@1.0.4 -routepolicy@1.0.6 +promise@0.6.6 +random@1.0.8 +rate-limit@1.0.3 +reactive-dict@1.1.6 +reactive-var@1.0.8 +reload@1.1.7 +retry@1.0.6 +routepolicy@1.0.9 sanjo:jasmine@0.19.1 sanjo:karma@1.7.0 sanjo:long-running-child-process@1.1.5 sanjo:meteor-files-helpers@1.1.0_7 sanjo:meteor-version@1.0.0 -service-configuration@1.0.5 -session@1.1.1 -spacebars@1.0.7 -spacebars-compiler@1.0.7 -tracker@1.0.9 -ui@1.0.8 -underscore@1.0.4 +service-configuration@1.0.8 +session@1.1.4 +spacebars@1.0.10 +spacebars-compiler@1.0.10 +tracker@1.0.12 +ui@1.0.10 +underscore@1.0.7 velocity:chokidar@1.0.3_1 velocity:core@0.10.1 velocity:meteor-internals@1.1.0_7 velocity:meteor-stubs@1.1.1 velocity:shim@0.1.0 velocity:source-map-support@0.3.2_1 -webapp@1.2.3 -webapp-hashing@1.0.5 +webapp@1.2.7 +webapp-hashing@1.0.8 diff --git a/bower.json b/bower.json index d8855f1..40c22fa 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "angular-meteor-auth", "main": "./dist/angular-meteor-auth.bundle.min.js", - "version": "1.0.1", + "version": "1.0.2", "homepage": "https://github.com/Urigo/angular-meteor-auth", "authors": [ "Uri Goldshtein " diff --git a/dist/angular-meteor-auth.bundle.js b/dist/angular-meteor-auth.bundle.js index a758218..0ccf548 100644 --- a/dist/angular-meteor-auth.bundle.js +++ b/dist/angular-meteor-auth.bundle.js @@ -42,7 +42,7 @@ var _typeof3 = _interopRequireDefault(_typeof2); // function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // // -/*! angular-meteor-auth v1.0.1 */ // +/*! angular-meteor-auth v1.0.2 */ // (function () { // 2 function webpackUniversalModuleDefinition(root, factory) { // 2 if ((typeof exports === 'undefined' ? 'undefined' : (0, _typeof3['default'])(exports)) === 'object' && (typeof module === 'undefined' ? 'undefined' : (0, _typeof3['default'])(module)) === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if ((typeof exports === 'undefined' ? 'undefined' : (0, _typeof3['default'])(exports)) === 'object') exports["angularMeteorAuth"] = factory();else root["angularMeteorAuth"] = factory(); diff --git a/dist/angular-meteor-auth.js b/dist/angular-meteor-auth.js index 37a1cd3..25754ba 100644 --- a/dist/angular-meteor-auth.js +++ b/dist/angular-meteor-auth.js @@ -1,4 +1,4 @@ -/*! angular-meteor-auth v1.0.1 */ +/*! angular-meteor-auth v1.0.2 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); diff --git a/dist/angular-meteor-auth.min.js b/dist/angular-meteor-auth.min.js index 5e416f4..d73561d 100644 --- a/dist/angular-meteor-auth.min.js +++ b/dist/angular-meteor-auth.min.js @@ -1,3 +1,3 @@ -/*! angular-meteor-auth v1.0.1 */ +/*! angular-meteor-auth v1.0.2 */ !function(r,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.angularMeteorAuth=e():r.angularMeteorAuth=e()}(this,function(){return function(r){function e(n){if(t[n])return t[n].exports;var u=t[n]={exports:{},id:n,loaded:!1};return r[n].call(u.exports,u,u.exports,e),u.loaded=!0,u.exports}var t={};return e.m=r,e.c=t,e.p="",e(0)}([function(r,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t="angular-meteor.auth";e["default"]=t,angular.module(t,["angular-meteor.mixer","angular-meteor.core","angular-meteor.view-model","angular-meteor.reactive"]).factory("$$Auth",["$Mixer",function(r){function e(){var r=arguments.length<=0||void 0===arguments[0]?this:arguments[0];this.autorun(function(){r.currentUser=t.user(),r.currentUserId=t.userId(),r.isLoggingIn=t.loggingIn()})}var t=(Package["accounts-base"]||{}).Accounts;if(!t)throw Error("`angular-meteor.auth` module requires `accounts-base` package, please run `meteor add accounts-base` before use");var n={required:"AUTH_REQUIRED",forbidden:"FORBIDDEN"};return e.$awaitUser=function(e){var t=this;if(e=e?this.$bindToContext(r.caller,e):function(){return!0},!_.isFunction(e))throw Error("argument 1 must be a function");var u=this.$$defer(),o=this.autorun(function(r){if(!t.getReactively("isLoggingIn")){if(r.stop(),!t.currentUser)return t.$$afterFlush(u.reject,n.required);var o=e(t.currentUser);if(o===!0)return t.$$afterFlush(u.resolve,t.currentUser);var i=void 0;return i=_.isString(o)||o instanceof Error?o:n.forbidden,t.$$afterFlush(u.reject,i)}}),i=u.promise;return i.stop=o.stop.bind(o),i},e.$$afterFlush=function(r){var e;_.isString(r)&&(r=this[r]);for(var t=arguments.length,n=Array(t>1?t-1:0),u=1;t>u;u++)n[u-1]=arguments[u];return Tracker.afterFlush((e=r).bind.apply(e,[this].concat(n)))},e.$waitForUser=function(){return this.$awaitUser()["catch"]()},e.$requireUser=function(){return this.$awaitUser()},e.$requireValidUser=function(){return this.$awaitUser.apply(this,arguments)},e}]).service("$auth",["$rootScope","$$Auth",function(r,e){var t=this;_.keys(e).forEach(function(e){var n=e.substr(1);t[n]=function(){return r[e].apply(r,arguments)}})}]).run(["$Mixer","$$Auth",function(r,e){r.mixin(e)}]),r.exports=e["default"]}])}); //# sourceMappingURL=angular-meteor-auth.min.js.map \ No newline at end of file diff --git a/dist/angular-meteor-auth.min.js.map b/dist/angular-meteor-auth.min.js.map index 829fcb1..1e04667 100644 --- a/dist/angular-meteor-auth.min.js.map +++ b/dist/angular-meteor-auth.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///dist/angular-meteor-auth.min.js","webpack:///webpack/bootstrap f3da1717c72bcfd92947","webpack:///./src/angular-meteor-auth.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","Object","defineProperty","value","name","angular","$Mixer","$$Auth","vm","arguments","length","undefined","autorun","currentUser","Accounts","user","currentUserId","userId","isLoggingIn","loggingIn","Package","Error","errors","required","forbidden","$awaitUser","validate","_this","$bindToContext","caller","_","isFunction","deferred","$$defer","computation","getReactively","stop","$$afterFlush","reject","isValid","resolve","error","isString","promise","bind","fn","_fn","_len","args","Array","_key","Tracker","afterFlush","apply","concat","$waitForUser","$requireUser","$requireValidUser","service","$rootScope","_this2","keys","forEach","k","stripped","substr","run","mixin"],"mappings":"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","file":"dist/angular-meteor-auth.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angularMeteorAuth\"] = factory();\n\telse\n\t\troot[\"angularMeteorAuth\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","/*! angular-meteor-auth v1.0.1 */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angularMeteorAuth\"] = factory();\n\telse\n\t\troot[\"angularMeteorAuth\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar name = 'angular-meteor.auth';\n\texports.default = name;\n\t\n\t\n\tangular.module(name, ['angular-meteor.mixer', 'angular-meteor.core', 'angular-meteor.view-model', 'angular-meteor.reactive'])\n\t\n\t/*\n\t A mixin which provides us with authentication related methods and properties.\n\t This mixin comes in a seperate package called `angular-meteor-auth`. Note that `accounts-base`\n\t package needs to be installed in order for this module to work, otherwise an error will be thrown.\n\t */\n\t.factory('$$Auth', ['$Mixer', function ($Mixer) {\n\t var Accounts = (Package['accounts-base'] || {}).Accounts;\n\t\n\t if (!Accounts) {\n\t throw Error('`angular-meteor.auth` module requires `accounts-base` package, ' + 'please run `meteor add accounts-base` before use');\n\t }\n\t\n\t var errors = {\n\t required: 'AUTH_REQUIRED',\n\t forbidden: 'FORBIDDEN'\n\t };\n\t\n\t function $$Auth() {\n\t var vm = arguments.length <= 0 || arguments[0] === undefined ? this : arguments[0];\n\t\n\t // reset auth properties\n\t this.autorun(function () {\n\t vm.currentUser = Accounts.user();\n\t vm.currentUserId = Accounts.userId();\n\t vm.isLoggingIn = Accounts.loggingIn();\n\t });\n\t }\n\t\n\t // Waits for user to finish the login process. Gets an optional validation function which\n\t // will validate if the current user is valid or not. Returns a promise which will be rejected\n\t // once login has failed or user is not valid, otherwise it will be resolved with the current\n\t // user\n\t $$Auth.$awaitUser = function (validate) {\n\t var _this = this;\n\t\n\t validate = validate ? this.$bindToContext($Mixer.caller, validate) : function () {\n\t return true;\n\t };\n\t\n\t if (!_.isFunction(validate)) {\n\t throw Error('argument 1 must be a function');\n\t }\n\t\n\t var deferred = this.$$defer();\n\t\n\t // Note the promise is being fulfilled in the next event loop to avoid\n\t // nested computations, otherwise the outer computation will cancel the\n\t // inner one once the scope has been destroyed which will lead to subscription\n\t // failures. Happens mainly after resolving a route.\n\t var computation = this.autorun(function (computation) {\n\t if (_this.getReactively('isLoggingIn')) return;\n\t // Stop computation once a user has logged in\n\t computation.stop();\n\t\n\t if (!_this.currentUser) return _this.$$afterFlush(deferred.reject, errors.required);\n\t\n\t var isValid = validate(_this.currentUser);\n\t // Resolve the promise if validation has passed\n\t if (isValid === true) return _this.$$afterFlush(deferred.resolve, _this.currentUser);\n\t\n\t var error = void 0;\n\t\n\t if (_.isString(isValid) || isValid instanceof Error) {\n\t error = isValid;\n\t } else {\n\t error = errors.forbidden;\n\t }\n\t\n\t return _this.$$afterFlush(deferred.reject, error);\n\t });\n\t\n\t var promise = deferred.promise;\n\t promise.stop = computation.stop.bind(computation);\n\t return promise;\n\t };\n\t\n\t // Calls a function with the provided args after flush\n\t $$Auth.$$afterFlush = function (fn) {\n\t var _fn;\n\t\n\t if (_.isString(fn)) {\n\t fn = this[fn];\n\t }\n\t\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t return Tracker.afterFlush((_fn = fn).bind.apply(_fn, [this].concat(args)));\n\t };\n\t\n\t // API v0.2.0\n\t // Aliases with small modificatons\n\t\n\t // No validation\n\t // Silent error\n\t $$Auth.$waitForUser = function () {\n\t // Silent error\n\t return this.$awaitUser().catch();\n\t };\n\t\n\t // No validation\n\t $$Auth.$requireUser = function () {\n\t return this.$awaitUser();\n\t };\n\t\n\t // Full functionality\n\t $$Auth.$requireValidUser = function () {\n\t return this.$awaitUser.apply(this, arguments);\n\t };\n\t\n\t return $$Auth;\n\t}])\n\t\n\t/*\n\t External service for syntactic sugare.\n\t Originally created as UI-router's resolve handler.\n\t */\n\t.service('$auth', ['$rootScope', '$$Auth', function ($rootScope, $$Auth) {\n\t var _this2 = this;\n\t\n\t // Note that services are initialized once we call them which means that the mixin\n\t // will be available by then\n\t _.keys($$Auth).forEach(function (k) {\n\t var stripped = k.substr(1);\n\t // Not using bind() so it would be testable\n\t _this2[stripped] = function () {\n\t return $rootScope[k].apply($rootScope, arguments);\n\t };\n\t });\n\t}]).run(['$Mixer', '$$Auth', function ($Mixer, $$Auth) {\n\t $Mixer.mixin($$Auth);\n\t}]);\n\tmodule.exports = exports['default'];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** dist/angular-meteor-auth.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap f3da1717c72bcfd92947\n **/","const name = 'angular-meteor.auth';\nexport default name;\n\nangular.module(name, [\n 'angular-meteor.mixer',\n 'angular-meteor.core',\n 'angular-meteor.view-model',\n 'angular-meteor.reactive'\n])\n\n/*\n A mixin which provides us with authentication related methods and properties.\n This mixin comes in a seperate package called `angular-meteor-auth`. Note that `accounts-base`\n package needs to be installed in order for this module to work, otherwise an error will be thrown.\n */\n.factory('$$Auth', [\n '$Mixer',\n\nfunction($Mixer) {\n const Accounts = (Package['accounts-base'] || {}).Accounts;\n\n if (!Accounts) {\n throw Error(\n '`angular-meteor.auth` module requires `accounts-base` package, ' +\n 'please run `meteor add accounts-base` before use'\n );\n }\n\n const errors = {\n required: 'AUTH_REQUIRED',\n forbidden: 'FORBIDDEN'\n };\n\n function $$Auth(vm = this) {\n // reset auth properties\n this.autorun(() => {\n vm.currentUser = Accounts.user();\n vm.currentUserId = Accounts.userId();\n vm.isLoggingIn = Accounts.loggingIn();\n });\n }\n\n // Waits for user to finish the login process. Gets an optional validation function which\n // will validate if the current user is valid or not. Returns a promise which will be rejected\n // once login has failed or user is not valid, otherwise it will be resolved with the current\n // user\n $$Auth.$awaitUser = function(validate) {\n validate = validate ? this.$bindToContext($Mixer.caller, validate) : () => true;\n\n if (!_.isFunction(validate)) {\n throw Error('argument 1 must be a function');\n }\n\n const deferred = this.$$defer();\n\n // Note the promise is being fulfilled in the next event loop to avoid\n // nested computations, otherwise the outer computation will cancel the\n // inner one once the scope has been destroyed which will lead to subscription\n // failures. Happens mainly after resolving a route.\n const computation = this.autorun((computation) => {\n if (this.getReactively('isLoggingIn')) return;\n // Stop computation once a user has logged in\n computation.stop();\n\n if (!this.currentUser) return this.$$afterFlush(deferred.reject, errors.required);\n\n const isValid = validate(this.currentUser);\n // Resolve the promise if validation has passed\n if (isValid === true) return this.$$afterFlush(deferred.resolve, this.currentUser);\n\n let error;\n\n if (_.isString(isValid) || isValid instanceof Error) {\n error = isValid;\n }\n else {\n error = errors.forbidden;\n }\n\n return this.$$afterFlush(deferred.reject, error);\n });\n\n const promise = deferred.promise;\n promise.stop = computation.stop.bind(computation);\n return promise;\n };\n\n // Calls a function with the provided args after flush\n $$Auth.$$afterFlush = function(fn, ...args) {\n if (_.isString(fn)) {\n fn = this[fn];\n }\n\n return Tracker.afterFlush(fn.bind(this, ...args));\n };\n\n // API v0.2.0\n // Aliases with small modificatons\n\n // No validation\n // Silent error\n $$Auth.$waitForUser = function() {\n // Silent error\n return this.$awaitUser().catch();\n };\n\n // No validation\n $$Auth.$requireUser = function() {\n return this.$awaitUser();\n };\n\n // Full functionality\n $$Auth.$requireValidUser = function(...args) {\n return this.$awaitUser(...args);\n };\n\n return $$Auth;\n}])\n\n/*\n External service for syntactic sugare.\n Originally created as UI-router's resolve handler.\n */\n.service('$auth', [\n '$rootScope',\n '$$Auth',\n\nfunction($rootScope, $$Auth) {\n // Note that services are initialized once we call them which means that the mixin\n // will be available by then\n _.keys($$Auth).forEach((k) => {\n const stripped = k.substr(1);\n // Not using bind() so it would be testable\n this[stripped] = (...args) => $rootScope[k](...args);\n });\n}])\n\n.run([\n '$Mixer',\n '$$Auth',\n\nfunction($Mixer, $$Auth) {\n $Mixer.mixin($$Auth);\n}]);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/angular-meteor-auth.js\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///dist/angular-meteor-auth.min.js","webpack:///webpack/bootstrap f3da1717c72bcfd92947","webpack:///./src/angular-meteor-auth.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","Object","defineProperty","value","name","angular","$Mixer","$$Auth","vm","arguments","length","undefined","autorun","currentUser","Accounts","user","currentUserId","userId","isLoggingIn","loggingIn","Package","Error","errors","required","forbidden","$awaitUser","validate","_this","$bindToContext","caller","_","isFunction","deferred","$$defer","computation","getReactively","stop","$$afterFlush","reject","isValid","resolve","error","isString","promise","bind","fn","_fn","_len","args","Array","_key","Tracker","afterFlush","apply","concat","$waitForUser","$requireUser","$requireValidUser","service","$rootScope","_this2","keys","forEach","k","stripped","substr","run","mixin"],"mappings":"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","file":"dist/angular-meteor-auth.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angularMeteorAuth\"] = factory();\n\telse\n\t\troot[\"angularMeteorAuth\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","/*! angular-meteor-auth v1.0.2 */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angularMeteorAuth\"] = factory();\n\telse\n\t\troot[\"angularMeteorAuth\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar name = 'angular-meteor.auth';\n\texports.default = name;\n\t\n\t\n\tangular.module(name, ['angular-meteor.mixer', 'angular-meteor.core', 'angular-meteor.view-model', 'angular-meteor.reactive'])\n\t\n\t/*\n\t A mixin which provides us with authentication related methods and properties.\n\t This mixin comes in a seperate package called `angular-meteor-auth`. Note that `accounts-base`\n\t package needs to be installed in order for this module to work, otherwise an error will be thrown.\n\t */\n\t.factory('$$Auth', ['$Mixer', function ($Mixer) {\n\t var Accounts = (Package['accounts-base'] || {}).Accounts;\n\t\n\t if (!Accounts) {\n\t throw Error('`angular-meteor.auth` module requires `accounts-base` package, ' + 'please run `meteor add accounts-base` before use');\n\t }\n\t\n\t var errors = {\n\t required: 'AUTH_REQUIRED',\n\t forbidden: 'FORBIDDEN'\n\t };\n\t\n\t function $$Auth() {\n\t var vm = arguments.length <= 0 || arguments[0] === undefined ? this : arguments[0];\n\t\n\t // reset auth properties\n\t this.autorun(function () {\n\t vm.currentUser = Accounts.user();\n\t vm.currentUserId = Accounts.userId();\n\t vm.isLoggingIn = Accounts.loggingIn();\n\t });\n\t }\n\t\n\t // Waits for user to finish the login process. Gets an optional validation function which\n\t // will validate if the current user is valid or not. Returns a promise which will be rejected\n\t // once login has failed or user is not valid, otherwise it will be resolved with the current\n\t // user\n\t $$Auth.$awaitUser = function (validate) {\n\t var _this = this;\n\t\n\t validate = validate ? this.$bindToContext($Mixer.caller, validate) : function () {\n\t return true;\n\t };\n\t\n\t if (!_.isFunction(validate)) {\n\t throw Error('argument 1 must be a function');\n\t }\n\t\n\t var deferred = this.$$defer();\n\t\n\t // Note the promise is being fulfilled in the next event loop to avoid\n\t // nested computations, otherwise the outer computation will cancel the\n\t // inner one once the scope has been destroyed which will lead to subscription\n\t // failures. Happens mainly after resolving a route.\n\t var computation = this.autorun(function (computation) {\n\t if (_this.getReactively('isLoggingIn')) return;\n\t // Stop computation once a user has logged in\n\t computation.stop();\n\t\n\t if (!_this.currentUser) return _this.$$afterFlush(deferred.reject, errors.required);\n\t\n\t var isValid = validate(_this.currentUser);\n\t // Resolve the promise if validation has passed\n\t if (isValid === true) return _this.$$afterFlush(deferred.resolve, _this.currentUser);\n\t\n\t var error = void 0;\n\t\n\t if (_.isString(isValid) || isValid instanceof Error) {\n\t error = isValid;\n\t } else {\n\t error = errors.forbidden;\n\t }\n\t\n\t return _this.$$afterFlush(deferred.reject, error);\n\t });\n\t\n\t var promise = deferred.promise;\n\t promise.stop = computation.stop.bind(computation);\n\t return promise;\n\t };\n\t\n\t // Calls a function with the provided args after flush\n\t $$Auth.$$afterFlush = function (fn) {\n\t var _fn;\n\t\n\t if (_.isString(fn)) {\n\t fn = this[fn];\n\t }\n\t\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t return Tracker.afterFlush((_fn = fn).bind.apply(_fn, [this].concat(args)));\n\t };\n\t\n\t // API v0.2.0\n\t // Aliases with small modificatons\n\t\n\t // No validation\n\t // Silent error\n\t $$Auth.$waitForUser = function () {\n\t // Silent error\n\t return this.$awaitUser().catch();\n\t };\n\t\n\t // No validation\n\t $$Auth.$requireUser = function () {\n\t return this.$awaitUser();\n\t };\n\t\n\t // Full functionality\n\t $$Auth.$requireValidUser = function () {\n\t return this.$awaitUser.apply(this, arguments);\n\t };\n\t\n\t return $$Auth;\n\t}])\n\t\n\t/*\n\t External service for syntactic sugare.\n\t Originally created as UI-router's resolve handler.\n\t */\n\t.service('$auth', ['$rootScope', '$$Auth', function ($rootScope, $$Auth) {\n\t var _this2 = this;\n\t\n\t // Note that services are initialized once we call them which means that the mixin\n\t // will be available by then\n\t _.keys($$Auth).forEach(function (k) {\n\t var stripped = k.substr(1);\n\t // Not using bind() so it would be testable\n\t _this2[stripped] = function () {\n\t return $rootScope[k].apply($rootScope, arguments);\n\t };\n\t });\n\t}]).run(['$Mixer', '$$Auth', function ($Mixer, $$Auth) {\n\t $Mixer.mixin($$Auth);\n\t}]);\n\tmodule.exports = exports['default'];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** dist/angular-meteor-auth.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap f3da1717c72bcfd92947\n **/","const name = 'angular-meteor.auth';\nexport default name;\n\nangular.module(name, [\n 'angular-meteor.mixer',\n 'angular-meteor.core',\n 'angular-meteor.view-model',\n 'angular-meteor.reactive'\n])\n\n/*\n A mixin which provides us with authentication related methods and properties.\n This mixin comes in a seperate package called `angular-meteor-auth`. Note that `accounts-base`\n package needs to be installed in order for this module to work, otherwise an error will be thrown.\n */\n.factory('$$Auth', [\n '$Mixer',\n\nfunction($Mixer) {\n const Accounts = (Package['accounts-base'] || {}).Accounts;\n\n if (!Accounts) {\n throw Error(\n '`angular-meteor.auth` module requires `accounts-base` package, ' +\n 'please run `meteor add accounts-base` before use'\n );\n }\n\n const errors = {\n required: 'AUTH_REQUIRED',\n forbidden: 'FORBIDDEN'\n };\n\n function $$Auth(vm = this) {\n // reset auth properties\n this.autorun(() => {\n vm.currentUser = Accounts.user();\n vm.currentUserId = Accounts.userId();\n vm.isLoggingIn = Accounts.loggingIn();\n });\n }\n\n // Waits for user to finish the login process. Gets an optional validation function which\n // will validate if the current user is valid or not. Returns a promise which will be rejected\n // once login has failed or user is not valid, otherwise it will be resolved with the current\n // user\n $$Auth.$awaitUser = function(validate) {\n validate = validate ? this.$bindToContext($Mixer.caller, validate) : () => true;\n\n if (!_.isFunction(validate)) {\n throw Error('argument 1 must be a function');\n }\n\n const deferred = this.$$defer();\n\n // Note the promise is being fulfilled in the next event loop to avoid\n // nested computations, otherwise the outer computation will cancel the\n // inner one once the scope has been destroyed which will lead to subscription\n // failures. Happens mainly after resolving a route.\n const computation = this.autorun((computation) => {\n if (this.getReactively('isLoggingIn')) return;\n // Stop computation once a user has logged in\n computation.stop();\n\n if (!this.currentUser) return this.$$afterFlush(deferred.reject, errors.required);\n\n const isValid = validate(this.currentUser);\n // Resolve the promise if validation has passed\n if (isValid === true) return this.$$afterFlush(deferred.resolve, this.currentUser);\n\n let error;\n\n if (_.isString(isValid) || isValid instanceof Error) {\n error = isValid;\n }\n else {\n error = errors.forbidden;\n }\n\n return this.$$afterFlush(deferred.reject, error);\n });\n\n const promise = deferred.promise;\n promise.stop = computation.stop.bind(computation);\n return promise;\n };\n\n // Calls a function with the provided args after flush\n $$Auth.$$afterFlush = function(fn, ...args) {\n if (_.isString(fn)) {\n fn = this[fn];\n }\n\n return Tracker.afterFlush(fn.bind(this, ...args));\n };\n\n // API v0.2.0\n // Aliases with small modificatons\n\n // No validation\n // Silent error\n $$Auth.$waitForUser = function() {\n // Silent error\n return this.$awaitUser().catch();\n };\n\n // No validation\n $$Auth.$requireUser = function() {\n return this.$awaitUser();\n };\n\n // Full functionality\n $$Auth.$requireValidUser = function(...args) {\n return this.$awaitUser(...args);\n };\n\n return $$Auth;\n}])\n\n/*\n External service for syntactic sugare.\n Originally created as UI-router's resolve handler.\n */\n.service('$auth', [\n '$rootScope',\n '$$Auth',\n\nfunction($rootScope, $$Auth) {\n // Note that services are initialized once we call them which means that the mixin\n // will be available by then\n _.keys($$Auth).forEach((k) => {\n const stripped = k.substr(1);\n // Not using bind() so it would be testable\n this[stripped] = (...args) => $rootScope[k](...args);\n });\n}])\n\n.run([\n '$Mixer',\n '$$Auth',\n\nfunction($Mixer, $$Auth) {\n $Mixer.mixin($$Auth);\n}]);\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/angular-meteor-auth.js\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.js b/package.js index f018208..19bcdd0 100644 --- a/package.js +++ b/package.js @@ -1,7 +1,7 @@ Package.describe({ name: "angular-meteor-auth", summary: "Angular-Meteor authentication module", - version: "1.0.1", + version: "1.0.2", git: "https://github.com/urigo/angular-meteor-auth.git", documentation: null }); diff --git a/package.json b/package.json index e3b3c5a..53fad20 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "angular-meteor-auth", "main": "./dist/angular-meteor-auth.js", - "version": "1.0.1", + "version": "1.0.2", "description": "Angular-Meteor authentication module", "keywords": [ "AngularJS",