+++ /dev/null
-/*
- * Copyright (c) 2014 Inocybe Technologies, and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define([], function () {
- 'use strict';
-
- var Auth = function ($http, $window, Base64, ENV) {
- var factory = {};
- // Set Authorization header to username + password
- factory.setBasic = function (user, pw) {
- $window.localStorage.odlUser = user;
- $window.localStorage.odlPass = pw;
- // for backward compatibility
- $window.sessionStorage.odlUser = user;
- $window.sessionStorage.odlPass = pw;
- };
-
- // for backward compatibility
- if ($window.localStorage.odlUser && $window.localStorage.odlPass) {
- $window.sessionStorage.odlUser = $window.localStorage.odlUser;
- $window.sessionStorage.odlPass = $window.localStorage.odlPass;
- }
-
- factory.unsetBasic = function () {
- if ($http.defaults.headers.common.Authorization !== null) {
- delete $http.defaults.headers.common.Authorization;
- }
- $window.localStorage.clear();
- $window.sessionStorage.clear();
- document.cookie = 'JSESSIONID=; Path=/restconf; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
- };
-
- // Return the current user object
- factory.getUser = function () {
- var user = $window.localStorage.odlUser || null;
- return user;
- };
-
- factory.authorize = function (accessLevel, role) {
- if (role === undefined) {
- role = currentUser.role;
- }
- return accessLevel.bitMask & role.bitMask;
- };
- factory.isAuthed = function () {
- var authed = factory.getUser() ? true : false;
- return authed;
- };
- factory.isLoggedIn = function (user) {
- if (user === undefined) {
- user = currentUser;
- }
- return user.role.title === userRoles.user.title || user.role.title === userRoles.admin.title;
- };
- factory.login = function (user, pw, cb, eb) {
- factory.setBasic(user, pw);
- $http.get(ENV.getBaseURL('MD_SAL') + '/restconf/modules')
- .success(function (data) {
- cb(data);
- })
- .error(function (resp) {
- if (resp.errors) {
- var errorDetails = resp.errors.error[0];
- if (errorDetails && errorDetails['error-tag'] === 'data-missing') {
- // Authentication succeed, but API does not have data, allow to enter
- cb(resp);
- return;
- }
- }
- factory.unsetBasic();
- eb(resp);
- });
- };
- factory.logout = function (success) {
- factory.unsetBasic();
- success();
- };
- return factory;
- };
- Auth.$inject = ['$http', '$window', 'Base64', 'ENV'];
-
- var Base64 = function () {
- var keyStr = 'ABCDEFGHIJKLMNOP' +
- 'QRSTUVWXYZabcdef' +
- 'ghijklmnopqrstuv' +
- 'wxyz0123456789+/' +
- '=';
- return {
- encode: function (input) {
- var output = "";
- var chr1, chr2, chr3 = "";
- var enc1, enc2, enc3, enc4 = "";
- var i = 0;
-
- do {
- chr1 = input.charCodeAt(i++);
- chr2 = input.charCodeAt(i++);
- chr3 = input.charCodeAt(i++);
-
- enc1 = chr1 >> 2;
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
- enc4 = chr3 & 63;
-
- if (isNaN(chr2)) {
- enc3 = enc4 = 64;
- } else if (isNaN(chr3)) {
- enc4 = 64;
- }
-
- output = output +
- keyStr.charAt(enc1) +
- keyStr.charAt(enc2) +
- keyStr.charAt(enc3) +
- keyStr.charAt(enc4);
- chr1 = chr2 = chr3 = "";
- enc1 = enc2 = enc3 = enc4 = "";
- } while (i < input.length);
-
- return output;
- },
- decode: function (input) {
- var output = "";
- var chr1, chr2, chr3 = "";
- var enc1, enc2, enc3, enc4 = "";
- var i = 0;
-
- // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
- var base64test = /[^A-Za-z0-9\+\/\=]/g;
- if (base64test.exec(input)) {
- alert("There were invalid base64 characters in the input text.\n" +
- "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
- "Expect errors in decoding.");
- }
-
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
-
- do {
- enc1 = keyStr.indexOf(input.charAt(i++));
- enc2 = keyStr.indexOf(input.charAt(i++));
- enc3 = keyStr.indexOf(input.charAt(i++));
- enc4 = keyStr.indexOf(input.charAt(i++));
-
- chr1 = (enc1 << 2) | (enc2 >> 4);
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
- chr3 = ((enc3 & 3) << 6) | enc4;
-
- output = output + String.fromCharCode(chr1);
-
- if (enc3 != 64) {
- output = output + String.fromCharCode(chr2);
- }
- if (enc4 != 64) {
- output = output + String.fromCharCode(chr3);
- }
-
- chr1 = chr2 = chr3 = "";
- enc1 = enc2 = enc3 = enc4 = "";
-
- } while (i < input.length);
-
- return output;
- }
- };
- };
-
- // Filter to add authorization header if its a nb api call
- var NbInterceptor = function ($q, $window, Base64) {
- return {
- request: function (config) {
- // Use AAA basic authentication
- if (config.url.indexOf('restconf') !== -1 || config.url.indexOf('apidoc') !== -1) {
- config.headers = config.headers || {};
- if ($window.localStorage.odlUser && $window.localStorage.odlPass) {
- var encoded = Base64.encode($window.localStorage.odlUser + ':' + $window.localStorage.odlPass);
- config.headers.Authorization = 'Basic ' + encoded;
- }
- }
- return config;
- },
- response: function (response) {
- return response || $q.when(response);
- }
- };
- };
- NbInterceptor.$inject = ['$q', '$window', 'Base64'];
-
- return {
- Auth: Auth,
- Base64: Base64,
- NbInterceptor: NbInterceptor
- };
-
-});