(function () { 'use strict'; var serviceId = 'rolesAdminService'; angular.module('rolesAdmin').factory(serviceId, ['user', '$location', rolesAdminService]); function rolesAdminService(user, $location) { var service = { createBlankRole: createBlankRole, setEditingRole: setEditingRole, getEditingRole: getEditingRole, setMyRoles: setMyRoles, getMyRoles: getMyRoles, setActiveRole: setActiveRole, getActiveRole: getActiveRole, fnChecker: roleFunctionChecker, parentShortCodes: parentFunctionShortCodes, childShortCodes: childFunctionShortCodes }; // The role which the user has selected to edit. var editingRole; // The user's actual active role. var activeRole; // The collection of the user's avaialbe roles. var myRoles; // These just make the code a bit neater when we have to check against shortCodes. var parentFnCodes = { //ADMIN SITE users: 'manage_users', profiles: 'profiles', forms: 'manage_forms', activities: 'manage_activities', badges: 'manage_badges', frameworks: 'manage_frameworks', progress: 'manage_progress', apprenticeships: 'manage_apprenticeships', grading: 'manage_grading', assignments: 'manage_assignments', tasks: 'manage_tasks', showcaseInbox: 'manage_showcaseinbox', showboards: 'manage_showboards', subscriptions: 'manage_subscriptions', organisations: 'manage_organisations', employers: 'manage_employers', rules: 'manage_rules', workflows: 'manage_workflows', badgeDashboard: 'access_badges_dashboard', badgeReporting: 'access_badge_reporting', backpack: 'access_backpack', collections: 'access_collections', townSignatures: 'access_town_signatures', analytics: 'analytics', interventions: 'access_interventions', forecasting: 'forecasting', regionstowns: 'access_regionstowns', myforms: 'access_myforms', tutorials: 'access_tutorials', maybedashboard: 'access_maybedashboard', folders: 'manage_folders', accessProgressViews: 'access_progressviews', accessApprenticeships: 'access_apprenticeships', accessTasks: 'access_tasks', accessBadge: 'access_badges', accessSkillsPassport: 'access_skillspassport', //PERSONAL SITE //myshowcases: 'manage_myshowcases', //mybadges: 'manage_mybadges', mysettings: 'manage_mysettings', myactivities: 'manage_myactivities' } var childFnCodes = { //ADMIN SITE usersOrgsAccess: 'users_organisations_access', usersAccess: 'users_users_access', usersAccessStatus: 'users_users_access_status', usersRolesAllocate: 'roles_allocate', formStandards: 'form_standards_access', formReflections: 'form_reflections_access', formGoals: 'form_goals_access', formsAccess: 'forms_access', activitiesManage: 'activities_manage', activitiesAdd: 'activities_add', activitiesView: 'activities_view', badgesDashboard: 'access_badges_dashboard', badgeGraphics: 'badges_graphics_access', badgeBadges: 'badges_badges_access', badgeIssue: 'badges_issue_access', badgeIssuer: 'badges_issuer_access', badgesReporting: 'badges_reporting_access', badgesIssuedAccess: 'badges_issued_access', badgesCollectionAccess: 'badges_collections_access', accessReviewClaims: 'badges_claimsreview_access', accessCreateClaims: 'badges_claimscreate_access', frameworksCreate: 'frameworks_create_access', progressRubrics: 'progress_rubrics', progressTemplates: 'progress_templates', progressWorkflows: 'progress_workflows', progressViews: 'progress_views', progressEngagement: 'progress_engagement', progressViewsProposeMark: 'progress_views_propose_mark', progressViewsProposedMarksView: 'progress_views_propose_marks_view', progressViewsMarkDescretion: 'progress_views_mark_discretion', progressViewsMark: 'progress_views_mark', progressViewsComment: 'progress_views_comment', progressViewsMarkEvidence: 'progress_views_mark_evidence', progressViewsAddEvidence: 'progress_views_add_evidence', progressViewsExportEvidence: 'progress_views_export_evidence', progressViewsMarkDeployment: 'progress_views_mark_deployment', progressViewsComplete: 'progress_views_complete', progressViewsSample: 'progress_views_sample', progressViewsAccess: 'progress_views_access', progressEngagementAccess: 'progress_engagement_access', apprenticeshipsAccess: 'apprenticeships_manage_access', apprenticeshipsCreate: 'apprenticeships_manage_create', apprenticeshipsDelete: 'apprenticeships_manage_delete', apprenticeshipsReporting: 'apprenticeships_reporting_access', apprenticeshipsFunctionalSkills: 'apprenticeships_functionalskills_access', apprenticeshipsFunctionalSkillsExemptions: 'apprenticeships_functionalskills_exemptions', apprenticeshipsOtjAccess: 'apprenticeships_otj_access', gradingManage: 'grading_manage', tasksDefine: 'tasks_define', tasksAssign: 'tasks_assign', tasksActive: 'tasks_active', tasksCompletions: 'tasks_completions', tasksAssigned: 'tasks_assigned', tasksAssignedAccess: 'tasks_assigned_access', showcaseInboxShowcases: 'showcaseinbox_showcases', showboardsManage: 'showboards_manage', showboardsAccess: 'showboards_access', analyticsTownSignature: 'analytics_town_signature', analyticsTownFootfall: 'analytics_town_footfall', analyticsTownDailyFootfall: 'analytics_town_dailyfootfall', analyticsTownCompareFootfall: 'analytics_town_comparefootfall', analyticsTownEconomies: 'analytics_town_economies', analyticsTownMap: 'analytics_town_map', analyticsTownData: 'analytics_town_data', analyticsManualCounts: 'analytics_manual_counts', analyticsRegionFootfall: 'analytics_region_footfall', analyticsRegionDailyFootfall: 'analytics_region_dailyfootfall', analyticsRegionMap: 'analytics_region_map', forecastingTownForecast: 'forecasting_town_forecast', forecastingTownPeerGroup: 'forecasting_town_peergroup', forecastingChangingSignature: 'forecasting_changingsignature', workflowsDefinitions: 'workflows_definitions_access', workflowsDeployments: 'workflows_deployments_access', workflowsReporting: 'workflows_reporting_access', workflowsDashboardAccess: 'workflows_dashboard_access', foldersCreate: 'folders_create_access', foldersSharing: 'folders_sharing_access', foldersView: 'folders_viewing_access', foldersShared: 'folders_shared_access', skillsPassportTrainingrecordsAccess: 'skillspassport_trainingrecords_access', //PERSONAL SITE stuffItemsAccess: 'stuff_items_access', stuffItemsManage: 'stuff_items_manage', stuffItemsExport: 'stuff_items_export_access', showcasesAccess: 'showcases_access', myshowcasesManage: 'myshowcases_manage', myotjManage: 'myotj_manage', myprogressViewsManage: 'myprogressviews_manage', myformsManage: 'myforms_manage', mydashboardsManage: 'mydashboards_manage', mytasksManage: 'mytasks_manage', myshowboardsManage: 'myshowboards_manage', mybadgesManage: 'mybadges_manage', mysettingsManage: 'mysettings_manage', myactivitiesManage: 'myactivities_manage', personalSettingsAccess: 'mysettings_manage', personalSettingsManage: 'manage_mysettings', personalSettingsSignInName: 'manage_signinname', sharedFoldersAccess: 'shared_folders_access' } return service; //TODO: Rename currentRole -> editingRole or something like that. // Function to set the current role function setEditingRole(role) { editingRole = role; } // Function to get the currently stored role function getEditingRole(role) { return editingRole; } // Function to create a new blank role function createBlankRole() { return { name: '', description: '', displayName: '', roleFunctions: [], makeAvailable: true, isActive: true }; } // Active role is used to hold the user's current active role. function setActiveRole(role) { activeRole = role; } function getActiveRole() { return activeRole; } // My roles is the array of the current user's available roles. function setMyRoles(roles) { myRoles = roles; } function getMyRoles() { return myRoles; } // short code checking object which contains functions for checking what type of role function the input is. function roleFunctionChecker() { return { isUsers: function (fn) { return fn.shortCode == childFnCodes.usersAccess || fn.shortCode == childFnCodes.usersOrgsAccess; }, isProfiles: function (fn) { return fn.shortCode == parentFnCodes.profiles; }, isForms: function (fn) { return fn.shortCode == childFnCodes.formStandards || fn.shortCode == childFnCodes.formReflections || fn.shortCode == childFnCodes.formGoals || fn.shortCode == childFnCodes.formsAccess || fn.shortCode == childFnCodes.myformsManage || fn.shortCode == parentFnCodes.myforms; }, isActivities: function (fn) { return fn.shortCode == childFnCodes.activitiesManage || fn.shortCode == childFnCodes.activitiesAdd || fn.shortCode == childFnCodes.activitiesView || fn.shortCode == childFnCodes.myactivitiesManage || fn.shortCode == parentFnCodes.myactivities; }, isBadges: function (fn) { return fn.shortCode == childFnCodes.badgesManage || fn.shortCode == childFnCodes.badgeGraphics || fn.shortCode == childFnCodes.badgeBadges || fn.shortCode == childFnCodes.badgeIssue || fn.shortCode == childFnCodes.badgeIssuer || fn.shortCode == childFnCodes.badgesReporting || fn.shortCode == childFnCodes.accessReviewClaims || fn.shortCode == childFnCodes.accessCreateClaims || fn.shortCode == childFnCodes.badgesIssuedAccess || fn.shortCode == childFnCodes.badgesCollectionAccess || fn.shortCode == childFnCodes.mybadgesManage || fn.shortCode == parentFnCodes.mybadges; }, isFrameworks: function (fn) { return fn.shortCode == childFnCodes.frameworksCreate; }, isProgress: function (fn) { return fn.shortCode == childFnCodes.progressRubrics || fn.shortCode == childFnCodes.progressTemplates || fn.shortCode == childFnCodes.progressWorkflows || fn.shortCode == childFnCodes.progressViews || fn.shortCode == childFnCodes.progressEngagement || fn.shortCode == childFnCodes.progressViewsMark || fn.shortCode == childFnCodes.progressViewsComment || fn.shortCode == childFnCodes.progressViewsMarkEvidence || fn.shortCode == childFnCodes.progressViewsAddEvidence || fn.shortCode == childFnCodes.progressViewsExportEvidence || fn.shortCode == childFnCodes.progressViewsMarkDeployment || fn.shortCode == childFnCodes.progressViewsComplete || fn.shortCode == childFnCodes.progressViewsAccess || fn.shortCode == childFnCodes.progressEngagementAccess || fn.shortCode == childFnCodes.progressViewsProposeMark || fn.shortCode == childFnCodes.progressViewsProposedMarksView || fn.shortCode == childFnCodes.progressViewsMarkDescretion || fn.shortCode == childFnCodes.progressViewsSample || fn.shortCode == childFnCodes.myprogressViewsManage; }, isApprenticeships: function (fn) { return fn.shortCode == childFnCodes.apprenticeshipsAccess || fn.shortCode == childFnCodes.apprenticeshipsCreate || fn.shortCode == childFnCodes.apprenticeshipsDelete || fn.shortCode == childFnCodes.apprenticeshipsReporting || fn.shortCode == childFnCodes.apprenticeshipsFunctionalSkills || fn.shortCode == childFnCodes.apprenticeshipsFunctionalSkillsExemptions || fn.shortCode == childFnCodes.apprenticeshipsOtjAccess || fn.shortCode == childFnCodes.myotjManage; }, isFolders: function (fn) { return fn.shortCode == childFnCodes.foldersCreate || fn.shortCode == childFnCodes.foldersSharing || fn.shortCode == childFnCodes.foldersView || fn.shortCode == childFnCodes.sharedFoldersAccess || fn.shortCode == childFnCodes.foldersShared; }, isGrading: function (fn) { return fn.shortCode == childFnCodes.gradingManage; }, isTasks: function (fn) { return fn.shortCode == childFnCodes.tasksDefine || fn.shortCode == childFnCodes.tasksAssign || fn.shortCode == childFnCodes.tasksActive || fn.shortCode == childFnCodes.tasksCompletions || fn.shortCode == childFnCodes.tasksAssigned || fn.shortCode == childFnCodes.tasksAssignedAccess || fn.shortCode == childFnCodes.mytasksView || fn.shortCode == childFnCodes.mytasksManage; }, isShowcaseInbox: function (fn) { return fn.shortCode == childFnCodes.showcaseInboxShowcases; }, isShowboards: function (fn) { return fn.shortCode == childFnCodes.showboardsManage || fn.shortCode == childFnCodes.showboardsAccess || fn.shortCode == childFnCodes.myshowboardsManage; }, isSubscription: function (fn) { return fn.shortCode == parentFnCodes.subscriptions; }, isBadgesDashboard: function (fn) { return fn.shortCode == parentFnCodes.badgeDashboard; }, isOrganisations: function (fn) { return fn.shortCode == parentFnCodes.organisations; }, isEmployers: function (fn) { return fn.shortCode == parentFnCodes.employers; }, isRules: function (fn) { return fn.shortCode == parentFnCodes.rules; }, isWorkflows: function (fn) { return fn.shortCode == childFnCodes.workflowsDefinitions || fn.shortCode == childFnCodes.workflowsDeployments || fn.shortCode == childFnCodes.workflowsReporting; }, isBadgeReporting: function (fn) { return fn.shortCode == parentFnCodes.badgeReporting; }, isBackpack: function (fn) { return fn.shortCode == parentFnCodes.backpack || fn.shortCode == childFnCodes.mybadgesManage || fn.shortCode == parentFnCodes.mybadges; }, isCollections: function (fn) { return fn.shortCode == parentFnCodes.collections || fn.shortCode == parentFnCodes.badgesCollectionAccess; }, isTownSignatures: function (fn) { return fn.shortCode == parentFnCodes.townSignatures; }, isAnalytics: function (fn) { return fn.shortCode == childFnCodes.analyticsTownSignature || fn.shortCode == childFnCodes.analyticsTownFootfall || fn.shortCode == childFnCodes.analyticsTownDailyFootfall || fn.shortCode == childFnCodes.analyticsTownCompareFootfall || fn.shortCode == childFnCodes.analyticsTownEconomies || fn.shortCode == childFnCodes.analyticsTownMap || fn.shortCode == childFnCodes.analyticsTownData || fn.shortCode == childFnCodes.analyticsManualCounts || fn.shortCode == childFnCodes.analyticsRegionFootfall || fn.shortCode == childFnCodes.analyticsRegionDailyFootfall || fn.shortCode == childFnCodes.analyticsRegionMap; }, isInterventions: function (fn) { return fn.shortCode == parentFnCodes.interventions; }, isForecasting: function (fn) { return fn.shortCode == childFnCodes.forecastingTownForecast || fn.shortCode == childFnCodes.forecastingTownPeerGroup || fn.shortCode == childFnCodes.forecastingChangingSignature; }, isRegionsTowns: function (fn) { return fn.shortCode == parentFnCodes.regionstowns; }, isMyForms: function (fn) { return fn.shortCode == parentFnCodes.myforms || fn.shortCode == childFnCodes.myformsView || fn.shortCode == childFnCodes.myformsManage; }, isTutorials: function (fn) { return fn.shortCode == parentFnCodes.tutorials; }, isMaybeDashboard: function (fn) { return fn.shortCode == parentFnCodes.maybedashboard; }, isStuff: function (fn) { return fn.shortCode == childFnCodes.stuffItemsAccess || fn.shortCode == childFnCodes.stuffItemsManage || fn.shortCode == childFnCodes.stuffItemsExport; }, isShowcases: function (fn) { return fn.shortCode == childFnCodes.showcasesAccess || fn.shortCode == childFnCodes.myshowcasesManage || fn.shortCode == parentFnCodes.myshowcases; }, isDashboard: function (fn) { return fn.shortCode == childFnCodes.workflowsDashboardAccess || fn.shortCode == childFnCodes.mydashboardsView || fn.shortCode == childFnCodes.mydashboardsManage || fn.shortCode == parentFnCodes.mydashboards; }, isSkillsPassport: function (fn) { return fn.shortCode == childFnCodes.skillsPassportTrainingrecordsAccess; }, isPersonalSettings: function (fn) { return fn.shortCode == childFnCodes.personalSettingsAccess || fn.shortCode == childFnCodes.personalSettingsManage || fn.shortCode == childFnCodes.personalSettingsSignInName; } } } function parentFunctionShortCodes() { return parentFnCodes; } function childFunctionShortCodes() { return childFnCodes; } } })();