1
0
mirror of https://github.com/flarum/core.git synced 2025-08-06 00:17:31 +02:00

Add ember-simple-auth, setup login

- Allow dropdown-buttons to render a partial
This commit is contained in:
Toby Zerner
2015-01-30 12:21:18 +10:30
parent 9886fb1f7a
commit c2feae406d
17 changed files with 334 additions and 69 deletions

View File

@@ -3,6 +3,8 @@ import Ember from 'ember';
import ActionButton from '../components/ui/controls/action-button';
import SearchInput from '../components/ui/controls/search-input';
import DropdownSelect from '../components/ui/controls/dropdown-select';
import DropdownButton from '../components/ui/controls/dropdown-button';
import SeparatorItem from '../components/ui/items/separator-item';
import TaggedArray from '../utils/tagged-array';
var $ = Ember.$;
@@ -14,10 +16,7 @@ export default Ember.View.extend({
}.property('controller.forumTitle'),
didInsertElement: function() {
// Create and populate an array of items to be rendered in the header.
this.set('headerPrimaryItems', TaggedArray.create());
this.set('headerSecondaryItems', TaggedArray.create());
this.trigger('populateHeader', this.get('headerPrimaryItems'), this.get('headerSecondaryItems'));
// Create and populate an array of items to be rendered in the footer.
this.set('footerPrimaryItems', TaggedArray.create());
@@ -36,6 +35,13 @@ export default Ember.View.extend({
}).resize();
},
switchHeader: function() {
// Create and populate an array of items to be rendered in the header.
this.set('headerPrimaryItems', TaggedArray.create());
this.set('headerSecondaryItems', TaggedArray.create());
this.trigger('populateHeader', this.get('headerPrimaryItems'), this.get('headerSecondaryItems'));
}.observes('controller.session.user'),
populateHeaderDefault: function(primary, secondary) {
var controller = this.get('controller');
@@ -50,17 +56,64 @@ export default Ember.View.extend({
});
secondary.pushObjectWithTag(search, 'search');
var signUp = ActionButton.create({
label: 'Sign Up',
className: 'btn btn-link'
});
secondary.pushObjectWithTag(signUp, 'signUp');
if (this.get('controller.session.isAuthenticated')) {
var userItems = TaggedArray.create();
var logIn = ActionButton.create({
label: 'Log In',
className: 'btn btn-link'
});
secondary.pushObjectWithTag(logIn, 'logIn');
var profile = ActionButton.create({
label: 'Profile',
icon: 'user'
});
userItems.pushObjectWithTag(profile, 'profile');
var settings = ActionButton.create({
label: 'Settings',
icon: 'cog'
});
userItems.pushObjectWithTag(settings, 'settings');
userItems.pushObject(SeparatorItem.create());
var rememberMe = ActionButton.create({
label: 'Remember Me',
icon: 'square-o'
});
userItems.pushObjectWithTag(rememberMe, 'rememberMe');
var logOut = ActionButton.create({
label: 'Log Out',
icon: 'sign-out',
action: function() {
controller.send('invalidateSession');
}
});
userItems.pushObjectWithTag(logOut, 'logOut');
var userDropdown = DropdownButton.extend({
label: Ember.computed.alias('user.username'),
buttonClass: 'btn btn-default btn-naked btn-rounded btn-user',
buttonPartial: 'partials/user-button',
menuClass: 'pull-right'
});
secondary.pushObjectWithTag(userDropdown.create({
items: userItems,
user: this.get('controller.session.user')
}), 'user');
} else {
var signUp = ActionButton.create({
label: 'Sign Up',
className: 'btn btn-link'
});
secondary.pushObjectWithTag(signUp, 'signUp');
var logIn = ActionButton.create({
label: 'Log In',
className: 'btn btn-link',
action: function() {
controller.send('login');
}
});
secondary.pushObjectWithTag(logIn, 'logIn');
}
}.on('populateHeader'),
populateFooterDefault: function(primary, secondary) {