@@ -27,25 +27,24 @@ from pylons import config, session, url,
from pylons.controllers.util import abort, redirect
from pylons_app.lib.utils import get_repo_slug
from pylons_app.model import meta
from pylons_app.model.db import User, RepoToPerm, Repository, Permission
from sqlalchemy.exc import OperationalError
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
import crypt
import hashlib
from decorator import decorator
import logging
log = logging.getLogger(__name__)
def get_crypt_password(password):
"""
Cryptographic function used for password hashing
"""Cryptographic function used for password hashing based on sha1
@param password: password to hash
return crypt.crypt(password, '6a')
hashed = hashlib.sha1(password).hexdigest()
return hashed[3:] + hashed[:3]
@cache_region('super_short_term', 'cached_user')
def get_user_cached(username):
sa = meta.Session
try:
user = sa.query(User).filter(User.username == username).one()
@@ -148,12 +147,14 @@ def fill_perms(user):
for perm in default_perms:
p = 'repository.admin'
user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
else:
user.permissions['global'].add('repository.create')
user.permissions['global'].add('hg.register')
if perm.Repository.private and not perm.Repository.user_id == user.user_id:
#disable defaults for private repos,
p = 'repository.none'
elif perm.Repository.user_id == user.user_id:
#set admin if owner
@@ -184,13 +185,13 @@ def get_user(session):
Gets user from session, and wraps permissions into user
@param session:
user = session.get('hg_app_user', AuthUser())
if user.is_authenticated:
user = fill_data(user)
user = fill_perms(user)
session['hg_app_user'] = user
session.save()
return user
#===============================================================================
# CHECK DECORATORS
Status change: