Mercurial > public > src > rhodecode
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 #=============================================================================== |