mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-24 23:48:13 -05:00
Added empty member management routes
This commit is contained in:
parent
33450a4ee1
commit
bea2d8c871
9 changed files with 120 additions and 4 deletions
|
@ -64,6 +64,10 @@ Router.map(function () {
|
|||
this.route('settings.integrations.unsplash', {path: '/settings/integrations/unsplash'});
|
||||
this.route('settings.integrations.zapier', {path: '/settings/integrations/zapier'});
|
||||
|
||||
this.route('members', function () {
|
||||
this.route('details', {path: ':member_id'});
|
||||
});
|
||||
|
||||
this.route('subscribers', function () {
|
||||
this.route('new');
|
||||
this.route('import');
|
||||
|
|
26
ghost/admin/app/routes/members.js
Normal file
26
ghost/admin/app/routes/members.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
|
||||
import {inject as service} from '@ember/service';
|
||||
|
||||
export default AuthenticatedRoute.extend({
|
||||
config: service(),
|
||||
|
||||
titleToken: 'Members',
|
||||
|
||||
// redirect to posts screen if:
|
||||
// - developer experiments aren't enabled
|
||||
// - TODO: members is disabled?
|
||||
// - logged in user isn't owner/admin
|
||||
beforeModel() {
|
||||
this._super(...arguments);
|
||||
|
||||
if (!this.config.get('enableDeveloperExperiments')) {
|
||||
return this.transitionTo('posts');
|
||||
}
|
||||
|
||||
return this.session.user.then((user) => {
|
||||
if (!user.isOwnerOrAdmin) {
|
||||
return this.transitionTo('posts');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
3
ghost/admin/app/routes/members/details.js
Normal file
3
ghost/admin/app/routes/members/details.js
Normal file
|
@ -0,0 +1,3 @@
|
|||
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
|
||||
|
||||
export default AuthenticatedRoute.extend({});
|
3
ghost/admin/app/routes/members/index.js
Normal file
3
ghost/admin/app/routes/members/index.js
Normal file
|
@ -0,0 +1,3 @@
|
|||
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
|
||||
|
||||
export default AuthenticatedRoute.extend({});
|
|
@ -50,10 +50,11 @@
|
|||
{{/if}}
|
||||
</li>
|
||||
<li>{{#link-to "team" data-test-nav="team"}}{{svg-jar "account-group"}}Team{{/link-to}}</li>
|
||||
{{#if feature.subscribers}}
|
||||
{{#if (gh-user-can-admin session.user)}}
|
||||
<li>{{#link-to "subscribers" data-test-nav="subscribers"}}{{svg-jar "email"}}Subscribers{{/link-to}}</li>
|
||||
{{#if (and config.enableDeveloperExperiments (gh-user-can-admin session.user))}}
|
||||
<li>{{#link-to "members" data-test-nav="members"}}{{svg-jar "email"}}Members{{/link-to}}</li>
|
||||
{{/if}}
|
||||
{{#if (and feature.subscribers (gh-user-can-admin session.user))}}
|
||||
<li>{{#link-to "subscribers" data-test-nav="subscribers"}}{{svg-jar "email"}}Subscribers{{/link-to}}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
{{#if (gh-user-can-admin session.user)}}
|
||||
|
|
1
ghost/admin/app/templates/members.hbs
Normal file
1
ghost/admin/app/templates/members.hbs
Normal file
|
@ -0,0 +1 @@
|
|||
{{outlet}}
|
0
ghost/admin/app/templates/members/details.hbs
Normal file
0
ghost/admin/app/templates/members/details.hbs
Normal file
10
ghost/admin/app/templates/members/index.hbs
Normal file
10
ghost/admin/app/templates/members/index.hbs
Normal file
|
@ -0,0 +1,10 @@
|
|||
<section class="gh-canvas">
|
||||
<header class="gh-canvas-header">
|
||||
<h2 class="gh-canvas-title" data-test-screen-title>Members</h2>
|
||||
<div class="view-actions"></div>
|
||||
</header>
|
||||
|
||||
<section class="view-container">
|
||||
<p>...</p>
|
||||
</section>
|
||||
</section>
|
68
ghost/admin/tests/acceptance/members-test.js
Normal file
68
ghost/admin/tests/acceptance/members-test.js
Normal file
|
@ -0,0 +1,68 @@
|
|||
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import {authenticateSession, invalidateSession} from 'ember-simple-auth/test-support';
|
||||
import {beforeEach, describe, it} from 'mocha';
|
||||
import {click, currentRouteName, currentURL, find} from '@ember/test-helpers';
|
||||
import {expect} from 'chai';
|
||||
import {setupApplicationTest} from 'ember-mocha';
|
||||
import {visit} from '../helpers/visit';
|
||||
|
||||
describe('Acceptance: Members', function () {
|
||||
let hooks = setupApplicationTest();
|
||||
setupMirage(hooks);
|
||||
|
||||
it('redirects to signin when not authenticated', async function () {
|
||||
await invalidateSession();
|
||||
await visit('/members');
|
||||
|
||||
expect(currentURL()).to.equal('/signin');
|
||||
});
|
||||
|
||||
it('redirects non-admins to posts', async function () {
|
||||
let role = this.server.create('role', {name: 'Editor'});
|
||||
this.server.create('user', {roles: [role]});
|
||||
|
||||
await authenticateSession();
|
||||
await visit('/members');
|
||||
|
||||
expect(currentURL()).to.equal('/');
|
||||
expect(find('[data-test-nav="members"]'), 'sidebar link')
|
||||
.to.not.exist;
|
||||
});
|
||||
|
||||
describe('as admin', function () {
|
||||
beforeEach(async function () {
|
||||
this.server.loadFixtures('configurations');
|
||||
let config = this.server.schema.configurations.first();
|
||||
config.update({enableDeveloperExperiments: true});
|
||||
|
||||
let role = this.server.create('role', {name: 'Administrator'});
|
||||
this.server.create('user', {roles: [role]});
|
||||
|
||||
return await authenticateSession();
|
||||
});
|
||||
|
||||
it('redirects to posts if developer experiments is disabled', async function () {
|
||||
let config = this.server.schema.configurations.first();
|
||||
config.update({enableDeveloperExperiments: false});
|
||||
|
||||
await visit('/members');
|
||||
|
||||
expect(currentURL()).to.equal('/');
|
||||
expect(find('[data-test-nav="members"]'), 'sidebar link')
|
||||
.to.not.exist;
|
||||
});
|
||||
|
||||
it('shows sidebar link which navigates to members list', async function () {
|
||||
await visit('/');
|
||||
|
||||
expect(find('[data-test-nav="members"]'), 'sidebar link')
|
||||
.to.exist;
|
||||
|
||||
await click('[data-test-nav="members"]');
|
||||
|
||||
expect(currentURL()).to.equal('/members');
|
||||
expect(currentRouteName()).to.equal('members.index');
|
||||
expect(find('[data-test-screen-title]')).to.have.text('Members');
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Reference in a new issue