~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to userdb/query.py

  • Committer: mattgiuca
  • Date: 2008-02-19 08:26:11 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:509
common.db: Rewrote user_authenticate to return 3 values (True, false, None)
    Now returns False if the password did not match, None if the password
    field is NULL (None implying a soft failure, with the possibility of
    validating against LDAP or something else).

auth.authenticate: Rewrote this module with a new plugin interface
    (as discussed with Tom Conway). Allows successive modules to try to
    authenticate the user.
    Changed the authenticate function interface: Now raises an AuthError
    when auth fails, instead of returning None.

dispatch.login: Handle new auth interface (exception catch).
    Auth is now able to provide an error message, in the exception.
    The exception message is displayed as an error to the user.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import pg
 
2
 
 
3
def getCredentials(db, login):
 
4
    cred = {}
 
5
 
 
6
    res = db.query('SELECT users.nick FROM users WHERE users.login=\'' + login + '\'').dictresult()
 
7
    if len(res) <> 1:
 
8
        return None
 
9
    cred['nick'] = res[0]['nick']
 
10
 
 
11
    res = db.query('SELECT groupid FROM group_members WHERE login=\'' + login + '\'').dictresult()
 
12
    cred['groups'] = map(lambda x: x.get('groupid'), res)
 
13
 
 
14
    res = db.query('SELECT role FROM roles WHERE login=\'' + login + '\'').dictresult()
 
15
    if len(res) <> 1:
 
16
        return None
 
17
    cred['role'] = res[0]['role']
 
18
 
 
19
    return cred
 
20
 
 
21
def contains(m, l):
 
22
    for i in l:
 
23
        if m == i:
 
24
            return True
 
25
    return False
 
26
 
 
27
db = pg.connect('tom', 'localhost', 5432, None, None, 'tom', 'sh0r3ham')
 
28
c = getCredentials(db, 'conway')
 
29
 
 
30
if c['role'] != 'student' or contains('2007-INFO10001-321', c['groups']):
 
31
    print c['nick'] + ' may view files for group \'2007-INFO10001-321\'.'
 
32