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

« back to all changes in this revision

Viewing changes to www/auth/authenticate.py

  • Committer: mattgiuca
  • Date: 2008-02-01 08:06:30 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:376
auth/authenticate: Replaced dummy code (which always auths) with a call to the
    DB. Now correctly authenticates.
    IMPORTANT: Changed interface. Instead of returning True/False, now returns
    None or a dictionary of the login details.
    I have chased this up with all the callers (just 1).
dispatch/login.py: Reworked call to authenticate. Now handles the change
    above, and retrieves the login details. Writes all of the user's login
    fields to the browser session (see debuginfo to see the fields stored
    there).

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
# Module: authenticate
19
19
# Author: Matt Giuca
20
 
# Date:   21/12/2007
 
20
# Date:   1/2/2008
21
21
 
22
22
# Provides a mechanism for authenticating a username and password, and
23
23
# returning a yes/no response.
24
24
 
 
25
import common.db
 
26
 
25
27
def authenticate(username, password):
26
28
    """Determines whether a particular username/password combination is
27
 
    valid. Returns True or False. The password is in cleartext."""
 
29
    valid. The password is in cleartext.
 
30
 
 
31
    Returns None if failed to authenticate.
 
32
    Returns a dictionary containing the user's login fields (including
 
33
    "login", "nick" and "fullname") on success.
 
34
    """
 
35
 
 
36
    # TODO.
 
37
    # Just authenticate against the DB at the moment.
 
38
    # Later we will provide other auth options such as LDAP.
28
39
 
29
40
    # WARNING: Both username and password may contain any characters, and must
30
41
    # be sanitized within this function.
31
 
    # TEMP: Just allow any user to log in
32
 
    return True
33
 
    ## TEMP: Just a hardcoded login
34
 
    #return username == 'user' and password == 'pass'
 
42
    # (Not SQL-sanitized, just sanitized to our particular constraints).
 
43
 
 
44
    # Spawn a DB object just for making this call.
 
45
    # (This should not spawn a DB connection on each page reload, only when
 
46
    # there is no session object to begin with).
 
47
    dbconn = common.db.DB()
 
48
    try:
 
49
        if not dbconn.user_authenticate(username, password):
 
50
            return None
 
51
        return dbconn.get_user(username)
 
52
    finally:
 
53
        dbconn.close()