soter/soter/security.py

23 lines
601 B
Python

import uuid
from soter.models.auth import User
def rolefinder(user_id, request):
if request is not None and 'perms' in request.session:
perms = request.session['perms']
else:
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)]