diff --git a/app/base/routing.js b/app/base/routing.js index 3078d32affe373ba7b729aa917d5bea1c59aaa93..81cf9f3809b2d64fed62c67c81e15d8130b9392d 100644 --- a/app/base/routing.js +++ b/app/base/routing.js @@ -3,8 +3,10 @@ import { inject as service } from '@ember/service'; export default class BaseRoute extends Route { @service session; + @service currentUser; - beforeModel(transition) { + async beforeModel(transition) { this.session.requireAuthentication(transition, 'login'); + await this.currentUser.loadCurrentUser(); } } diff --git a/app/components/nav/sidebar.hbs b/app/components/nav/sidebar.hbs index 38e2ef3cae6102581ffbab713612a68e819b56df..01d0dc7c9c679c2fd565305d97770779639cb483 100644 --- a/app/components/nav/sidebar.hbs +++ b/app/components/nav/sidebar.hbs @@ -1,7 +1,8 @@ <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark sidebar-open" > + {{this.args.homeFolder}} <LinkTo @route="authenticated.nodes" - @model="{{this.home_id}}" + @model="{{@home_folder.id}}" class="d-flex brand text-white text-decoration-none"> <img src="/assets/images/logo_bbg.svg" @@ -14,7 +15,7 @@ <li class="nav-item"> <LinkTo @route="authenticated.nodes" - @model="{{this.home_id}}" + @model="{{@home_folder.id}}" class="nav-link text-white {{this.active}}" aria-current="page"> <i class="fa fa-home me-2"></i>Home </LinkTo> diff --git a/app/components/nav/sidebar.js b/app/components/nav/sidebar.js index 036499f0a4447d900f359d761c9b6965753710f6..837dc2e82fdb4415ac7ce94a026575cc40d66bf3 100644 --- a/app/components/nav/sidebar.js +++ b/app/components/nav/sidebar.js @@ -3,14 +3,8 @@ import { inject as service } from '@ember/service'; export default class SidebarComponent extends Component { - @service session; - @service currentUser; @service router; - get home_id() { - return 75; - } - get active() { /* Returns "active" for "authenticated.nodes" route regardless diff --git a/app/components/nodes/filter.hbs b/app/components/nodes/filter.hbs deleted file mode 100644 index b40a82295ae5380615f8f716561aeafc5e895b52..0000000000000000000000000000000000000000 --- a/app/components/nodes/filter.hbs +++ /dev/null @@ -1 +0,0 @@ -{{yield this.results}} \ No newline at end of file diff --git a/app/components/nodes/filter.js b/app/components/nodes/filter.js deleted file mode 100644 index 26d70eca3ae09a8704f9e1c46363517f7da9c188..0000000000000000000000000000000000000000 --- a/app/components/nodes/filter.js +++ /dev/null @@ -1,13 +0,0 @@ -import Component from '@glimmer/component'; - -export default class NodesFilterComponent extends Component { - get results() { - let { docs, query } = this.args; - - if (query) { - docs = docs.filter((doc) => doc.title.includes(query)); - } - - return docs; - } -} diff --git a/app/controllers/login.js b/app/controllers/login.js index b16ecbe80d06ceb642cad585553c1d8528ca6de6..bca9016dfb064b4fa6d5ca42ef9426de4d8515bd 100644 --- a/app/controllers/login.js +++ b/app/controllers/login.js @@ -25,5 +25,4 @@ export default class LoginController extends Controller { this.transitionToRoute('authenticated.index'); } } - } diff --git a/app/routes/application.js b/app/routes/application.js index 56b9f8f9e0623441e495b8f53dc475e129488d32..312374a2581e3ff6baa9753b3eafcb1d0cff1c2c 100644 --- a/app/routes/application.js +++ b/app/routes/application.js @@ -1,5 +1,14 @@ -import Route from '@ember/routing/route'; +import BaseRoute from 'papermerge/base/routing'; +import { inject as service } from '@ember/service'; -export default class ApplicationRoute extends Route { +export default class ApplicationRoute extends BaseRoute { + @service currentUser; + + async model() { + if (this.currentUser.isAuthenticated) { + console.log("ApplicationRoute: current user is authenticated"); + return this.currentUser.user.home_folder; + } + } } diff --git a/app/routes/authenticated/nodes.js b/app/routes/authenticated/nodes.js index 7466d22b6dda5e034486bda18e5bb35f6ec558aa..b1cfdfa557922ac78393fd173170039c09b30128 100644 --- a/app/routes/authenticated/nodes.js +++ b/app/routes/authenticated/nodes.js @@ -5,6 +5,7 @@ import RSVP from 'rsvp'; export default class FolderRoute extends Route { @service store; + @service currentUser; queryParams = { extranode_id: { @@ -12,19 +13,24 @@ export default class FolderRoute extends Route { } }; - model(params) { + async model(params) { let adapter; adapter = this.store.adapterFor('node'); + await this.currentUser.loadCurrentUser(); if (params.extranode_id) { return RSVP.hash({ node: adapter.findNode(params.node_id), - extranode: adapter.findNode(params.extranode_id) + extranode: adapter.findNode(params.extranode_id), + home_folder: this.currentUser.user.home_folder }); } - return adapter.findNode(params.node_id); + return RSVP.hash({ + node: adapter.findNode(params.node_id), + home_folder: this.currentUser.user.home_folder + }); } setupController(controller, model) { @@ -32,12 +38,13 @@ export default class FolderRoute extends Route { if (model.extranode) { _controller.set('dualpanel_mode', true); - _controller.set('mainnode', model.node); _controller.set('extranode', model.extranode); } else { _controller.set('dualpanel_mode', false); - _controller.set('mainnode', model); _controller.set('extranode', undefined); } + + _controller.set('mainnode', model.node); + _controller.set('home_folder', model.home_folder); } } diff --git a/app/services/current-user.js b/app/services/current-user.js index 16bbbdfe7db762ac4a18a567d9ce6073fa597adc..2f39228687a266b69a674abb92a6f3368f11852e 100644 --- a/app/services/current-user.js +++ b/app/services/current-user.js @@ -6,10 +6,19 @@ export default class CurrentUserService extends Service { @service session; @service store; + user = null; + async loadCurrentUser() { + if (this.session.isAuthenticated) { - let user = await this.store.queryRecord('user', { me: true }); - this.set('user', user); + let user = await this.store.queryRecord( + 'user', { me: true } + ); + this.user = user; } } + + get isAuthenticated() { + return this.session.isAuthenticated; + } } diff --git a/app/services/session.js b/app/services/session.js index 25d70a730e26ba7305e5bb12855f77991bfde7b6..6c71db05ab3286073342b5a3e873ca02d11949bf 100644 --- a/app/services/session.js +++ b/app/services/session.js @@ -1,6 +1,7 @@ import { inject as service } from '@ember/service'; import BaseSessionService from 'ember-simple-auth/services/session'; + export default class SessionService extends BaseSessionService { @service currentUser; diff --git a/app/templates/authenticated.hbs b/app/templates/authenticated.hbs index e125124f2f65c9da384d616311cb9d5d32ecd8e6..7327b96fa0d1c64ad6ac42f7367f37bb219b542c 100644 --- a/app/templates/authenticated.hbs +++ b/app/templates/authenticated.hbs @@ -1,5 +1,5 @@ <main> - <Nav::Sidebar /> + <Nav::Sidebar @home_folder={{@model}} /> <div class="w-100 central-bar"> <Nav::Topbar /> <div class="container-fluid mx-2 my-1"> diff --git a/app/templates/authenticated/nodes.hbs b/app/templates/authenticated/nodes.hbs index 81f376e2144501bc50ebf7e5042d7dee319bc539..fedbd648baae57907be8ece778b2aca528476203 100644 --- a/app/templates/authenticated/nodes.hbs +++ b/app/templates/authenticated/nodes.hbs @@ -1,3 +1,5 @@ + + <div class="panels d-flex row"> <Commander @node={{this.mainnode}}