Mercurial > kallithea
comparison pylons_app/lib/auth.py @ 474:a3d9d24acbec celery
Implemented password reset(forms/models/ tasks) and mailing tasks.
Added smtp mailer, configurations, cleaned user model
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 13 Sep 2010 01:27:41 +0200 |
parents | d66a7fa7689b |
children | fdb78a140ae4 |
comparison
equal
deleted
inserted
replaced
473:6b934c9607e7 | 474:a3d9d24acbec |
---|---|
32 from sqlalchemy.exc import OperationalError | 32 from sqlalchemy.exc import OperationalError |
33 from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound | 33 from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound |
34 import bcrypt | 34 import bcrypt |
35 from decorator import decorator | 35 from decorator import decorator |
36 import logging | 36 import logging |
37 import random | |
37 | 38 |
38 log = logging.getLogger(__name__) | 39 log = logging.getLogger(__name__) |
39 | 40 |
41 class PasswordGenerator(object): | |
42 """This is a simple class for generating password from | |
43 different sets of characters | |
44 usage: | |
45 passwd_gen = PasswordGenerator() | |
46 #print 8-letter password containing only big and small letters of alphabet | |
47 print passwd_gen.gen_password(8, passwd_gen.ALPHABETS_BIG_SMALL) | |
48 """ | |
49 ALPHABETS_NUM = r'''1234567890'''#[0] | |
50 ALPHABETS_SMALL = r'''qwertyuiopasdfghjklzxcvbnm'''#[1] | |
51 ALPHABETS_BIG = r'''QWERTYUIOPASDFGHJKLZXCVBNM'''#[2] | |
52 ALPHABETS_SPECIAL = r'''`-=[]\;',./~!@#$%^&*()_+{}|:"<>?''' #[3] | |
53 ALPHABETS_FULL = ALPHABETS_BIG + ALPHABETS_SMALL + ALPHABETS_NUM + ALPHABETS_SPECIAL#[4] | |
54 ALPHABETS_ALPHANUM = ALPHABETS_BIG + ALPHABETS_SMALL + ALPHABETS_NUM#[5] | |
55 ALPHABETS_BIG_SMALL = ALPHABETS_BIG + ALPHABETS_SMALL | |
56 ALPHABETS_ALPHANUM_BIG = ALPHABETS_BIG + ALPHABETS_NUM#[6] | |
57 ALPHABETS_ALPHANUM_SMALL = ALPHABETS_SMALL + ALPHABETS_NUM#[7] | |
58 | |
59 def __init__(self, passwd=''): | |
60 self.passwd = passwd | |
61 | |
62 def gen_password(self, len, type): | |
63 self.passwd = ''.join([random.choice(type) for _ in xrange(len)]) | |
64 return self.passwd | |
65 | |
66 | |
40 def get_crypt_password(password): | 67 def get_crypt_password(password): |
41 """Cryptographic function used for password hashing based on sha1 | 68 """Cryptographic function used for password hashing based on sha1 |
42 @param password: password to hash | 69 @param password: password to hash |
43 """ | 70 """ |
44 return bcrypt.hashpw(password, bcrypt.gensalt(10)) | 71 return bcrypt.hashpw(password, bcrypt.gensalt(10)) |
229 else: | 256 else: |
230 log.warn('user %s not authenticated', user.username) | 257 log.warn('user %s not authenticated', user.username) |
231 | 258 |
232 p = request.environ.get('PATH_INFO') | 259 p = request.environ.get('PATH_INFO') |
233 if request.environ.get('QUERY_STRING'): | 260 if request.environ.get('QUERY_STRING'): |
234 p+='?'+request.environ.get('QUERY_STRING') | 261 p += '?' + request.environ.get('QUERY_STRING') |
235 log.debug('redirecting to login page with %s',p) | 262 log.debug('redirecting to login page with %s', p) |
236 return redirect(url('login_home',came_from=p)) | 263 return redirect(url('login_home', came_from=p)) |
237 | 264 |
238 class PermsDecorator(object): | 265 class PermsDecorator(object): |
239 """Base class for decorators""" | 266 """Base class for decorators""" |
240 | 267 |
241 def __init__(self, *required_perms): | 268 def __init__(self, *required_perms): |