diff options
Diffstat (limited to 'bitvend/auth.py')
-rw-r--r-- | bitvend/auth.py | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/bitvend/auth.py b/bitvend/auth.py deleted file mode 100644 index 5ad9154..0000000 --- a/bitvend/auth.py +++ /dev/null @@ -1,87 +0,0 @@ -import requests -import functools -import time -from flask import session, flash, redirect, request, current_app, abort -from flask_login import login_user, LoginManager, logout_user, current_user -from flask_login.signals import user_logged_out -from bitvend.models import User, db -from sqlalchemy import func - - -login_manager = LoginManager() -login_manager.refresh_view = "bitvend.login" -login_manager.needs_refresh_message = ( - u"To protect your account, please reauthenticate to access this page." -) -login_manager.needs_refresh_message_category = "info" - -@login_manager.user_loader -def load_user(user_id): - return User.find(user_id) - -def try_login(username, password): - resp = requests.post('https://auth.hackerspace.pl/', data={ - 'login': username, - 'password': password - }) - - if resp.status_code == 200: - u = User.find(username) - - if not u: - u = User(uid=username) - db.session.add(u) - db.session.commit() - - login_user(u, remember=True) - - return True - - return False - - -def cap_check(capability, user=None): - if not current_user.is_authenticated: - return False - - user = user or current_user.get_id() - - cache_key = '{}-{}'.format(user, capability) - cached_cap = session.get('_caps', {}).get(cache_key, (False, 0)) - - if cached_cap[1] > time.time(): - return cached_cap[0] - - allowed = requests.get( - 'https://capacifier.hackerspace.pl/%s/%s' % (capability, user) - ).status_code == 200 - - if '_caps' not in session: - session['_caps'] = {} - - session['_caps'][cache_key] = \ - (allowed, time.time() + current_app.config.get('CAP_TTL', 3600)) - - return allowed - - -@user_logged_out.connect -def caps_cleanup(app, user): - # Cleanup caps cache - if '_caps' in session: - session.pop('_caps') - - -def cap_required(capability): - '''Checks if user has desired capacifier capability''' - - def inner(func): - @functools.wraps(func) - def wrapped(*args, **kwargs): - if not cap_check(capability): - abort(403) - - return func(*args, **kwargs) - - return wrapped - return inner |