picard/picard/security.py

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)]