add a basic login system

This commit is contained in:
Damien Churchill 2009-02-11 23:55:59 +00:00
parent 7842ad5d3d
commit 0b3a04dc6c
5 changed files with 62 additions and 14 deletions

View File

@ -15,6 +15,7 @@
<script type="text/javascript" src="/js/rpc.js"></script>
<script type="text/javascript" src="/gettext.js"></script>
<script type="text/javascript" src="/js/deluge.js"></script>
<script type="text/javascript" src="/js/deluge-login.js"></script>
<script type="text/javascript" src="/js/deluge-menus.js"></script>
<script type="text/javascript" src="/js/deluge-bars.js"></script>
<script type="text/javascript" src="/js/deluge-torrents.js"></script>

View File

@ -118,7 +118,7 @@ Deluge.SideBar = {
Deluge.StatusBar = new Ext.StatusBar({
statusAlign: 'left',
items: [{
/*items: [{
id: 'statusbar-connections',
text: '200 (200)',
cls: 'x-btn-text-icon',
@ -146,5 +146,5 @@ Deluge.StatusBar = new Ext.StatusBar({
text: '161',
cls: 'x-btn-text-icon',
icon: '/icons/16/dht.png'
}]
}]*/
});

View File

@ -0,0 +1,44 @@
Deluge.Login = {
Form: new Ext.form.FormPanel({
defaultType: 'textfield',
id: 'loginForm',
baseCls: 'x-plain',
labelWidth: 55,
items: [{
fieldLabel: 'Password',
id: 'password',
name: 'password',
inputType: 'password',
anchor: '100%'
}]
}),
onLogin: function() {
var passwordField = Deluge.Login.Form.items.get('password');
Deluge.Client.web.login(passwordField.getValue(), {
onSuccess: function(result) {
if (result == true) {
Deluge.Login.Window.hide();
}
}
});
}
}
Deluge.Login.Window = new Ext.Window({
layout: 'fit',
width: 300,
height: 150,
bodyStyle: 'padding: 10px 5px;',
buttonAlign: 'center',
closeAction: 'hide',
closable: false,
modal: true,
plain: true,
title: 'Login',
items: Deluge.Login.Form,
buttons: [{
text: 'Login',
handler: Deluge.Login.onLogin
}]
});

View File

@ -1,9 +1,7 @@
Deluge.Ui = {
initialize: function() {
Deluge.Client = new JSON.RPC('/json');
this.errorCount = 0;
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
this.MainPanel = new Ext.Panel({
id: 'mainPanel',
title: 'Deluge',
@ -12,20 +10,23 @@ Deluge.Ui = {
items: [Deluge.SideBar, Deluge.Details, Deluge.Torrents],
bbar: Deluge.StatusBar
});
Deluge.SideBar = this.MainPanel.items.get('sidebar');
Deluge.SideBar.on('collapse', function(bar) {
//alert(JSON.encode($('sidebar').getSize()));
});
this.Viewport = new Ext.Viewport({
layout: 'fit',
items: [this.MainPanel]
});
Deluge.Login.Window.show();
Deluge.Client = new JSON.RPC('/json');
Deluge.Details.Status.items.get("status-details").load({
url: "/render/tab_statistics.html"
});
Deluge.SideBar = this.MainPanel.items.get('sidebar');
Deluge.SideBar.on('collapse', function(bar) {
});
},
update: function() {
@ -178,5 +179,4 @@ Deluge.Ui = {
document.addEvent('domready', function(e) {
Deluge.Ui.initialize();
Deluge.Ui.run();
});

View File

@ -124,7 +124,8 @@ class JSON(resource.Resource):
"web.update_ui": self.update_ui,
"web.download_torrent_from_url": self.download_torrent_from_url,
"web.get_torrent_info": self.get_torrent_info,
"web.add_torrents": self.add_torrents
"web.add_torrents": self.add_torrents,
"web.login": self.login
}
for entry in open(common.get_default_config_dir("auth")):
parts = entry.split(":")
@ -355,7 +356,9 @@ class JSON(resource.Resource):
m = hashlib.md5()
m.update(config['pwd_salt'])
m.update(password)
return (m.digest() == config['pwd_md5'])
d = Deferred()
d.callback(m.digest() == config['pwd_md5'])
return d
class GetText(resource.Resource):