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

View file

@ -83,6 +83,9 @@ 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);
enableSlide = true; // Change to false to disable animation
if (enableSlide) {
function leSwap() { function leSwap() {
rendered.swap(function() { rendered.swap(function() {
$('.slide').on('click', function() { $('.slide').on('click', function() {
@ -120,6 +123,9 @@ app = Sammy('#main', function (sam) {
} else { } else {
leSwap(); leSwap();
} }
} else {
rendered.swap();
}
} }
}); });
@ -167,13 +173,29 @@ 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');
// 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'); 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('/api', function(data) {
if (data.apiVersion == '0.1') {
c.api('/users', function(data) { c.api('/users', function(data) {
store.set('connected', true); store.set('connected', true);
$('#logout-button').fadeIn(); $('#logout-button').fadeIn();
@ -184,6 +206,11 @@ app = Sammy('#main', function (sam) {
c.redirect('#/'); c.redirect('#/');
} }
}); });
} else {
c.flash('fail', 'Non-compatible API (0.1 required)');
c.redirect('#/login');
}
});
}); });
sam.get('#/logout', function (c) { sam.get('#/logout', function (c) {
@ -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"/>