Add login handling

This commit is contained in:
Kload 2013-09-25 21:49:12 +02:00
parent c696ea8b58
commit c6c2e6b352
2 changed files with 73 additions and 44 deletions

107
js/app.js
View file

@ -83,42 +83,48 @@ app = Sammy('#main', function (sam) {
view: function (view, data) { view: function (view, data) {
rendered = this.render('views/'+ view +'.ms', data); rendered = this.render('views/'+ view +'.ms', data);
function leSwap() { enableSlide = true; // Change to false to disable animation
rendered.swap(function() {
$('.slide').on('click', function() { if (enableSlide) {
$(this).addClass('active'); function leSwap() {
if ($(this).hasClass('back')) { rendered.swap(function() {
store.set('slide', 'back'); $('.slide').on('click', function() {
} else { $(this).addClass('active');
store.set('slide', 'to'); if ($(this).hasClass('back')) {
} store.set('slide', 'back');
} else {
store.set('slide', 'to');
}
});
}); });
}); }
}
blockSize = $('#slider').width(); blockSize = $('#slider').width();
// Slide back effect // Slide back effect
if (store.get('slide') == 'back') { if (store.get('slide') == 'back') {
store.clear('slide'); store.clear('slide');
$('#slideBack').css('display', 'none'); $('#slideBack').css('display', 'none');
$('#slider-container').removeClass('move').css('margin-left', '-'+ blockSize +'px'); $('#slider-container').removeClass('move').css('margin-left', '-'+ blockSize +'px');
$('#slideTo').show().html($('#main').html()); $('#slideTo').show().html($('#main').html());
leSwap(); leSwap();
$('#slider-container').addClass('move').css('margin-left', '0px'); $('#slider-container').addClass('move').css('margin-left', '0px');
// Slide to effect // Slide to effect
} else if (store.get('slide') == 'to') { } else if (store.get('slide') == 'to') {
store.clear('slide'); store.clear('slide');
$('#slideTo').css('display', 'none'); $('#slideTo').css('display', 'none');
$('#slider-container').removeClass('move').css('margin-left', '-'+ blockSize +'px'); $('#slider-container').removeClass('move').css('margin-left', '-'+ blockSize +'px');
$('#slider-container').removeClass('move').css('margin-left', '0px'); $('#slider-container').removeClass('move').css('margin-left', '0px');
$('#slideBack').show().html($('#main').html()); $('#slideBack').show().html($('#main').html());
leSwap(); leSwap();
$('#slider-container').addClass('move').css('margin-left', '-'+ blockSize +'px'); $('#slider-container').addClass('move').css('margin-left', '-'+ blockSize +'px');
} else {
leSwap();
}
} else { } else {
leSwap(); rendered.swap();
} }
} }
}); });
@ -167,21 +173,42 @@ app = Sammy('#main', function (sam) {
sam.get('#/login', function (c) { sam.get('#/login', function (c) {
$('#logout-button').hide(); $('#logout-button').hide();
store.set('path-1', '#/login'); store.set('path-1', '#/login');
c.view('login');
// Check if te client is hosted on a yunohost node
domain = window.location.hostname
$.getJSON('http://'+ domain +':6767/api', function(data) {
$.getJSON('http://'+ domain +':6767/installed', function(data) {
if (!data.installed) {
c.view('postinstall');
} else {
c.view('login', { 'domain': domain });
}
});
})
.fail(function() {
c.view('login');
});
}); });
sam.post('#/login', function (c) { sam.post('#/login', function (c) {
store.set('url', 'http://'+ c.params['url']); store.set('url', 'http://'+ c.params['domain'] +':6767');
store.set('user', 'admin'); store.set('user', 'admin');
store.set('password', btoa(c.params['password'])); store.set('password', btoa(c.params['password']));
c.api('/users', function(data) { c.api('/api', function(data) {
store.set('connected', true); if (data.apiVersion == '0.1') {
$('#logout-button').fadeIn(); c.api('/users', function(data) {
c.flash('success', 'Logged in'); store.set('connected', true);
if (store.get('path')) { $('#logout-button').fadeIn();
c.redirect(store.get('path')); c.flash('success', 'Logged in');
if (store.get('path')) {
c.redirect(store.get('path'));
} else {
c.redirect('#/');
}
});
} else { } else {
c.redirect('#/'); c.flash('fail', 'Non-compatible API (0.1 required)');
c.redirect('#/login');
} }
}); });
}); });
@ -338,6 +365,8 @@ app = Sammy('#main', function (sam) {
*/ */
$(document).ready(function () { $(document).ready(function () {
app.run('#/'); app.run('#/');
// Fixes for sliding effect
$('#slider-container').width(2*$('#slider').width() +'px'); $('#slider-container').width(2*$('#slider').width() +'px');
$(window).resize(function() { $(window).resize(function() {
$('#slideBack').css('display', 'none'); $('#slideBack').css('display', 'none');

View file

@ -5,14 +5,14 @@
</div> </div>
<form action="#/login" id="form" method="post"> <form action="#/login" id="form" method="post">
<div class="input-group"> <div class="input-group"{{#domain}} style="display: none"{{/domain}}>
<span class="input-group-addon">http://</span> <span class="input-group-addon"> <span class="glyphicon glyphicon-cloud"></span> </span>
<input type="text" name="url" class="form-control" placeholder="myserver.org:6767"> <input type="text" name="domain" class="form-control" placeholder="myserver.org"{{#domain}} value="{{domain}}" disabled{{/domain}}>
</div> </div>
<br /> <br />
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">&nbsp;&nbsp;<span class="glyphicon glyphicon-lock">&nbsp;</span></span> <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span> </span>
<input type="password" name="password" class="form-control" placeholder="Password"> <input type="password" name="password" class="form-control" placeholder="Admin password">
</div> </div>
<br /> <br />
<input id="submit" type="submit" value="Login" class="btn btn-success pull-right"/> <input id="submit" type="submit" value="Login" class="btn btn-success pull-right"/>