[WebUI] Refactor out AuthError for NotAuthorizedError
This commit is contained in:
parent
a7c4228ce7
commit
0cc0882ac9
|
@ -19,21 +19,12 @@ from email.utils import formatdate
|
||||||
from twisted.internet.task import LoopingCall
|
from twisted.internet.task import LoopingCall
|
||||||
|
|
||||||
from deluge.common import AUTH_LEVEL_ADMIN, AUTH_LEVEL_NONE
|
from deluge.common import AUTH_LEVEL_ADMIN, AUTH_LEVEL_NONE
|
||||||
|
from deluge.error import NotAuthorizedError
|
||||||
|
from deluge.ui.web.json_api import JSONComponent, export
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class AuthError(Exception):
|
|
||||||
"""
|
|
||||||
An exception that might be raised when checking a request for
|
|
||||||
authentication.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Import after as json_api imports the above AuthError
|
|
||||||
from deluge.ui.web.json_api import export, JSONComponent # NOQA, isort:skip pylint: disable=wrong-import-position
|
|
||||||
|
|
||||||
|
|
||||||
def make_checksum(session_id):
|
def make_checksum(session_id):
|
||||||
checksum = 0
|
checksum = 0
|
||||||
for value in [ord(char) for char in session_id]:
|
for value in [ord(char) for char in session_id]:
|
||||||
|
@ -226,7 +217,7 @@ class Auth(JSONComponent):
|
||||||
request.session_id = session_id
|
request.session_id = session_id
|
||||||
|
|
||||||
if auth_level < level:
|
if auth_level < level:
|
||||||
raise AuthError('Not authenticated')
|
raise NotAuthorizedError(auth_level, level)
|
||||||
|
|
||||||
def _change_password(self, new_password):
|
def _change_password(self, new_password):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -21,8 +21,10 @@ from twisted.internet import defer, reactor
|
||||||
from twisted.internet.defer import Deferred, DeferredList
|
from twisted.internet.defer import Deferred, DeferredList
|
||||||
from twisted.web import http, resource, server
|
from twisted.web import http, resource, server
|
||||||
|
|
||||||
from deluge import common, component, httpdownloader
|
from deluge import component, httpdownloader
|
||||||
|
from deluge.common import AUTH_LEVEL_DEFAULT, get_magnet_info, is_magnet
|
||||||
from deluge.configmanager import get_config_dir
|
from deluge.configmanager import get_config_dir
|
||||||
|
from deluge.error import NotAuthorizedError
|
||||||
from deluge.ui.client import Client, client
|
from deluge.ui.client import Client, client
|
||||||
from deluge.ui.common import FileTree2, TorrentInfo
|
from deluge.ui.common import FileTree2, TorrentInfo
|
||||||
from deluge.ui.coreconfig import CoreConfig
|
from deluge.ui.coreconfig import CoreConfig
|
||||||
|
@ -33,9 +35,6 @@ from deluge.ui.web.common import _, compress
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
AUTH_LEVEL_DEFAULT = None
|
|
||||||
AuthError = None
|
|
||||||
|
|
||||||
|
|
||||||
class JSONComponent(component.Component):
|
class JSONComponent(component.Component):
|
||||||
def __init__(self, name, interval=1, depend=None):
|
def __init__(self, name, interval=1, depend=None):
|
||||||
|
@ -55,11 +54,6 @@ def export(auth_level=AUTH_LEVEL_DEFAULT):
|
||||||
:type auth_level: int
|
:type auth_level: int
|
||||||
|
|
||||||
"""
|
"""
|
||||||
global AUTH_LEVEL_DEFAULT, AuthError
|
|
||||||
if AUTH_LEVEL_DEFAULT is None:
|
|
||||||
from deluge.common import AUTH_LEVEL_DEFAULT
|
|
||||||
from deluge.ui.web.auth import AuthError # NOQA pylint: disable=redefined-outer-name
|
|
||||||
|
|
||||||
def wrap(func, *args, **kwargs):
|
def wrap(func, *args, **kwargs):
|
||||||
func._json_export = True
|
func._json_export = True
|
||||||
func._json_auth_level = auth_level
|
func._json_auth_level = auth_level
|
||||||
|
@ -161,7 +155,7 @@ class JSON(resource.Resource, component.Component):
|
||||||
result = self._exec_remote(method, params, request)
|
result = self._exec_remote(method, params, request)
|
||||||
else:
|
else:
|
||||||
error = {'message': 'Unknown method', 'code': 2}
|
error = {'message': 'Unknown method', 'code': 2}
|
||||||
except AuthError:
|
except NotAuthorizedError:
|
||||||
error = {'message': 'Not authenticated', 'code': 1}
|
error = {'message': 'Not authenticated', 'code': 1}
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
log.error('Error calling method `%s`: %s', method, ex)
|
log.error('Error calling method `%s`: %s', method, ex)
|
||||||
|
@ -650,7 +644,7 @@ class WebApi(JSONComponent):
|
||||||
|
|
||||||
@export
|
@export
|
||||||
def get_magnet_info(self, uri):
|
def get_magnet_info(self, uri):
|
||||||
return common.get_magnet_info(uri)
|
return get_magnet_info(uri)
|
||||||
|
|
||||||
@export
|
@export
|
||||||
def add_torrents(self, torrents):
|
def add_torrents(self, torrents):
|
||||||
|
@ -672,7 +666,7 @@ class WebApi(JSONComponent):
|
||||||
deferreds = []
|
deferreds = []
|
||||||
|
|
||||||
for torrent in torrents:
|
for torrent in torrents:
|
||||||
if common.is_magnet(torrent['path']):
|
if is_magnet(torrent['path']):
|
||||||
log.info('Adding torrent from magnet uri `%s` with options `%r`',
|
log.info('Adding torrent from magnet uri `%s` with options `%r`',
|
||||||
torrent['path'], torrent['options'])
|
torrent['path'], torrent['options'])
|
||||||
d = client.core.add_torrent_magnet(torrent['path'], torrent['options'])
|
d = client.core.add_torrent_magnet(torrent['path'], torrent['options'])
|
||||||
|
|
Loading…
Reference in New Issue