1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/web/ synced 2025-03-09 00:00:01 +01:00

Fix user login/logout

Add logout route as buffer between logged-in state and login form
Fix setting current user in service
Fix message on invalid credentials in login form
Don't save the user password
This commit is contained in:
Markus Grigull 2016-07-05 11:50:31 +02:00
parent db993e2d2f
commit 6b8223df43
10 changed files with 35 additions and 16 deletions

View file

@ -4,7 +4,6 @@ import { hasMany } from 'ember-data/relationships';
export default Model.extend({
username: attr('string'),
password: attr('string'),
adminLevel: attr('number'),
projects: hasMany('project', { async: true }),
mail: attr('string')

View file

@ -28,6 +28,7 @@ Router.map(function() {
});
this.route('404', { path: '/*path' });
this.route('logout');
});
export default Router;

View file

@ -13,16 +13,13 @@ export default Ember.Route.extend(ApplicationRouteMixin, {
sessionAuthenticated() {
this._loadCurrentUser().then(() => {
this.transitionTo('/');
}).catch(() => this.get('session').invalidate());
}).catch(function(/* reason */) {
//console.log(reason);
this.get('session').invalidate();
});
},
_loadCurrentUser() {
return this.get('sessionUser').loadCurrentUser();
},
actions: {
invalidateSession() {
this.get('session').invalidate();
}
}
});

8
app/routes/logout.js Normal file
View file

@ -0,0 +1,8 @@
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {
beforeModel() {
this.get('session').invalidate();
}
});

View file

@ -10,13 +10,18 @@ export default Ember.Service.extend({
store: service(),
loadCurrentUser() {
var _this = this;
return new RSVP.Promise((resolve, reject) => {
const token = this.get('session.data.authenticated.token');
if (!Ember.isEmpty(token)) {
return this.get('store').findRecord('user', 'me').then((user) => {
this.set('user', user);
return this.get('store').findRecord('user', 'me').then(function(user) {
_this.set('user', user);
resolve();
}, reject);
}, function() {
_this.get('session').invalidate();
reject();
});
} else {
resolve();
}

View file

@ -10,7 +10,7 @@
<li>{{#link-to 'index'}}Home{{/link-to}}</li>
<li>{{#link-to 'projects'}}Projects{{/link-to}}</li>
<li>{{#link-to 'user.edit'}}Preferences{{/link-to}}</li>
<li><a href="" {{action 'invalidateSession'}}>Logout</a></li>
<li>{{#link-to 'logout'}}Logout{{/link-to}}</li>
</ul>
</div>

View file

@ -13,7 +13,7 @@
<button type="submit">Login</button>
{{#if errorMessage}}
<p>{{errorMessage.message}}</p>
<p>{{errorMessage}}</p>
{{/if}}
</form>
</section>

1
app/templates/logout.hbs Normal file
View file

@ -0,0 +1 @@
{{outlet}}

View file

@ -0,0 +1,11 @@
import { moduleFor, test } from 'ember-qunit';
moduleFor('route:logout', 'Unit | Route | logout', {
// Specify the other units that are required for this test.
// needs: ['controller:foo']
});
test('it exists', function(assert) {
let route = this.subject();
assert.ok(route);
});

View file

@ -1,8 +1,5 @@
# To-Do
- Logout route
- Change password
- Create/register user
- User management
- Rename preferences into account
- ! Don't save user password
- ! Fix user logged-in on invalidate account (after account was deleted)