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 index bcbb24579f..2d3d82b28c 100644 --- a/core/client/controllers/modals/signin.js +++ b/core/client/controllers/modals/signin.js @@ -1,12 +1,30 @@ -import SigninController from '../signin'; +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 (data) { - var self = this; - this._super(data).then(function () { + 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 7bb49c2698..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' }; @@ -27,9 +27,9 @@ AuthenticationInitializer = { }; SimpleAuth.Session.reopen({ - user: function () { + user: Ember.computed(function () { return container.lookup('store:main').find('user', 'me'); - }).property() + }) }); SimpleAuth.Authenticators.OAuth2.reopen({ diff --git a/core/client/routes/application.js b/core/client/routes/application.js index c6aadc7182..986d87ccc4 100644 --- a/core/client/routes/application.js +++ b/core/client/routes/application.js @@ -63,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/templates/modals/signin.hbs b/core/client/templates/modals/signin.hbs index 2006f8d40b..e77058ba73 100644 --- a/core/client/templates/modals/signin.hbs +++ b/core/client/templates/modals/signin.hbs @@ -1,14 +1,11 @@ -{{#gh-modal-dialog action="closeModal" showClose=true type="action" style="wide,centered" animation="fade" - title="Please login again" confirm=confirm}} +{{#gh-modal-dialog action="closeModal" showClose=true type="action" style="wide" animation="fade" + title="Please re-authenticate" confirm=confirm}} -
{{/gh-modal-dialog}}