예제 #1
0
@login_manager.unauthorized_handler
def unauthorized_callback():
    flash('Login first')
    return redirect(url_for('.login'))

class UserNotFoundError(Exception):
    pass

# Needs
be_admin = RoleNeed('admin')
be_editor = RoleNeed('editor')
to_sign_in = ActionNeed('sign in')

# Permissions
user = Permission(to_sign_in)
user.description = "User's permissions"
editor = Permission(be_editor)
editor.description = "Editor's permissions"
admin = Permission(be_admin)
admin.description = "Admin's permissions"

apps_needs = [be_admin, be_editor, to_sign_in]
apps_permissions = [user, editor, admin]

#Permissions for more granular access control
modifyPost = namedtuple('posts', ['method', 'value'])
modifyPostNeed = partial(modifyPost, 'modifyPost')

class ModifyPostPermission(Permission):
    def __init__(self, post_id):
        need = modifyPostNeed(unicode(post_id))
        return db.session.query(User).get(user_id)


init_login()

# Flask-Principal

Principal(app, skip_static=True)

# Needs
admin_need = RoleNeed('admin')
user_need = RoleNeed('user')

# Permissions
user_permission = Permission(user_need)
user_permission.description = "User permission"
admin_permission = Permission(admin_need)
admin_permission.description = "Admin permission"

app_needs = {'admin': admin_need, 'user': user_need}
app_permissions = {'user': user_permission, 'admin': admin_permission}


@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
    # Set the identity user object
    identity.user = current_user

    # Add the UserNeed to the identity
    if hasattr(current_user, 'id'):
        identity.provides.add(UserNeed(current_user.id))
        from lightningwolf_smp.models import User
        return db.session.query(User).get(user_id)

init_login()

# Flask-Principal

Principal(app, skip_static=True)

# Needs
admin_need = RoleNeed('admin')
user_need = RoleNeed('user')

# Permissions
user_permission = Permission(user_need)
user_permission.description = "User permission"
admin_permission = Permission(admin_need)
admin_permission.description = "Admin permission"

app_needs = {'admin': admin_need, 'user': user_need}
app_permissions = {'user': user_permission, 'admin': admin_permission}


@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
    # Set the identity user object
    identity.user = current_user

    # Add the UserNeed to the identity
    if hasattr(current_user, 'id'):
        identity.provides.add(UserNeed(current_user.id))
예제 #4
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Blueprint
from flask.ext.principal import RoleNeed, Permission

# needs
be_super_admin = RoleNeed('super_admin')
be_admin = RoleNeed('admin')

# роли приложения
super_admin = Permission(be_admin, be_super_admin)
super_admin.description = "Super Administrator"
admin = Permission(be_admin)
admin.description = "Administrator"

app_roles = [super_admin, admin]

def get_roles_list():
    result = list()
    for roles in app_roles:
        need = next(iter(roles.needs))
        result.append({'role': need.value,
                       'description': roles.description})

    return result
예제 #5
0
blog = BloggingEngine(app, sql_storage)

mail = Mail(app)
babel = Babel(app)
sentry = Sentry(app)

# Needs
be_admin = RoleNeed('admin')
be_user = RoleNeed('user')
be_guest = RoleNeed('quest')
be_blogger = RoleNeed('blogger')
be_performer = RoleNeed('performer')

# Permissions
guest_per = Permission(be_guest)
guest_per.description = "Guest's permissions"

user_per = Permission(be_user)
user_per.description = "User's permissions"

blogger_per = Permission(be_blogger)
blogger_per.description = "Blogger's permissions"

performer_per = Permission(be_performer)
performer_per.description = "Performer's permissions"

admin_per = Permission(be_admin)
admin_per.description = "Admin's permissions"

admin_or_performer_per = Permission(be_admin, be_performer)
admin_or_performer_per.description = "Admin's or Performer's permissions"
예제 #6
0
파일: __init__.py 프로젝트: jokep5/Vision
sql_storage = SQLAStorage(engine, metadata=meta)
blog = BloggingEngine(app, sql_storage)

mail = Mail(app)
babel = Babel(app)
sentry = Sentry(app)

# Needs
be_admin = RoleNeed('admin')
be_user = RoleNeed('user')
be_guest = RoleNeed('quest')
be_blogger = RoleNeed('blogger')

# Permissions
guest_per = Permission(be_guest)
guest_per.description = "Guest's permissions"

user_per = Permission(be_user)
user_per.description = "User's permissions"

blogger_per = Permission(be_blogger)
blogger_per.description = "Blogger's permissions"

admin_per = Permission(be_admin)
admin_per.description = "Admin's permissions"

apps_needs = [
    be_admin, be_user, be_guest, be_blogger
]

apps_permissions = [
예제 #7
0
파일: __init__.py 프로젝트: vsilent/Vision
blog = BloggingEngine(app, sql_storage)

mail = Mail(app)
babel = Babel(app)
sentry = Sentry(app)

# Needs
be_admin = RoleNeed('admin')
be_user = RoleNeed('user')
be_guest = RoleNeed('quest')
be_blogger = RoleNeed('blogger')
be_performer = RoleNeed('performer')

# Permissions
guest_per = Permission(be_guest)
guest_per.description = "Guest's permissions"

user_per = Permission(be_user)
user_per.description = "User's permissions"

blogger_per = Permission(be_blogger)
blogger_per.description = "Blogger's permissions"

performer_per = Permission(be_performer)
performer_per.description = "Performer's permissions"

admin_per = Permission(be_admin)
admin_per.description = "Admin's permissions"

admin_or_performer_per = Permission(be_admin, be_performer)
admin_or_performer_per.description = "Admin's or Performer's permissions"