New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

angular-visor

Package Overview
Dependencies
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-visor - npm Package Compare versions

Comparing version 0.0.5 to 0.0.6

38

bower.json
{
"name": "visor",
"description": "Angular authentication and authorization library",
"version": "0.0.5",
"version": "0.0.6",
"homepage": "https://github.com/illniyar/visor",
"main": "./release/visor.js",
"dependencies": {
"main": "./release/visor.js",
"dependencies": {
"angular": "~1.3.0"
},
"devDependencies": {
"angular-ui-router": "~0.2.13",
"angular-mocks": "~1.3.0",
"angular-route": "~1.3.0",
"angular-cookies":"~1.3.0"
},
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"package.json",
"Gruntfile.js",
"test",
"build",
"sample"
]
"devDependencies": {
"angular-ui-router": "~0.2.13",
"angular-mocks": "~1.3.0",
"angular-route": "~1.3.0",
"angular-cookies": "~1.3.0"
},
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"package.json",
"Gruntfile.js",
"test",
"build",
"sample"
]
}

@@ -1,86 +0,107 @@

module.exports = function(grunt){
require('load-grunt-tasks')(grunt);
grunt.initConfig({
module_name:'visor',
pkg: grunt.file.readJSON('package.json'),
builddir: 'build',
releasedir: 'release',
sitedir: 'site',
meta: {
banner:
'/**<%= module_name %>\n'+
'* <%= pkg.description %>\n' +
'* @version v<%= pkg.version %>\n' +
'* @link <%= pkg.homepage %>\n' +
'* @license MIT License, http://www.opensource.org/licenses/MIT\n'+
'*/\n'
},
clean: {
dist: ['<%= builddir %>','<%=sitedir %>'],
"gh-pages":['.grunt']
} ,
concat:{
options: {
banner: '<%=meta.banner\n\n%>' +
'if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){\n'+
' module.exports = \'visor\';\n'+
'}\n\n'+
'(function (window, angular, undefined) {\n',
footer: '})(window, window.angular);'
},
build: {
src: "src/*.js",
dest: '<%= builddir %>/<%= module_name %>.js'
}
},
uglify: {
options: {
banner: '<%= meta.banner %>\n'
},
build: {
files: {
'<%= builddir %>/<%= module_name %>.min.js': ['<banner:meta.banner>', '<%= concat.build.dest %>']
}
}
},
connect: {
server: {},
sample: {
options:{
port: 5555,
keepalive: true
}
}
},
ngdocs:{
all:['src/**/*.js'],
options:{
dest: 'site/docs',
html5Mode: false
}
},
'gh-pages': {
options: {
base: '<%=sitedir%>'
},
src: ['**']
},
copy: {
release: {
files: [{expand:true,src:["visor.js","visor.min.js"],cwd:"<%=builddir%>/",dest:'<%=releasedir%>/'}]
},
site: {
files: [
{expand:true,src:'<%=releasedir%>/**',dest:'<%=sitedir%>'},
{expand:true,src:'README.md',dest:'<%=sitedir%>'},
{expand:true,src:'sample/**',dest:'<%=sitedir%>'}]
}
}
});
module.exports = function (grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
module_name: 'visor',
pkg: grunt.file.readJSON('package.json'),
builddir: 'build',
releasedir: 'release',
sitedir: 'site',
meta: {
banner: '/**<%= module_name %>\n' +
'* <%= pkg.description %>\n' +
'* @version v<%= pkg.version %>\n' +
'* @link <%= pkg.homepage %>\n' +
'* @license MIT License, http://www.opensource.org/licenses/MIT\n' +
'*/\n'
},
clean: {
dist: ['<%= builddir %>', '<%=sitedir %>'],
"gh-pages": ['.grunt']
},
concat: {
options: {
banner: '<%=meta.banner\n\n%>' +
'if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){\n' +
' module.exports = \'visor\';\n' +
'}\n\n' +
'(function (window, angular, undefined) {\n',
footer: '})(window, window.angular);'
},
build: {
src: "src/*.js",
dest: '<%= builddir %>/<%= module_name %>.js'
}
},
uglify: {
options: {
banner: '<%= meta.banner %>\n'
},
build: {
files: {
'<%= builddir %>/<%= module_name %>.min.js': ['<banner:meta.banner>', '<%= concat.build.dest %>']
}
}
},
connect: {
server: {},
sample: {
options: {
port: 5555,
keepalive: true
}
}
},
ngdocs: {
all: ['src/**/*.js'],
options: {
dest: 'site/docs',
html5Mode: false
}
},
'gh-pages': {
options: {
base: '<%=sitedir%>'
},
src: ['**']
},
copy: {
release: {
files: [{
expand: true,
src: ["visor.js", "visor.min.js"],
cwd: "<%=builddir%>/",
dest: '<%=releasedir%>/'
}]
},
site: {
files: [
{expand: true, src: '<%=releasedir%>/**', dest: '<%=sitedir%>'},
{expand: true, src: 'README.md', dest: '<%=sitedir%>'},
{expand: true, src: 'sample/**', dest: '<%=sitedir%>'}]
}
},
changelog: {
options: {
preset:'angular',
file: 'CHANGELOG.md',
app_name: 'Visor'
}
},
release: {
options: {
file: 'package.json',
additionalFiles:'bower.json',
tagName: 'v<%= version %>',
commitMessage: 'release <%= version %>' ,
tagMessage: 'Version <%= version %>',
afterBump: ['changelog']
}
}
});
grunt.registerTask('build', 'Perform a normal build', ['concat', 'uglify']);
grunt.registerTask('dist', 'Perform a clean build', ['clean', 'build','copy:release']);
grunt.registerTask('site', 'Build and create site', ['dist','copy:site','ngdocs:all']);
grunt.registerTask('release', 'Build, create site and push to gh-pages', ['site','gh-pages','clean:gh-pages']);
grunt.registerTask('build', 'Perform a normal build', ['concat', 'uglify']);
grunt.registerTask('dist', 'Perform a clean build', ['clean', 'build', 'copy:release']);
grunt.registerTask('site', 'Build and create site', ['dist', 'copy:site', 'ngdocs:all']);
grunt.registerTask('publish-site', 'Build, create site and push to gh-pages', ['site', 'gh-pages', 'clean:gh-pages']);
grunt.registerTask('publish','Builds and publishes to all relevent repositories',['publish-site','release'])
}
{
"name": "angular-visor",
"author": "Illniyar",
"version": "0.0.5",
"version": "0.0.6",
"main": "release/visor.js",

@@ -10,19 +10,21 @@ "description": "Angular authentication and authorization library",

"devDependencies": {
"karma": "~0.12",
"karma-spec-reporter": "0.0.12",
"karma-jasmine": "~0.2.0",
"karma-phantomjs-launcher": "~0.1.4",
"karma-chrome-launcher": "~0.1",
"karma-cli": "0.0.4",
"bower": "~1.3.3",
"grunt": "~0.4.1",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.4.0",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-connect": "~0.7.1",
"grunt-contrib-copy": "~0.5.0",
"grunt-contrib-uglify": "~0.4.0",
"grunt-conventional-changelog": "^1.2.2",
"grunt-gh-pages": "~0.9.1",
"load-grunt-tasks": "~0.4.0",
"grunt-conventional-changelog": "~1.1.0",
"grunt-ngdocs": "~0.1.7"
"grunt-ngdocs": "~0.1.7",
"grunt-release": "^0.12.0",
"grunt-release-it": "^0.2.1",
"karma": "~0.12",
"karma-chrome-launcher": "~0.1",
"karma-cli": "0.0.4",
"karma-jasmine": "~0.2.0",
"karma-phantomjs-launcher": "~0.1.4",
"karma-spec-reporter": "0.0.12",
"load-grunt-tasks": "~0.4.0"
},

@@ -29,0 +31,0 @@ "licenses": [

@@ -15,2 +15,3 @@ #Visor

- via **[Bower](http://bower.io/)**: by running `$ bower install visor` from your console
- via **[NPM](https://www.npmjs.com/package/angular-visor)**: by running `$ npm install --save angular-visor` from your console

@@ -17,0 +18,0 @@ **Sample apps**:

@@ -885,2 +885,3 @@ /**visor

visorPermissions.getPermissionsFromNext = function(next){
console.log("get permissions")
var perms = [];

@@ -890,7 +891,7 @@ while(next) {

if (next.parent) {
next = $state.get(next.parent)
next = $state.get(next.parent)
} else if(next.name.indexOf(".") >0) {
next = $state.get(next.name.replace(/(.*\.)?([^.]+)\.[^.]*$/,"$2"))
next = $state.get(next.name.replace(/(.*\.)?([^.]+)\.[^.]*$/,"$2"))
} else {
next = null;
next = null;
}

@@ -900,31 +901,33 @@ }

}
var $urlRouter = $injector.get("$urlRouter");
var toUrl = null;
var bypass = false;
$rootScope.$on('$stateChangeStart', function(e,toState,toParams){
if (bypass) {
bypass = false;
return;
}
toUrl = $state.href(toState,toParams).replace(/^#/,'');
var shouldContinue = visorPermissions.onRouteChange(toState,function delayChange(promise){
promise.then(function(){
bypass= true;
$state.go(toState,toParams);
})
});
if (!shouldContinue || shouldContinue === "delayed") {
e.preventDefault();
}
});
visorPermissions.invokeNotAllowed = function(notAllowed){
//timeout is required because when using preventDefault on $stateChangeStart, the url is
//reverted to it's original location, and no change at this time will override this.
$timeout(function(){
$injector.invoke(notAllowed,null,{restrictedUrl:toUrl})
},0);
}
}]);
var $urlRouter = $injector.get("$urlRouter");
var toUrl = null;
$rootScope.$on('$stateChangeStart', function(e,next){
toUrl = $location.url();
var shouldContinue = visorPermissions.onRouteChange(next,function delayChange(promise){
promise.then(function(){
if ($location.url() === toUrl) {
$urlRouter.sync();
} else {
$location.url(toUrl);
$urlRouter.sync();
}
})
});
if (!shouldContinue || shouldContinue === "delayed") {
e.preventDefault();
}
});
visorPermissions.invokeNotAllowed = function(notAllowed){
//timeout is required because when using preventDefault on $stateChangeStart, the url is
//reverted to it's original location, and no change at this time will override this.
$timeout(function(){
$injector.invoke(notAllowed,null,{restrictedUrl:toUrl})
},0);
}
}
}])
})();})(window, window.angular);

@@ -8,2 +8,2 @@ /**visor

"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="visor"),function(a,b,c){!function(){"use strict";b.module("delayLocationChange",[]).service("delayLocationChange",["$rootScope","$q","$timeout","$location","$injector",function(a,b,c,d,e){function f(){m--,o&&0>=m&&g()}function g(){d.absUrl()===i?a.$broadcast("$locationChangeSuccess",i,j):d.url(k)}function h(a){m++,a["finally"](f)}var i,j,k,l=function(a){a.then?h(a):o?h(e.invoke(fn)):n.push(a)},m=0,n=[],o=!1,p=a.$on("$locationChangeStart",function(a,b,g){o=!0,k=d.url(),p(),a.preventDefault(),n.forEach(function(a){h(e.invoke(a))}),0!==m||i||(m++,c(f,1)),i=b,j=g});return l}])}(),function(){"use strict";b.module("visor",["visor.permissions","visor.ui-router","visor.ngRoute","delayLocationChange"]).constant("authenticatedOnly",function(a){return!!a}).constant("notForAuthenticated",function(a){return a===c}).provider("visor",[function(){function a(a,c,d){return b.shouldAddNext?a.indexOf("?")>=0?a.replace(/\?/,"?next="+encodeURIComponent(d)+"&"):a+"?next="+encodeURIComponent(d):a}var b=this;b.authenticateOnStartup=!0,b.loginRoute="/login",b.homeRoute="/",b.notAuthorizedRoute="/access_denied",b.shouldAddNext=!0,b.authenticate=function(){throw new Error("visorProvider.authenticate must be defined to use visor")},b.doOnNotAuthenticated=["$location","restrictedUrl",function(c,d){c.url(a(b.loginRoute,c,d))}],b.doAfterManualAuthentication=["$location",function(a){a.url(a.search().next||b.homeRoute)}],b.doOnNotAuthorized=["$location",function(a){a.url(b.notAuthorizedRoute)}],this.$get=["$injector","$q","$rootScope","$location","visorPermissions",function(a,d,e,f,g){function h(a){k.authData=a,g.invokeParameters=[k.authData]}function i(){k.authData=c,g.invokeParameters=[]}var j=!1,k={authenticate:function(c){if(j&&!c)return j;var e=d.defer();return j=e.promise,a.invoke(b.authenticate).then(h,i)["finally"](function(){e.resolve(k.authData)}),e.promise},setAuthenticated:function(c){h(c),j=d.when(c),a.invoke(b.doAfterManualAuthentication,null,{authData:c})},isAuthenticated:function(){return!!k.authData},onNotAllowed:function(c){k.isAuthenticated()?a.invoke(b.doOnNotAuthorized,null,{restrictedUrl:c}):a.invoke(b.doOnNotAuthenticated,null,{restrictedUrl:c})},setUnauthenticated:function(){i()},config:b};return k}]}]).run(["visor","delayLocationChange",function(a,b){a.config.authenticateOnStartup&&b(a.authenticate())}]).config(["visorPermissionsProvider",function(a){a.doBeforeFirstCheck.push(["visor",function(a){return a.authenticate()}]),a.onNotAllowed=["visor","restrictedUrl",function(a,b){a.onNotAllowed(b)}]}])}(),function(){b.module("visor.ngRoute",["visor.permissions"]).run(["$rootScope","visorPermissions","$injector",function(a,b,c){var d=!1;try{c.get("$route"),d=!0}catch(e){}d&&a.$on("$routeChangeStart",function(a,c){c.resolve=c.resolve||{},b.onRouteChange(c,function(a){c.resolve._visorDelay=function(){return a}})})}])}(),function(){b.module("visor.permissions",[]).provider("visorPermissions",[function(){var a=this;a.getPermissionsFromNext=function(a){return a.restrict?[a.restrict]:[]},a.doBeforeFirstCheck=[],a.onNotAllowed=function(){},a.invokeParameters=[];var c=!1;this.$get=["$q","$injector","$location",function(d,e,f){function g(c,d){b.isArray(d)||(d=[d]);var e=!0;return d.forEach(function(a){e=e&&a.apply(null,h.invokeParameters)}),e?!0:(h.invokeNotAllowed(a.onNotAllowed),!1)}var h={onRouteChange:function(b,f){var i=h.getPermissionsFromNext(b);if(!i||0==i.length)return!0;if(c)return g(b,i);var j=d.defer();return f(j.promise),d.all(a.doBeforeFirstCheck.map(function(a){return e.invoke(a)}))["finally"](function(){c=!0,g(b,i)?j.resolve(!0):j.reject(!1)}),"delayed"},getPermissionsFromNext:a.getPermissionsFromNext,invokeParameters:a.invokeParameters,invokeNotAllowed:function(a){e.invoke(a,null,{restrictedUrl:f.url()})}};return h}]}])}(),function(){b.module("visor.ui-router",["visor.permissions"]).run(["$rootScope","visorPermissions","$injector","$timeout","$location",function(a,b,c,d,e){var f=!1;try{c.get("$state"),f=!0}catch(g){}if(f){c.invoke(["$state",function(a){b.getPermissionsFromNext=function(b){for(var c=[];b;)b.restrict&&c.unshift(b.restrict),b=b.parent?a.get(b.parent):b.name.indexOf(".")>0?a.get(b.name.replace(/(.*\.)?([^.]+)\.[^.]*$/,"$2")):null;return c}}]);var h=c.get("$urlRouter"),i=null;a.$on("$stateChangeStart",function(a,c){i=e.url();var d=b.onRouteChange(c,function(a){a.then(function(){e.url()===i?h.sync():(e.url(i),h.sync())})});d&&"delayed"!==d||a.preventDefault()}),b.invokeNotAllowed=function(a){d(function(){c.invoke(a,null,{restrictedUrl:i})},0)}}}])}()}(window,window.angular);
"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="visor"),function(a,b,c){!function(){"use strict";b.module("delayLocationChange",[]).service("delayLocationChange",["$rootScope","$q","$timeout","$location","$injector",function(a,b,c,d,e){function f(){m--,o&&0>=m&&g()}function g(){d.absUrl()===i?a.$broadcast("$locationChangeSuccess",i,j):d.url(k)}function h(a){m++,a["finally"](f)}var i,j,k,l=function(a){a.then?h(a):o?h(e.invoke(fn)):n.push(a)},m=0,n=[],o=!1,p=a.$on("$locationChangeStart",function(a,b,g){o=!0,k=d.url(),p(),a.preventDefault(),n.forEach(function(a){h(e.invoke(a))}),0!==m||i||(m++,c(f,1)),i=b,j=g});return l}])}(),function(){"use strict";b.module("visor",["visor.permissions","visor.ui-router","visor.ngRoute","delayLocationChange"]).constant("authenticatedOnly",function(a){return!!a}).constant("notForAuthenticated",function(a){return a===c}).provider("visor",[function(){function a(a,c,d){return b.shouldAddNext?a.indexOf("?")>=0?a.replace(/\?/,"?next="+encodeURIComponent(d)+"&"):a+"?next="+encodeURIComponent(d):a}var b=this;b.authenticateOnStartup=!0,b.loginRoute="/login",b.homeRoute="/",b.notAuthorizedRoute="/access_denied",b.shouldAddNext=!0,b.authenticate=function(){throw new Error("visorProvider.authenticate must be defined to use visor")},b.doOnNotAuthenticated=["$location","restrictedUrl",function(c,d){c.url(a(b.loginRoute,c,d))}],b.doAfterManualAuthentication=["$location",function(a){a.url(a.search().next||b.homeRoute)}],b.doOnNotAuthorized=["$location",function(a){a.url(b.notAuthorizedRoute)}],this.$get=["$injector","$q","$rootScope","$location","visorPermissions",function(a,d,e,f,g){function h(a){k.authData=a,g.invokeParameters=[k.authData]}function i(){k.authData=c,g.invokeParameters=[]}var j=!1,k={authenticate:function(c){if(j&&!c)return j;var e=d.defer();return j=e.promise,a.invoke(b.authenticate).then(h,i)["finally"](function(){e.resolve(k.authData)}),e.promise},setAuthenticated:function(c){h(c),j=d.when(c),a.invoke(b.doAfterManualAuthentication,null,{authData:c})},isAuthenticated:function(){return!!k.authData},onNotAllowed:function(c){k.isAuthenticated()?a.invoke(b.doOnNotAuthorized,null,{restrictedUrl:c}):a.invoke(b.doOnNotAuthenticated,null,{restrictedUrl:c})},setUnauthenticated:function(){i()},config:b};return k}]}]).run(["visor","delayLocationChange",function(a,b){a.config.authenticateOnStartup&&b(a.authenticate())}]).config(["visorPermissionsProvider",function(a){a.doBeforeFirstCheck.push(["visor",function(a){return a.authenticate()}]),a.onNotAllowed=["visor","restrictedUrl",function(a,b){a.onNotAllowed(b)}]}])}(),function(){b.module("visor.ngRoute",["visor.permissions"]).run(["$rootScope","visorPermissions","$injector",function(a,b,c){var d=!1;try{c.get("$route"),d=!0}catch(e){}d&&a.$on("$routeChangeStart",function(a,c){c.resolve=c.resolve||{},b.onRouteChange(c,function(a){c.resolve._visorDelay=function(){return a}})})}])}(),function(){b.module("visor.permissions",[]).provider("visorPermissions",[function(){var a=this;a.getPermissionsFromNext=function(a){return a.restrict?[a.restrict]:[]},a.doBeforeFirstCheck=[],a.onNotAllowed=function(){},a.invokeParameters=[];var c=!1;this.$get=["$q","$injector","$location",function(d,e,f){function g(c,d){b.isArray(d)||(d=[d]);var e=!0;return d.forEach(function(a){e=e&&a.apply(null,h.invokeParameters)}),e?!0:(h.invokeNotAllowed(a.onNotAllowed),!1)}var h={onRouteChange:function(b,f){var i=h.getPermissionsFromNext(b);if(!i||0==i.length)return!0;if(c)return g(b,i);var j=d.defer();return f(j.promise),d.all(a.doBeforeFirstCheck.map(function(a){return e.invoke(a)}))["finally"](function(){c=!0,g(b,i)?j.resolve(!0):j.reject(!1)}),"delayed"},getPermissionsFromNext:a.getPermissionsFromNext,invokeParameters:a.invokeParameters,invokeNotAllowed:function(a){e.invoke(a,null,{restrictedUrl:f.url()})}};return h}]}])}(),function(){b.module("visor.ui-router",["visor.permissions"]).run(["$rootScope","visorPermissions","$injector","$timeout","$location",function(a,b,c,d,e){var f=!1;try{c.get("$state"),f=!0}catch(g){}f&&c.invoke(["$state",function(e){b.getPermissionsFromNext=function(a){console.log("get permissions");for(var b=[];a;)a.restrict&&b.unshift(a.restrict),a=a.parent?e.get(a.parent):a.name.indexOf(".")>0?e.get(a.name.replace(/(.*\.)?([^.]+)\.[^.]*$/,"$2")):null;return b};var f=(c.get("$urlRouter"),null),g=!1;a.$on("$stateChangeStart",function(a,c,d){if(g)return void(g=!1);f=e.href(c,d).replace(/^#/,"");var h=b.onRouteChange(c,function(a){a.then(function(){g=!0,e.go(c,d)})});h&&"delayed"!==h||a.preventDefault()}),b.invokeNotAllowed=function(a){d(function(){c.invoke(a,null,{restrictedUrl:f})},0)}}])}])}()}(window,window.angular);

@@ -36,31 +36,33 @@ (function(){

}
var $urlRouter = $injector.get("$urlRouter");
var toUrl = null;
var bypass = false;
$rootScope.$on('$stateChangeStart', function(e,toState,toParams){
if (bypass) {
bypass = false;
return;
}
toUrl = $state.href(toState,toParams).replace(/^#/,'');
var shouldContinue = visorPermissions.onRouteChange(toState,function delayChange(promise){
promise.then(function(){
bypass= true;
$state.go(toState,toParams);
})
});
if (!shouldContinue || shouldContinue === "delayed") {
e.preventDefault();
}
});
visorPermissions.invokeNotAllowed = function(notAllowed){
//timeout is required because when using preventDefault on $stateChangeStart, the url is
//reverted to it's original location, and no change at this time will override this.
$timeout(function(){
$injector.invoke(notAllowed,null,{restrictedUrl:toUrl})
},0);
}
}]);
var $urlRouter = $injector.get("$urlRouter");
var toUrl = null;
$rootScope.$on('$stateChangeStart', function(e,next){
toUrl = $location.url();
var shouldContinue = visorPermissions.onRouteChange(next,function delayChange(promise){
promise.then(function(){
if ($location.url() === toUrl) {
$urlRouter.sync();
} else {
$location.url(toUrl);
$urlRouter.sync();
}
})
});
if (!shouldContinue || shouldContinue === "delayed") {
e.preventDefault();
}
});
visorPermissions.invokeNotAllowed = function(notAllowed){
//timeout is required because when using preventDefault on $stateChangeStart, the url is
//reverted to it's original location, and no change at this time will override this.
$timeout(function(){
$injector.invoke(notAllowed,null,{restrictedUrl:toUrl})
},0);
}
}
}])
})();

@@ -253,3 +253,18 @@ 'use strict';

});
it('should redirect anonymous users to login if accessing private route after visitng public url', function(){
authenticate = function($q){
return $q.reject("not authenticated");
};
module("test.config");
inject(function($rootScope,$state,$q,$location,visor,$timeout) {
$location.url("/public");
$rootScope.$apply();
$timeout.flush();
$state.go('private');
$rootScope.$apply();
$timeout.flush();
expect($state.current.name).toEqual("login");
expect($location.search().next).toEqual("/private_url");
});
});
it('should not redirect anonymous users to login if accessing public route', function(){

@@ -256,0 +271,0 @@ authenticate = function($q){

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc