You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

41 lines
1.2 KiB

# -*- coding: utf-8 -*-
"""
:author: Grey Li (李辉)
:url: http://greyli.com
:copyright: © 2018 Grey Li <withlihui@gmail.com>
:license: MIT, see LICENSE for more details.
"""
from functools import wraps
from flask import Markup, flash, url_for, redirect, abort
from flask_login import current_user
def confirm_required(func):
@wraps(func)
def decorated_function(*args, **kwargs):
if not current_user.confirmed:
message = Markup(
'Please confirm your account first.'
'Not receive the email?'
'<a class="alert-link" href="%s">Resend Confirm Email</a>' %
url_for('auth.resend_confirm_email'))
flash(message, 'warning')
return redirect(url_for('main.index'))
return func(*args, **kwargs)
return decorated_function
def permission_required(permission_name):
def decorator(func):
@wraps(func)
def decorated_function(*args, **kwargs):
if not current_user.can(permission_name):
abort(403)
return func(*args, **kwargs)
return decorated_function
return decorator
def admin_required(func):
return permission_required('ADMINISTER')(func)