Mercurial > public > src > rhodecode
view pylons_app/lib/auth.py @ 42:b2bc08f2974b
try except error on non existing user table
author | marcink |
---|---|
date | Wed, 07 Apr 2010 13:24:46 +0200 |
parents | 71ffa932799d |
children | d924b931b488 |
line wrap: on
line source
import sqlite3 import os import logging from os.path import dirname as dn from datetime import datetime import crypt log = logging.getLogger(__name__) ROOT = dn(dn(dn(os.path.realpath(__file__)))) def get_sqlite_cur_conn(): conn = sqlite3.connect(os.path.join(ROOT, 'auth.sqlite')) cur = conn.cursor() return conn, cur def authfunc(environ, username, password): conn, cur = get_sqlite_cur_conn() password_crypt = crypt.crypt(password, '6a') try: cur.execute("SELECT * FROM users WHERE username=?", (username,)) data = cur.fetchone() except sqlite3.OperationalError as e: data = None log.error(e) if data: if data[3]: if data[1] == username and data[2] == password_crypt: log.info('user %s authenticated correctly', username) http_accept = environ.get('HTTP_ACCEPT') if http_accept.startswith('application/mercurial') or \ environ['PATH_INFO'].find('raw-file') != -1: cmd = environ['PATH_INFO'] for qry in environ['QUERY_STRING'].split('&'): if qry.startswith('cmd'): cmd += "|" + qry try: cur.execute('''INSERT INTO user_logs VALUES(?,?,?,?)''', (None, data[0], cmd, datetime.now())) conn.commit() except Exception as e: conn.rollback() log.error(e) return True else: log.error('user %s is disabled', username) return False def create_user_table(): ''' Create a auth database ''' conn, cur = get_sqlite_cur_conn() try: log.info('creating table %s', 'users') cur.execute('''DROP TABLE IF EXISTS users ''') cur.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT, active INTEGER)''') log.info('creating table %s', 'user_logs') cur.execute('''DROP TABLE IF EXISTS user_logs ''') cur.execute('''CREATE TABLE user_logs (id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, last_action TEXT, last_action_date DATETIME)''') conn.commit() except: conn.rollback() raise cur.close() def create_user(username, password): conn, cur = get_sqlite_cur_conn() password_crypt = crypt.crypt(password, '6a') cur_date = datetime.now() log.info('creating user %s', username) try: cur.execute('''INSERT INTO users values (?,?,?,?) ''', (None, username, password_crypt, 1,)) conn.commit() except: conn.rollback() raise if __name__ == "__main__": create_user_table() create_user('marcink', 'qweqwe') create_user('lukaszd', 'qweqwe') create_user('adriand', 'qweqwe') create_user('radek', 'qweqwe') create_user('skrzeka', 'qweqwe') create_user('bart', 'qweqwe') create_user('maho', 'qweqwe') create_user('michalg', 'qweqwe') #authfunc('', 'marcink', 'qweqwe')