// # Copyright (C) 2010-2016 RhodeCode GmbH // # // # This program is free software: you can redistribute it and/or modify // # it under the terms of the GNU Affero General Public License, version 3 // # (only), as published by the Free Software Foundation. // # // # This program is distributed in the hope that it will be useful, // # but WITHOUT ANY WARRANTY; without even the implied warranty of // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // # GNU General Public License for more details. // # // # You should have received a copy of the GNU Affero General Public License // # along with this program. If not, see . // # // # This program is dual-licensed. If you wish to learn more about the // # AppEnlight Enterprise Edition, including its added features, Support // # services, and proprietary license terms, please see // # https://rhodecode.com/licenses/ var aeuser = angular.module('appenlight.user', []); aeuser.factory('AeUser', ['AeConfig', function () { var decodedAeUser = decodeEncodedJSON(window.AE.user); console.log('decodedAeUser', decodedAeUser); var AeUser = { user_name: decodedAeUser.user_name || null, id: decodedAeUser.id, assigned_reports: decodedAeUser.assigned_reports || null, latest_events: decodedAeUser.latest_events || null, permissions: decodedAeUser.permissions || null, groups: decodedAeUser.groups || null, applications: [], dashboards: [] }; console.log('AeUser', AeUser); AeUser.applications_map = {}; AeUser.dashboards_map = {}; AeUser.addApplication = function (item) { AeUser.applications.push(item); AeUser.applications_map[item.resource_id] = item; }; AeUser.addDashboard = function (item) { AeUser.dashboards.push(item); AeUser.dashboards_map[item.resource_id] = item; }; AeUser.removeApplicationById = function (applicationId) { AeUser.applications = _.filter(AeUser.applications, function (item) { return item.resource_id != applicationId; }); delete AeUser.applications_map[applicationId]; }; AeUser.removeDashboardById = function (dashboardId) { AeUser.dashboards = _.filter(AeUser.dashboards, function (item) { return item.resource_id != dashboardId; }); delete AeUser.dashboards_map[dashboardId]; }; AeUser.hasAppPermission = function (perm_name) { if (AeUser.permissions.indexOf('root_administration') !== -1) { return true } return AeUser.permissions.indexOf(perm_name) !== -1; }; AeUser.hasContextPermission = function (permName, ACLList) { var hasPerm = false; _.each(ACLList, function (ACL) { // is this the right perm? if (ACL.perm_name == permName || ACL.perm_name == '__all_permissions__') { // perm for this user or a group user belongs to if (ACL.user_name === AeUser.user_name || AeUser.groups.indexOf(ACL.group_name) !== -1) { hasPerm = true } } }); console.log('AeUser.hasContextPermission', permName, hasPerm); return hasPerm; }; _.each(decodedAeUser.applications, function (item) { AeUser.addApplication(item); }); _.each(decodedAeUser.dashboards, function (item) { AeUser.addDashboard(item); }); return AeUser; }]);