47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import uuid
|
|
|
|
__author__ = 'tanshu'
|
|
|
|
from pyramid.security import Everyone
|
|
from pyramid.security import Authenticated
|
|
from pyramid.security import Allow
|
|
from .models.auth import Permission, User
|
|
|
|
|
|
class RootFactory(object):
|
|
@property
|
|
def __acl__(self):
|
|
acl = [
|
|
(Allow, Everyone, 'view'),
|
|
(Allow, Authenticated, 'Authenticated')]
|
|
for permission in Permission.list():
|
|
acl.append((Allow, permission.name, permission.name))
|
|
return acl
|
|
|
|
def __init__(self, request):
|
|
pass
|
|
|
|
|
|
|
|
def groupfinder(user_id, request):
|
|
if request is not None and 'perms' in request.session:
|
|
perms = request.session['perms']
|
|
else:
|
|
if type(user_id) == str:
|
|
user_id = uuid.UUID(user_id)
|
|
perms = []
|
|
user = User.by_id(user_id)
|
|
for item in user.roles:
|
|
for perm in item.permissions:
|
|
perms.append(perm.name)
|
|
perms = f7(perms)
|
|
if request is not None:
|
|
request.session['perms'] = perms
|
|
return perms
|
|
|
|
|
|
def f7(seq):
|
|
seen = set()
|
|
seen_add = seen.add
|
|
return [x for x in seq if x not in seen and not seen_add(x)]
|