Login base

This commit is contained in:
Ruud committed 2013-09-10 18:02:04 +02:00
1 parent c7e85c00ca
commit 9783409756
4 files changed
+76 -53

No files matched your search

+51 -6
View File
@@ -1,11 +1,10 @@
from couchpotato.api import api_docs, api_docs_missing, api
from couchpotato.core.auth import requires_auth
from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.variable import md5
from couchpotato.core.helpers.variable import md5, tryInt
from couchpotato.core.logger import CPLog
from couchpotato.environment import Env
from tornado import template
from tornado.web import RequestHandler
from tornado.web import RequestHandler, authenticated
import os
import time
import traceback
@@ -16,9 +15,23 @@ log = CPLog(__name__)
views = {}
template_loader = template.Loader(os.path.join(os.path.dirname(__file__), 'templates'))
class BaseHandler(RequestHandler):
def get_current_user(self):
username = Env.setting('username')
password = Env.setting('password')
if username or password:
print self.get_secure_cookie('user')
return self.get_secure_cookie('user')
else: # Login when no username or password are set
return True
# Main web handler
@requires_auth
class WebHandler(RequestHandler):
class WebHandler(BaseHandler):
@authenticated
def get(self, route, *args, **kwargs):
route = route.strip('/')
if not views.get(route):
@@ -28,7 +41,7 @@ class WebHandler(RequestHandler):
try:
self.write(views[route]())
except:
log.error('Failed doing web request "%s": %s', (route, traceback.format_exc()))
log.error("Failed doing web request '%s': %s", (route, traceback.format_exc()))
self.write({'success': False, 'error': 'Failed returning results'})
def addView(route, func, static = False):
@@ -79,6 +92,38 @@ class KeyHandler(RequestHandler):
self.write({'success': False, 'error': 'Failed returning results'})
class LoginHandler(BaseHandler):
def get(self, *args, **kwargs):
if self.get_current_user():
self.redirect('/')
else:
self.write(template_loader.load('login.html').generate())
def post(self, *args, **kwargs):
api = None
username = Env.setting('username')
password = Env.setting('password')
if (self.get_argument('username') == username or not username) and (md5(self.get_argument('password')) == password or not password):
api = Env.setting('api_key')
if api:
remember_me = tryInt(self.get_argument('remember_me', default = 0))
self.set_secure_cookie('user', api, expires_days = 30 if remember_me else 0)
self.redirect('/')
class LogoutHandler(BaseHandler):
def get(self, *args, **kwargs):
self.clear_cookie('user')
self.redirect('/login')
def page_not_found(rh):
index_url = Env.get('web_base')
url = rh.request.uri[len(index_url):]