client/app/app.js
author rougeronj
Thu, 02 Apr 2015 18:28:31 +0200
changeset 57 388b29d38b44
parent 55 10fd23382e76
child 91 f7a844a9079e
permissions -rw-r--r--
add authentication and controle of authentication before routing

(function(){
	'use strict';

	angular.module('ammico', [ 'ngRoute','ammicoHome', 'ammicoBooks', 'ammicoSlides', 'ammicoSlideshow', 'ammicoSearch', 'ammicoAuth', 'templates' ])
	.config(function($routeProvider) {
		$routeProvider.
		when('/', {
			controller: 'homeCtrl',
			templateUrl: 'home/home.html',
			authRequired: false
		}).
		when('/books', {
			controller: 'booksCtrl',
			templateUrl: 'books/books.html',
			authRequired: true
		}).
		when('/books/:idBook', {
			controller: 'bookCtrl',
			templateUrl: 'books/book.html',
			authRequired: true
		}).
		when('/slide/:idSlide', {
			controller: 'slidesCtrl',
			templateUrl: 'slides/slides.html',
			authRequired: true
		}).
		when('/slideshow/', {
			controller: 'slideshowCtrl',
			templateUrl: 'slideshow/slideshow.html',
			authRequired: true
		}).
		when('/slideshow/:iSlide', {
			controller: 'slideshowCtrl',
			templateUrl: 'slideshow/slideshow.html',
			authRequired: true
		}).
		when('/search/:q', {
			controller: 'searchCtrl',
			templateUrl: 'search/search.html',
			authRequired: true
		}).
		when('/auth/:action', {
			controller: 'authCtrl',
			templateUrl: 'home/home.html',
			authRequired: false
		}).
		otherwise({
			redirectTo: '/'
		});
	})
	.run( function($rootScope, $location, $window, $http) {
		$rootScope.globals = {};
		if ($window.sessionStorage.token) {
			$rootScope.globals.userLogged = true;
			$http.defaults.headers.common.Authorization = 'Token ' + $window.sessionStorage.token;
		}
		$rootScope.$on( '$routeChangeStart', function(event, next) {
			if (next.authRequired && !$rootScope.globals.userLogged) {
				$location.path( '/auth/login' );
			}
		});
	})
	.service('searchApi', function($resource, context) {
		this.searchResource = function(params){
			return $resource(context.urls.searchUrl,  
					{
				callback: 'JSON_CALLBACK'
					},
					{
						getJsonp: {
							method: 'JSONP',
							params: params,
							isArray: false,
							transformResponse: function(data){
								// Transform meta list into meta dict
								var nb = data.hits.length;
								for(var i=0;i<nb;i++){
									var nb_metas = data.hits[i].metas.length;
									data.hits[i].metas_dict = {};
									for(var j=0;j<nb_metas;j++){
										if(typeof data.hits[i].metas[j].images==='undefined'){
											data.hits[i].metas_dict[data.hits[i].metas[j].name] = data.hits[i].metas[j].value;
										}
										else{
											data.hits[i].metas_dict.images = data.hits[i].metas[j].images[0].value;
										}
									}
								}
								return data;
							}
						}
					});
		};
	})
	.service('ammicoApi', function($resource, context, $sce) {
		this.listBooks = $resource(context.urls.ammicoUrl+'/books');
		this.book = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@idBook'});
		this.order = $resource(context.urls.ammicoUrl+'/books/:idBook/order', {idBook:'@idBook'});
		this.booksSlides = $resource(context.urls.ammicoUrl+'/books/:idBook/slides', {idBook:'@idBook'});
		this.listSlides= $resource(context.urls.ammicoUrl+'/slides');
		this.slide = $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@idSlide'});
		this.sanitizeUrls = function(data){
			data.details.audio = $sce.trustAsResourceUrl(data.details.audio);
			data.details.video = $sce.trustAsResourceUrl(data.details.video);
			data.audio = $sce.trustAsResourceUrl(data.audio);
			data.video = $sce.trustAsResourceUrl(data.video);
			return data;
		};
	})
	.service('authApi', function($resource, context) {
		this.login = $resource(context.urls.ammicoUrl+'/auth/api-token-auth');
		this.logout = $resource(context.urls.ammicoUrl+'/auth/logout');
		this.user = $resource(context.urls.ammicoUrl+'/auth/user');
		this.test = $resource(context.urls.ammicoUrl+'/auth/auth');
	});
})();