Skip to content
Snippets Groups Projects
Commit 8bbd156f authored by Allen Gilliland's avatar Allen Gilliland
Browse files

updating frontend application to strip out usage of Organizations.

parent df07f6ba
No related branches found
No related tags found
No related merge requests found
Showing
with 115 additions and 303 deletions
......@@ -5,27 +5,27 @@ var AdminDatabases = angular.module('corvusadmin.databases', [
]);
AdminDatabases.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/:orgSlug/admin/databases/', {
$routeProvider.when('/admin/databases/', {
templateUrl: '/app/admin/databases/partials/database_list.html',
controller: 'DatabaseList'
});
$routeProvider.when('/:orgSlug/admin/databases/create', {
$routeProvider.when('/admin/databases/create', {
templateUrl: '/app/admin/databases/partials/database_edit.html',
controller: 'DatabaseEdit'
});
$routeProvider.when('/:orgSlug/admin/databases/:databaseId', {
$routeProvider.when('/admin/databases/:databaseId', {
templateUrl: '/app/admin/databases/partials/database_edit.html',
controller: 'DatabaseEdit'
});
$routeProvider.when('/:orgSlug/admin/databases/:databaseId/tables/', {
$routeProvider.when('/admin/databases/:databaseId/tables/', {
templateUrl: '/app/admin/databases/partials/database_tables.html',
controller: 'DatabaseTables'
});
$routeProvider.when('/:orgSlug/admin/databases/table/:tableId', {
$routeProvider.when('/admin/databases/table/:tableId', {
templateUrl: '/app/admin/databases/partials/database_table.html',
controller: 'DatabaseTable'
});
$routeProvider.when('/:orgSlug/admin/databases/field/:fieldId', {
$routeProvider.when('/admin/databases/field/:fieldId', {
templateUrl: '/app/admin/databases/partials/database_table_field.html',
controller: 'DatabaseTableField'
});
......
"use strict";
/*global btoa*/
/*global $*/
var OrganizationAdminControllers = angular.module('corvusadmin.organization.controllers', [
'corvus.services',
'metabase.forms'
]);
OrganizationAdminControllers.controller('OrganizationSettings', ['$scope', 'Organization',
function($scope, Organization) {
$scope.save = function(organization) {
$scope.$broadcast("form:reset");
// use NULL for unset timezone
if (!organization.report_timezone) {
organization.report_timezone = null;
}
Organization.update(organization, function (org) {
$scope.currentOrg = org;
$scope.$broadcast("form:api-success", "Successfully saved!");
// we need to trigger a refresh of $scope.user so that these changes propogate the UI
$scope.refreshCurrentUser();
}, function (error) {
$scope.$broadcast("form:api-error", error);
});
};
Organization.form_input(function (result) {
$scope.form_input = result;
}, function (error) {
console.log('error getting form input', error);
});
}
]);
\ No newline at end of file
'use strict';
var OrganizationAdmin = angular.module('corvusadmin.organization', [
'corvusadmin.organization.controllers'
]);
OrganizationAdmin.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/:orgSlug/admin/org/', {
templateUrl: '/app/admin/organization/partials/org_settings.html',
controller: 'OrganizationSettings'
});
}]);
\ No newline at end of file
<div class="wrapper">
<section class="PageHeader">
<h2 class="PageTitle">Organization</h2>
</section>
<section class="Grid Grid--gutters Grid--full Grid--2of3">
<!-- form -->
<div class="Grid-cell Cell--2of3">
<form class="Form-new bordered rounded shadowed" name="form" novalidate>
<div class="Form-field" mb-form-field="slug">
<mb-form-label display-name="Slug" field-name="slug"></mb-form-label>
<input class="Form-input Form-offset full" name="slug" ng-model="currentOrg.slug" ng-disabled="true" />
</div>
<div class="Form-field" mb-form-field="name">
<mb-form-label display-name="Name" field-name="name"></mb-form-label>
<input class="Form-input Form-offset full" name="name" placeholder="What is the name of your organization?" ng-model="currentOrg.name" required autofocus/>
<span class="Form-charm"></span>
</div>
<div class="Form-field" mb-form-field="description">
<mb-form-label display-name="Description" field-name="description"></mb-form-label>
<input class="Form-input Form-offset full" name="description" placeholder="What else should people know about this org?" ng-model="currentOrg.description" />
<span class="Form-charm"></span>
</div>
<div class="Form-field" mb-form-field="logo_url">
<mb-form-label display-name="Logo url" field-name="logo_url"></mb-form-label>
<input class="Form-input Form-offset full" name="logo_url" placeholder="Link to an image of your logo" ng-model="currentOrg.logo_url" />
<span class="Form-charm"></span>
</div>
<div class="Form-field" mb-form-field="report_timezone">
<mb-form-label display-name="Reporting timezone" field-name="report_timezone"></mb-form-label>
<label class="Select Form-offset">
<select ng-model="currentOrg.report_timezone" ng-options="tz for tz in form_input['timezones']">
<option value="">--- default timezone ---</option>
</select>
</label>
</div>
<div class="Form-actions">
<button class="Button" ng-class="{'Button--primary': form.$valid}" ng-click="save(currentOrg)" ng-disabled="!form.$valid">
Save
</button>
<mb-form-message form="form"></mb-form-message>
</div>
</form>
</div>
</section>
</div>
<div class="wrapper">
<section class="PageHeader clearfix">
<a class="Button Button--primary float-right" cv-org-href="/admin/people/add">Add person</a>
<a class="Button Button--primary float-right" href="/admin/people/add">Add person</a>
<h2 class="PageTitle">People</h2>
</section>
......@@ -13,17 +13,17 @@
</tr>
</thead>
<tbody>
<tr ng-repeat="perm in people">
<tr ng-repeat="user in people">
<td>
{{perm.user.common_name}} <span ng-show="perm.admin" class="AdminBadge">Admin</span>
{{user.common_name}} <span ng-show="user.is_superuser" class="AdminBadge">Admin</span>
</td>
<td class="Table-actions">
<button class="Button" ng-click="toggle(perm.user.id)">
<span ng-show="perm.admin">Revoke</span>
<span ng-show="!perm.admin">Grant</span>
<button class="Button" ng-click="toggle(user.id)">
<span ng-show="user.is_superuser">Revoke</span>
<span ng-show="!user.is_superuser">Grant</span>
admin
</button>
<button class="Button Button--danger" ng-click="delete(perm.user.id)" delete-confirm>Remove</button>
<button class="Button Button--danger" ng-click="delete(user.id)" delete-confirm>Remove</button>
</td>
</tr>
</tbody>
......
<div class="wrapper">
<section class="Breadcrumbs">
<a class="Breadcrumb Breadcrumb--path" cv-org-href="/admin/people/">People</a>
<a class="Breadcrumb Breadcrumb--path" href="/admin/people/">People</a>
<cv-chevron-right-icon class="Breadcrumb-divider" width="12px" height="12px"></cv-chevron-right-icon>
<h2 class="Breadcrumb Breadcrumb--page">Add person</h2>
</section>
......
......@@ -6,62 +6,58 @@ var PeopleControllers = angular.module('corvusadmin.people.controllers', [
'metabase.forms'
]);
PeopleControllers.controller('PeopleList', ['$scope', 'Organization',
function($scope, Organization) {
PeopleControllers.controller('PeopleList', ['$scope', 'User',
function($scope, User) {
// grant admin permission for a given user
var grant = function(userId) {
Organization.member_update({
orgId: $scope.currentOrg.id,
userId: userId,
admin: true
}, function (result) {
$scope.people.forEach(function (perm) {
if (perm.user.id === userId) {
perm.admin = true;
// grant superuser permission for a given user
var grant = function(user) {
user.is_superuser = true;
User.update(user, function (result) {
$scope.people.forEach(function (u) {
if (u.id === user.id) {
u.is_superuser = true;
}
});
}, function (error) {
console.log('error', error);
$scope.alertError('failed to grant admin to user');
$scope.alertError('failed to grant superuser to user');
});
};
// revoke admin permission for a given user
var revoke = function(userId) {
Organization.member_update({
orgId: $scope.currentOrg.id,
userId: userId,
admin: false
}, function (result) {
$scope.people.forEach(function (perm) {
if (perm.user.id === userId) {
perm.admin = false;
// revoke superuser permission for a given user
var revoke = function(user) {
user.is_superuser = false;
User.update(user, function (result) {
$scope.people.forEach(function (u) {
if (u.id === user.id) {
u.is_superuser = false;
}
});
}, function (error) {
console.log('error', error);
$scope.alertError('failed to revoke admin from user');
$scope.alertError('failed to revoke superuser from user');
});
};
// toggle admin permission for a given user
// toggle superuser permission for a given user
$scope.toggle = function(userId) {
$scope.people.forEach(function (perm) {
if (perm.user.id === userId) {
if (perm.admin) {
revoke(userId);
$scope.people.forEach(function (user) {
if (user.id === userId) {
if (user.is_superuser) {
revoke(user);
} else {
grant(userId);
grant(user);
}
}
});
};
// completely remove a given user (from the current org)
// completely remove a given user
// TODO: we need this api function now
$scope.delete = function(userId) {
Organization.member_remove({
orgId: $scope.currentOrg.id,
User.delete({
userId: userId
}, function(result) {
for (var i = 0; i < $scope.people.length; i++) {
......@@ -72,37 +68,31 @@ PeopleControllers.controller('PeopleList', ['$scope', 'Organization',
}
}, function (error) {
console.log('error', error);
$scope.alertError('failed to remove user from org');
$scope.alertError('failed to remove user');
});
};
$scope.$watch('currentOrg', function (org) {
if (!org) return;
Organization.members({
'orgId': org.id
}, function (result) {
$scope.people = result;
}, function (error) {
console.log('error', error);
});
User.list(function (result) {
$scope.people = result;
}, function (error) {
console.log('error', error);
});
}
]);
PeopleControllers.controller('PeopleAdd', ['$scope', '$location', 'Organization',
function($scope, $location, Organization) {
PeopleControllers.controller('PeopleAdd', ['$scope', '$location', 'User',
function($scope, $location, User) {
$scope.save = function(newUser) {
$scope.$broadcast("form:reset");
newUser.orgId = $scope.currentOrg.id;
newUser.admin = false;
Organization.member_create(newUser, function (result) {
newUser.is_superuser = false;
// TODO: we need this function!!
User.create(newUser, function (result) {
// just go back to people listing page for now
$location.path('/'+$scope.currentOrg.slug+'/admin/people/');
$location.path('/admin/people/');
}, function (error) {
$scope.$broadcast("form:api-error", error);
});
......
'use strict';
var Organization = angular.module('corvusadmin.people', [
var AdminPeople = angular.module('corvusadmin.people', [
'corvusadmin.people.controllers'
]);
Organization.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/:orgSlug/admin/people/', {
AdminPeople.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/admin/people/', {
templateUrl: '/app/admin/people/partials/people.html',
controller: 'PeopleList'
});
$routeProvider.when('/:orgSlug/admin/people/add', {
$routeProvider.when('/admin/people/add', {
templateUrl: '/app/admin/people/partials/people_add.html',
controller: 'PeopleAdd'
});
......
'use strict';
/*global _*/
var SettingsAdminControllers = angular.module('superadmin.settings.controllers', ['superadmin.settings.services']);
var SettingsAdminControllers = angular.module('corvusadmin.settings.controllers', ['corvusadmin.settings.services']);
SettingsAdminControllers.controller('SettingsAdminController', ['$scope', 'SettingsAdminServices',
function($scope, SettingsAdminServices) {
......
'use strict';
var SettingsAdmin = angular.module('superadmin.settings', [
'superadmin.settings.controllers',
'superadmin.settings.services'
var SettingsAdmin = angular.module('corvusadmin.settings', [
'corvusadmin.settings.controllers',
'corvusadmin.settings.services'
]);
SettingsAdmin.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/superadmin/settings/', {
templateUrl: '/app/superadmin/settings/partials/settings.html',
$routeProvider.when('/admin/settings/', {
templateUrl: '/app/admin/settings/partials/settings.html',
controller: 'SettingsAdminController'
});
}]);
'use strict';
var SettingsAdminServices = angular.module('superadmin.settings.services', ['ngResource']);
var SettingsAdminServices = angular.module('corvusadmin.settings.services', ['ngResource']);
SettingsAdminServices.factory('SettingsAdminServices', ['$resource', function($resource) {
return $resource('/api/setting', {}, {
......
......@@ -25,11 +25,9 @@ var Corvus = angular.module('corvus', [
'corvus.reserve',
'corvus.user',
'corvus.setup',
'corvusadmin.organization',
'corvusadmin.databases',
'corvusadmin.people',
'superadmin.settings',
'superadmin.organization'
'corvusadmin.settings'
]);
Corvus.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.html5Mode({
......@@ -68,31 +66,12 @@ Corvus.config(['$routeProvider', '$locationProvider', function($routeProvider, $
controller: 'SetupInit'
});
$routeProvider.when('/superadmin/', {
$routeProvider.when('/admin/', {
redirectTo: function(routeParams, path, search) {
return '/superadmin/settings/';
return '/admin/settings';
}
});
// TODO: we need actual homepages for orgs!
$routeProvider.when('/:orgSlug/', {
redirectTo: function(routeParams, path, search) {
return '/' + routeParams.orgSlug + '/dash/';
}
});
$routeProvider.when('/:orgSlug/admin/', {
redirectTo: function(routeParams, path, search) {
return '/' + routeParams.orgSlug + '/admin/org/';
}
});
// admin routes
$routeProvider.when('/:orgSlug/admin/test_login_form', {
templateUrl: '/app/admin/test_login_form.html',
controller: 'TestLoginForm'
});
// TODO: we need an appropriate homepage or something to show in this situation
$routeProvider.otherwise({
redirectTo: '/user/edit_current'
......
......@@ -31,17 +31,12 @@ CardControllers.controller('CardList', ['$scope', '$location', 'Card', function(
$scope.filter = function(filterMode) {
$scope.filterMode = filterMode;
$scope.$watch('currentOrg', function(org) {
if (!org) return;
Card.list({
'orgId': org.id,
'filterMode': filterMode
}, function(cards) {
$scope.cards = cards;
}, function(error) {
console.log('error getting cards list', error);
});
Card.list({
'filterMode': filterMode
}, function(cards) {
$scope.cards = cards;
}, function(error) {
console.log('error getting cards list', error);
});
};
......@@ -126,7 +121,7 @@ CardControllers.controller('CardDetail', [
cardJson = JSON.stringify(card);
// for new cards we redirect the user
$location.path('/' + $scope.currentOrg.slug + '/card/' + newCard.id);
$location.path('/card/' + newCard.id);
},
notifyCardUpdatedFn: function(updatedCard) {
cardJson = JSON.stringify(card);
......@@ -334,7 +329,6 @@ CardControllers.controller('CardDetail', [
}, function (result) {
if (cloning) {
result.id = undefined; // since it's a new card
result.organization = $scope.currentOrg.id;
result.carddirty = true; // so it cand be saved right away
}
......@@ -367,7 +361,6 @@ CardControllers.controller('CardDetail', [
} else {
// starting a new card
card.organization = $scope.currentOrg.id;
// this is just an easy way to ensure defaults are all setup
headerModel.setQueryModeFn("query");
......@@ -397,32 +390,21 @@ CardControllers.controller('CardDetail', [
React.unmountComponentAtNode(document.getElementById('react_qb_viz'));
});
// TODO: we should get database list first, then do rest of setup
// because without databases this UI is meaningless
$scope.$watch('currentOrg', function (org) {
// we need org always, so we just won't do anything if we don't have one
if (!org) {return;}
// TODO: while we wait for the databases list we should put something on screen
// grab our database list, then handle the rest
Metabase.db_list({
'orgId': org.id
}, function (dbs) {
databases = dbs;
if (dbs.length < 1) {
// TODO: some indication that setting up a db is required
return;
}
// TODO: while we wait for the databases list we should put something on screen
// grab our database list, then handle the rest
Metabase.db_list(function (dbs) {
databases = dbs;
// finish initializing our page and render
initAndRender();
if (dbs.length < 1) {
// TODO: some indication that setting up a db is required
return;
}
}, function (error) {
console.log('error getting database list', error);
});
// finish initializing our page and render
initAndRender();
}, function (error) {
console.log('error getting database list', error);
});
}
]);
......@@ -14,15 +14,15 @@ var Card = angular.module('corvus.card', [
]);
Card.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/:orgSlug/card/', {
$routeProvider.when('/card/', {
templateUrl: '/app/card/partials/card_list.html',
controller: 'CardList'
});
$routeProvider.when('/:orgSlug/card/create/', {
$routeProvider.when('/card/create/', {
templateUrl: '/app/card/partials/card_detail.html',
controller: 'CardDetail'
});
$routeProvider.when('/:orgSlug/card/:cardId', {
$routeProvider.when('/card/:cardId', {
templateUrl: '/app/card/partials/card_detail.html',
controller: 'CardDetail'
});
......
......@@ -8,14 +8,14 @@
<h3>This card contains no data.</h3>
<span class="text-grey-3">Your filters may be too narrow.</span>
</div>
<a class="link" cv-org-href="/card/{{card.id}}/modify">Try removing some filters</a>
<a class="link" href="/card/{{card.id}}/modify">Try removing some filters</a>
</div>
<div ng-if="sourceTableEmpty">
The source dataset <a cv-org-href="/explore/table/{{sourceTable.id}}">{{sourceTable.name}}</a> is empty
The source dataset <a href="/explore/table/{{sourceTable.id}}">{{sourceTable.name}}</a> is empty
</div>
<div class="py1" ng-if="card.dataset_query.type == 'result'">
The SQL query backing this card returned no records.<br/>
<a cv-org-href="/admin/query/{{card.dataset_query.result.query_id}}/modify">Review your query</a> to ensure that your datasets are not empty and that your WHERE clause is not too narrow.
<a href="/admin/query/{{card.dataset_query.result.query_id}}/modify">Review your query</a> to ensure that your datasets are not empty and that your WHERE clause is not too narrow.
</div>
</div>
</div>
......@@ -27,13 +27,13 @@
The SQL query backing this card returned the following error:
<span class="block text-italic text-grey-4 my1">"{{sqlError}}"</span>
<div ng-if="card.dataset_query.type == 'result'">
<a class="link block my4" cv-org-href="/admin/query/{{card.dataset_query.result.query_id}}/modify">Fix Query</a>
<a class="link block my4" href="/admin/query/{{card.dataset_query.result.query_id}}/modify">Fix Query</a>
</div>
</div>
<div class="py1" ng-if="missingDataset">
The dataset "{{missingDataset}}" backing this card is no longer available
<div ng-if="card.dataset_query.database">
<a cv-org-href="/explore/db/{{card.dataset_query.database}}">Explore</a>
<a href="/explore/db/{{card.dataset_query.database}}">Explore</a>
</div>
</div>
</div>
......@@ -96,7 +96,7 @@
</div>
<div class="Card-footing py1 px2 clearfix" id="{{chartId + '_footing'}}">
<a class="Card-dataSource float-right" ng-if="dataset_info.title" cv-org-href="{{dataset_info.link}}">{{dataset_info.title}}</a>
<a class="Card-dataSource float-right" ng-if="dataset_info.title" href="{{dataset_info.link}}">{{dataset_info.title}}</a>
<div class="py1" ng-if="card.creator && ((card.creator.last_name && card.creator.first_name) || card.creator.email)">
By:
<span ng-if="card.creator.first_name && card.creator.last_name">{{card.creator.first_name}} {{card.creator.last_name}}</span>
......
......@@ -12,7 +12,7 @@
<li>
<a class="block link py1 px1" href="#" ng-if="!cardSettings || cardSettings.allowAddToDash" cv-add-to-dashboard-modal card="card">Add to Dashboard</a>
<li>
<a class="block link py1 px1" cv-org-href="/card/{{card.id}}" ng-if="card.can_write">Modify Card</a>
<a class="block link py1 px1" href="/card/{{card.id}}" ng-if="card.can_write">Modify Card</a>
</li>
<li>
<a class="block link py1 px1" href="#" ng-if="!cardSettings || cardSettings.allowSend" cv-send-card-modal card="card">Send</a>
......@@ -26,7 +26,7 @@
</div>
<h3 class="text-normal my1">
<a class="Card-title link" href="#" ng-if="(!cardSettings || cardSettings.allowTitleEdits) && card.can_write" editable-text="card.name" onaftersave="inlineSave(card)">{{card.name}}</a>
<a class="Card-title link" cv-org-href="/card/{{card.id}}" ng-if="(!cardSettings || !cardSettings.allowTitleEdits)">{{card.name}}</a>
<a class="Card-title link" href="/card/{{card.id}}" ng-if="(!cardSettings || !cardSettings.allowTitleEdits)">{{card.name}}</a>
</h3>
</div>
</div>
......@@ -2,7 +2,7 @@
<div class="col col-sm-12">
<div class="py2 clearfix">
<div class="float-right">
<a class="Button Button--primary" cv-org-href="/card/create">Create Card</a>
<a class="Button Button--primary" href="/card/create">Create Card</a>
</div>
<h2>Cards</h2>
</div>
......@@ -29,11 +29,11 @@
<li class="List-item List-section" ng-repeat="card in cards | filter:searchFilter ">
<div class="float-right my2">
<span class="List-timeStamp">{{card.updated_at | date : 'MMM d, y, hh:mm a'}}</span>
<a class="Button mx2" cv-org-href="{{'/card/create?clone=' + card.id}}">Clone</a>
<a class="Button mx2" href="{{'/card/create?clone=' + card.id}}">Clone</a>
<a class="Button Button--remove" href="#" ng-click="deleteCard(card.id)" delete-confirm>Delete</a>
</div>
<h3>
<a class="text-normal link" cv-org-href="/card/{{card.id}}">{{card.name}}</a>
<a class="text-normal link" href="/card/{{card.id}}">{{card.name}}</a>
</h3>
<h5>Created by: {{card.creator.common_name}}</h5>
</li>
......
......@@ -5,7 +5,7 @@ angular.module('corvus.components').directive('selectableNavItem', ['$location',
attrs.$observe('href', function (value) {
if (!value) return;
var path = value.substring(0).split('/')[2],
var path = value.substring(0).split('/')[1],
activeClass = 'is--selected';
// hijack location into our local scope so it can be watched
......@@ -13,7 +13,7 @@ angular.module('corvus.components').directive('selectableNavItem', ['$location',
scope.$watch('location.path()', function(newPath) {
// grab the root name of the path
var root = newPath.substring(0).split('/')[2];
var root = newPath.substring(0).split('/')[1];
if (path == root) {
element.addClass(activeClass);
} else {
......
......@@ -11,45 +11,24 @@ CorvusControllers.controller('Corvus', ['$scope', '$location', 'CorvusCore', 'Co
var clearState = function() {
$scope.user = undefined;
$scope.userIsAdmin = false;
$scope.userIsSuperuser = false;
$scope.currentOrgSlug = undefined;
$scope.currentOrg = undefined;
};
// make our utilities object available throughout the application
$scope.utils = CorvusCore;
// current User
// TODO: can we directly bind to Appstate.model?
$scope.user = undefined;
$scope.userMemberOf = undefined;
$scope.userAdminOf = undefined;
$scope.userIsAdmin = false;
$scope.userIsSuperuser = false;
// current Organization
// TODO: can we directly bind to Appstate.model?
$scope.currentOrgSlug = undefined;
$scope.currentOrg = undefined;
$scope.alerts = CorvusAlert.alerts;
$scope.$on("appstate:user", function(event, user) {
// change in current user
$scope.user = user;
$scope.userMemberOf = user.memberOf();
$scope.userAdminOf = user.adminOf();
$scope.userIsSuperuser = user.is_superuser;
});
$scope.$on("appstate:organization", function(event, org) {
// change in current organization
$scope.currentOrgSlug = org.slug;
$scope.currentOrg = org;
$scope.userIsAdmin = $scope.user.isAdmin(org.slug);
});
$scope.$on("appstate:logout", function(event, user) {
clearState();
});
......@@ -66,14 +45,6 @@ CorvusControllers.controller('Corvus', ['$scope', '$location', 'CorvusCore', 'Co
CorvusAlert.alertError(message);
};
$scope.changeCurrOrg = function(orgSlug, admin) {
if (admin) {
$location.path('/' + orgSlug + '/admin/');
} else {
$location.path('/' + orgSlug + '/');
}
};
$scope.refreshCurrentUser = function() {
AppState.refreshCurrentUser();
};
......@@ -88,25 +59,7 @@ CorvusControllers.controller('Homepage', ['$scope', '$location', 'ipCookie', 'Ap
if (AppState.model.currentUser) {
var currentUser = AppState.model.currentUser;
// We have a logged-in user, so send them somewhere sensible
var currentOrgFromCookie = ipCookie('metabase.CURRENT_ORG');
if (AppState.model.currentOrgSlug) {
// we know their current org
$location.path('/' + AppState.model.currentOrgSlug + '/');
} else if (currentOrgFromCookie && currentUser.isMember(currentOrgFromCookie)) {
// cookie is telling us their last current org
$location.path('/' + currentOrgFromCookie + '/');
} else if (currentUser.memberOf().length > 0) {
// no other indicator, so simply take the first org they have permissions on
$location.path('/' + currentUser.memberOf()[0].slug + '/');
} else {
// user doesn't have perms on any orgs, so they go somewhere neutral
$location.path('/user/edit_current');
}
$location.path('/dash/');
} else {
// User is not logged-in, so always send them to login page
$location.path('/auth/login');
......@@ -131,15 +84,12 @@ CorvusControllers.controller('Nav', ['$scope', '$routeParams', '$location', 'App
var setNavContext = function(context) {
switch (context) {
case "site-admin":
$scope.nav = 'superadmin';
case "admin":
$scope.nav = 'admin';
break;
case "setup":
$scope.nav = 'setup';
break;
case "org-admin":
$scope.nav = 'admin';
break;
default:
$scope.nav = 'main';
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment