comparison pylons_app/lib/auth.py @ 448:b6a25169c005

fixes #25 removed crypt based password hashing and changed it into sha1 based.
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 19 Aug 2010 21:38:08 +0200
parents a10bdd0b05a7
children 04e8b31fb245
comparison
equal deleted inserted replaced
447:9b67cebe6609 448:b6a25169c005
28 from pylons_app.lib.utils import get_repo_slug 28 from pylons_app.lib.utils import get_repo_slug
29 from pylons_app.model import meta 29 from pylons_app.model import meta
30 from pylons_app.model.db import User, RepoToPerm, Repository, Permission 30 from pylons_app.model.db import User, RepoToPerm, Repository, Permission
31 from sqlalchemy.exc import OperationalError 31 from sqlalchemy.exc import OperationalError
32 from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound 32 from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
33 import crypt 33 import hashlib
34 from decorator import decorator 34 from decorator import decorator
35 import logging 35 import logging
36 36
37 log = logging.getLogger(__name__) 37 log = logging.getLogger(__name__)
38 38
39 def get_crypt_password(password): 39 def get_crypt_password(password):
40 """ 40 """Cryptographic function used for password hashing based on sha1
41 Cryptographic function used for password hashing
42 @param password: password to hash 41 @param password: password to hash
43 """ 42 """
44 return crypt.crypt(password, '6a') 43 hashed = hashlib.sha1(password).hexdigest()
45 44 return hashed[3:] + hashed[:3]
46 45
47 @cache_region('super_short_term', 'cached_user') 46 @cache_region('super_short_term', 'cached_user')
48 def get_user_cached(username): 47 def get_user_cached(username):
49 sa = meta.Session 48 sa = meta.Session
50 try: 49 try:
149 p = 'repository.admin' 148 p = 'repository.admin'
150 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p 149 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
151 150
152 else: 151 else:
153 user.permissions['global'].add('repository.create') 152 user.permissions['global'].add('repository.create')
153 user.permissions['global'].add('hg.register')
154
154 for perm in default_perms: 155 for perm in default_perms:
155 if perm.Repository.private and not perm.Repository.user_id == user.user_id: 156 if perm.Repository.private and not perm.Repository.user_id == user.user_id:
156 #disable defaults for private repos, 157 #disable defaults for private repos,
157 p = 'repository.none' 158 p = 'repository.none'
158 elif perm.Repository.user_id == user.user_id: 159 elif perm.Repository.user_id == user.user_id:
185 @param session: 186 @param session:
186 """ 187 """
187 user = session.get('hg_app_user', AuthUser()) 188 user = session.get('hg_app_user', AuthUser())
188 if user.is_authenticated: 189 if user.is_authenticated:
189 user = fill_data(user) 190 user = fill_data(user)
190 user = fill_perms(user) 191 user = fill_perms(user)
191 session['hg_app_user'] = user 192 session['hg_app_user'] = user
192 session.save() 193 session.save()
193 return user 194 return user
194 195
195 #=============================================================================== 196 #===============================================================================