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):