diff --git a/core/client/assets/sass/components/modals.scss b/core/client/assets/sass/components/modals.scss index c856adb5e1..c661498dad 100644 --- a/core/client/assets/sass/components/modals.scss +++ b/core/client/assets/sass/components/modals.scss @@ -165,4 +165,39 @@ .modal-style-centered { text-align: center; -} \ No newline at end of file +} + +// Modal login styles +.modal-body .login-form { + display: block; // Override inherited `display: table-cell;` + + .password-wrap { + input { + width: 100%; + } + } + + @media (max-width: 900px) { + margin: 0 auto; + max-width: 264px; + + .password-wrap { + width: 100%; + margin: 0 auto 1em; + } + + .btn { + margin: 0; + width: 100%; + margin-bottom: 1em; + } + } + + @media (min-width: 901px) { + display: flex; + + .password-wrap { + flex: 1; + } + } +} diff --git a/core/client/controllers/modals/signin.js b/core/client/controllers/modals/signin.js new file mode 100644 index 0000000000..2d3d82b28c --- /dev/null +++ b/core/client/controllers/modals/signin.js @@ -0,0 +1,30 @@ +import SigninController from 'ghost/controllers/signin'; + +export default SigninController.extend({ + needs: 'application', + + identification: Ember.computed('session.user.email', function () { + return this.get('session.user.email'); + }), + + actions: { + authenticate: function () { + var appController = this.get('controllers.application'), + self = this; + + appController.set('skipAuthSuccessHandler', true); + + this._super().then(function () { + self.send('closeModal'); + self.notifications.showSuccess('Login successful.'); + self.set('password', ''); + }).finally(function () { + appController.set('skipAuthSuccessHandler', undefined); + }); + }, + + confirmAccept: function () { + this.send('validateAndAuthenticate'); + } + } +}); diff --git a/core/client/initializers/authentication.js b/core/client/initializers/authentication.js index 9861cb4e5c..2846d9d0a5 100644 --- a/core/client/initializers/authentication.js +++ b/core/client/initializers/authentication.js @@ -15,7 +15,7 @@ AuthenticationInitializer = { window.ENV['simple-auth'] = { authenticationRoute: 'signin', - routeAfterAuthentication: 'content', + routeAfterAuthentication: 'posts', authorizer: 'simple-auth-authorizer:oauth2-bearer', localStorageKey: 'ghost' + (Ghost.subdir.indexOf('/') === 0 ? '-' + Ghost.subdir.substr(1) : '') + ':session' }; diff --git a/core/client/routes/application.js b/core/client/routes/application.js index efae553d1b..986d87ccc4 100644 --- a/core/client/routes/application.js +++ b/core/client/routes/application.js @@ -23,22 +23,6 @@ ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, Shortcut }, actions: { - authorizationFailed: function () { - var currentRoute = this.get('controller').get('currentRouteName'), - editorController; - - if (currentRoute.split('.')[0] === 'editor') { - editorController = this.controllerFor(currentRoute); - - if (editorController.get('isDirty')) { - this.send('openModal', 'auth-failed-unsaved', editorController); - return; - } - } - - this._super(); - }, - toggleGlobalMobileNav: function () { this.toggleProperty('controller.showGlobalMobileNav'); }, @@ -46,9 +30,11 @@ ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, Shortcut openSettingsMenu: function () { this.set('controller.showSettingsMenu', true); }, + closeSettingsMenu: function () { this.set('controller.showSettingsMenu', false); }, + toggleSettingsMenu: function () { this.toggleProperty('controller.showSettingsMenu'); }, @@ -77,7 +63,13 @@ ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, Shortcut }, sessionAuthenticationSucceeded: function () { - var self = this; + var appController = this.controllerFor('application'), + self = this; + + if (appController && appController.get('skipAuthSuccessHandler')) { + return; + } + this.store.find('user', 'me').then(function (user) { self.send('signedIn', user); var attemptedTransition = self.get('session').get('attemptedTransition'); diff --git a/core/client/routes/editor/edit.js b/core/client/routes/editor/edit.js index 094040a7f0..d067bd37e2 100644 --- a/core/client/routes/editor/edit.js +++ b/core/client/routes/editor/edit.js @@ -48,6 +48,12 @@ var EditorEditRoute = AuthenticatedRoute.extend(base, { return self.replaceWith('posts.index'); } }); + }, + + actions: { + authorizationFailed: function () { + this.send('openModal', 'signin'); + } } }); diff --git a/core/client/templates/modals/signin.hbs b/core/client/templates/modals/signin.hbs new file mode 100644 index 0000000000..e77058ba73 --- /dev/null +++ b/core/client/templates/modals/signin.hbs @@ -0,0 +1,11 @@ +{{#gh-modal-dialog action="closeModal" showClose=true type="action" style="wide" animation="fade" + title="Please re-authenticate" confirm=confirm}} + +
+
+ {{input class="password" type="password" placeholder="Password" name="password" value=password}} +
+ +
+ +{{/gh-modal-dialog}} diff --git a/core/client/templates/signin.hbs b/core/client/templates/signin.hbs index f225774759..27e2d54e1f 100644 --- a/core/client/templates/signin.hbs +++ b/core/client/templates/signin.hbs @@ -2,8 +2,7 @@
- {{gh-trim-focus-input class="email" type="email" placeholder="Email Address" name="identification" - autocapitalize="off" autocorrect="off" value=identification}} + {{gh-trim-focus-input class="email" type="email" placeholder="Email Address" name="identification" autocapitalize="off" autocorrect="off" value=identification}}