comparison pylons_app/lib/auth.py @ 46:9db7782727b3

Static files for production fixed Error handler for debug on, added admin auth function authenticates only admins changed creation of db
author Marcin Kuzminski <marcin@python-blog.com>
date Wed, 07 Apr 2010 19:39:31 +0200
parents a886f5eba757
children 8e250e86a670
comparison
equal deleted inserted replaced
45:a886f5eba757 46:9db7782727b3
10 10
11 def get_sqlite_conn_cur(): 11 def get_sqlite_conn_cur():
12 conn = sqlite3.connect(os.path.join(ROOT, 'auth.sqlite')) 12 conn = sqlite3.connect(os.path.join(ROOT, 'auth.sqlite'))
13 cur = conn.cursor() 13 cur = conn.cursor()
14 return conn, cur 14 return conn, cur
15
16
17 def admin_auth(username, password):
18 conn, cur = get_sqlite_conn_cur()
19 password_crypt = crypt.crypt(password, '6a')
20
21 try:
22 cur.execute("SELECT * FROM users WHERE username=?", (username,))
23 data = cur.fetchone()
24 except sqlite3.OperationalError as e:
25 data = None
26 log.error(e)
27
28 if data:
29 if data[3]:
30 if data[1] == username and data[2] == password_crypt and data[4]:
31 log.info('user %s authenticated correctly', username)
32 return True
33 else:
34 log.error('user %s is disabled', username)
35
36 return False
15 37
16 def authfunc(environ, username, password): 38 def authfunc(environ, username, password):
17 conn, cur = get_sqlite_conn_cur() 39 conn, cur = get_sqlite_conn_cur()
18 password_crypt = crypt.crypt(password, '6a') 40 password_crypt = crypt.crypt(password, '6a')
19 41
63 cur.execute('''DROP TABLE IF EXISTS users ''') 85 cur.execute('''DROP TABLE IF EXISTS users ''')
64 cur.execute('''CREATE TABLE users 86 cur.execute('''CREATE TABLE users
65 (id INTEGER PRIMARY KEY AUTOINCREMENT, 87 (id INTEGER PRIMARY KEY AUTOINCREMENT,
66 username TEXT, 88 username TEXT,
67 password TEXT, 89 password TEXT,
68 active INTEGER)''') 90 active INTEGER,
91 admin INTEGER)''')
69 log.info('creating table %s', 'user_logs') 92 log.info('creating table %s', 'user_logs')
70 cur.execute('''DROP TABLE IF EXISTS user_logs ''') 93 cur.execute('''DROP TABLE IF EXISTS user_logs ''')
71 cur.execute('''CREATE TABLE user_logs 94 cur.execute('''CREATE TABLE user_logs
72 (id INTEGER PRIMARY KEY AUTOINCREMENT, 95 (id INTEGER PRIMARY KEY AUTOINCREMENT,
73 user_id INTEGER, 96 user_id INTEGER,
78 conn.rollback() 101 conn.rollback()
79 raise 102 raise
80 103
81 cur.close() 104 cur.close()
82 105
83 def create_user(username, password): 106 def create_user(username, password, admin=False):
84 conn, cur = get_sqlite_conn_cur() 107 conn, cur = get_sqlite_conn_cur()
85 password_crypt = crypt.crypt(password, '6a') 108 password_crypt = crypt.crypt(password, '6a')
86 cur_date = datetime.now()
87 log.info('creating user %s', username) 109 log.info('creating user %s', username)
88 try: 110 try:
89 cur.execute('''INSERT INTO users values (?,?,?,?) ''', 111 cur.execute('''INSERT INTO users values (?,?,?,?,?) ''',
90 (None, username, password_crypt, 1,)) 112 (None, username, password_crypt, 1, admin))
91 conn.commit() 113 conn.commit()
92 except: 114 except:
93 conn.rollback() 115 conn.rollback()
94 raise 116 raise
95 117
96 if __name__ == "__main__": 118 if __name__ == "__main__":
97 create_user_table() 119 create_user_table()
98 create_user('marcink', 'qweqwe') 120 create_user('marcink', 'qweqwe', True)
99 create_user('lukaszd', 'qweqwe') 121 create_user('lukaszd', 'qweqwe')
100 create_user('adriand', 'qweqwe') 122 create_user('adriand', 'qweqwe')
101 create_user('radek', 'qweqwe') 123 create_user('radek', 'qweqwe')
102 create_user('skrzeka', 'qweqwe') 124 create_user('skrzeka', 'qweqwe')
103 create_user('bart', 'qweqwe') 125 create_user('bart', 'qweqwe')
104 create_user('maho', 'qweqwe') 126 create_user('maho', 'qweqwe')
105 create_user('michalg', 'qweqwe') 127 create_user('michalg', 'qweqwe')
106 create_user('admin', 'qwe123qwe')
107 128
108 #authfunc('', 'marcink', 'qweqwe') 129 #authfunc('', 'marcink', 'qweqwe')