--- cas_old.py	2009-09-01 08:34:30.000000000 +0000
+++ cas.py	2009-09-01 08:19:27.000000000 +0000
@@ -30,7 +30,7 @@
             'validate_path': '/validate',
         }
         self.paths.update(kwords)        
-    
+
     def login_url(self, service):
         """Return the login URL for the given service."""
         base = self.url + self.paths['login_path'] + '?service=' + urllib.quote_plus(service)
@@ -60,25 +60,35 @@
         user = f.readline().strip()
         
         return (valid, user)
-        
+
+
 class CASAuth(BaseAuth):
     """ handle login from CAS """
     name = 'CAS'
     logout_possible = True
+    login_inputs = ['username', 'password']
 
-    def __init__(self, auth_server, login_path = "/login", logout_path = "/logout", validate_path = "/validate"):
+    def __init__(self, auth_server, login_path="/login", logout_path="/logout", validate_path="/validate"):
         BaseAuth.__init__(self)
         self.auth_server = auth_server
         self.login_path = login_path
         self.logout_path = logout_path
         self.validate_path = validate_path
 
+        paths = {
+            'login_path': self.login_path,
+            'logout_path': self.logout_path,
+            'validate_path': self.validate_path,
+        }
+
+        self.cas = PyCAS(self.auth_server, **paths)
+
     def request(self, request, user_obj, **kw):
         ticket = request.args.get('ticket')
         action = request.args.get("action", [])
         logoutRequest = request.args.get('logoutRequest', [])
         url = request.getBaseURL() + urllib.quote_plus(request.getPathinfo().encode('utf-8'))
-        
+
         # # handle logout request from CAS
         # if logoutRequest:
             # logoutRequestMatch = re.search("<samlp:SessionIndex>(.*)</samlp:SessionIndex>", logoutRequest[0])
@@ -86,15 +96,15 @@
             # if service_ticket:
                 # # TODO: logout
                 # return self.logout(request, user_obj)
-        
+
         # authenticated user
         if user_obj and user_obj.valid:
             return user_obj, True
-        
+
         # anonymous
         if not ticket and not "login" in action:
             return user_obj, True
-            
+
         # valid ticket on CAS
         if ticket:
             valid, username = self.cas.validate_ticket(url, ticket[0])
@@ -104,28 +114,17 @@
                 # auto create user
                 u.create_or_update(True)
                 return u, True
-                
+
         # login
         request.http_redirect(self.cas.login_url(url))
-        
+
         return user_obj, True
-                
+
     def logout(self, request, user_obj, **kw):
         if self.name and user_obj and user_obj.auth_method == self.name:
             url = request.getBaseURL() + urllib.quote_plus(request.getPathinfo().encode('utf-8'))
             request.http_redirect(self.cas.logout_url(url))
-        
+
             user_obj.valid = False
-            
+
         return user_obj, True
-    
-    def _cas(self):
-        paths = {
-            'login_path': self.login_path,
-            'logout_path': self.logout_path,
-            'validate_path': self.validate_path,
-        }
-        
-        return PyCAS(self.auth_server, **paths)
-    cas = property(_cas)
-    
