diff --git a/reviewboard/accounts/backends.py b/reviewboard/accounts/backends.py
index 6ed4963e60e4af49386cc733fe43bcc157d605af..dc2fd91464ce808352ad73bbbc36c857948e897e 100644
--- a/reviewboard/accounts/backends.py
+++ b/reviewboard/accounts/backends.py
@@ -5,6 +5,10 @@ import sre_constants
 import sys
 import time
 from warnings import warn
+from P4 import P4
+import time
+import os
+
 
 try:
     from hashlib import sha1
@@ -24,6 +28,11 @@ from reviewboard.accounts.forms import ActiveDirectorySettingsForm, \
                                        StandardAuthSettingsForm, \
                                        X509SettingsForm
 
+from reviewboard.scmtools.models import Repository
+
+from reviewboard.scmtools.perforce import PerforceClient
+
+
 
 _auth_backends = []
 _auth_backend_setting = None
@@ -104,6 +113,7 @@ class AuthBackend(object):
         pass
 
 
+
 class StandardAuthBackend(AuthBackend, ModelBackend):
     name = _('Standard Registration')
     settings_form = StandardAuthSettingsForm
@@ -113,8 +123,35 @@ class StandardAuthBackend(AuthBackend, ModelBackend):
     supports_change_password = True
     supports_change_timezone = True
 
+
     def authenticate(self, username, password):
-        return ModelBackend.authenticate(self, username, password)
+        gusername = username[:]
+        gpassword = password[:]
+
+        logging.debug("|" + username.__class__.__name__ + "|" + password.__class__.__name__ + "|")
+        
+
+        try:
+            user = ModelBackend.authenticate(self, username, password)
+            if user:
+                if Repository.objects:
+                    logging.debug("checking accessibility")
+                    repos = Repository.objects.accessible(user)
+                    logging.debug("checked accessibility")
+                    for repo in repos.order_by('name'):
+                        #= repo.get_scmtool().get_fields()
+                        #valid_repos.append((repo.id, repo.name))
+                        logging.debug("Repository path:" + str(repo.path) + " name:" + str(repo.name))
+                        pc = PerforceClient(str(repo.path), str(username), str(password), '')
+                        pc.get_perforce_ticket()
+                else:
+                    logging.debug("objects are nonetype")
+        except Exception, e:
+            logging.error('Error loading SCMTool for repository '
+                          '%s (ID %d): %s' % (repo.name, repo.id, e),
+                           exc_info=1)
+
+        return user
 
     def get_or_create_user(self, username):
         return ModelBackend.get_or_create_user(self, username)
@@ -192,6 +229,10 @@ class LDAPBackend(AuthBackend):
 
     def authenticate(self, username, password):
         username = username.strip()
+    def authenticate(self, username, password):
+        username = username.strip()
+    def authenticate(self, username, password):
+        username = username.strip()
         uid = settings.LDAP_UID_MASK % username
 
         if len(password) == 0:
@@ -574,7 +615,3 @@ def get_auth_backends():
                         setattr(backend, field, False)
 
             _auth_backends.append(backend)
-
-        _auth_backend_setting = settings.AUTHENTICATION_BACKENDS
-
-    return _auth_backends
diff --git a/reviewboard/scmtools/perforce.py b/reviewboard/scmtools/perforce.py
index d4aa2067f3de49fdf5dda6b0b786e42b7e2b7ab9..d49adacf3ca19fd1d01e52551c52d922d3adbf85 100644
--- a/reviewboard/scmtools/perforce.py
+++ b/reviewboard/scmtools/perforce.py
@@ -7,6 +7,9 @@ import socket
 import subprocess
 import tempfile
 import time
+import logging
+import sys, traceback
+
 
 from djblets.util.filesystem import is_exe_in_path
 try:
@@ -82,6 +85,9 @@ class STunnelProxy(object):
 
 
 class PerforceClient(object):
+
+    UserToTicket = {}
+
     def __init__(self, p4port, username, password, encoding, use_stunnel=False):
         self.p4port = p4port
         self.username = username
@@ -97,6 +103,28 @@ class PerforceClient(object):
             raise AttributeError('stunnel proxy was requested, but stunnel '
                                  'binary is not in the exec path.')
 
+    def get_perforce_ticket(self):
+        self.p4.port = self.p4port
+        self.p4.user = self.username
+        self.p4.password = self.password
+        #logging.debug("port : " + self.p4.port + " user:" + self.p4.username)
+        ticket_file = "./." + str(time.time()) + self.p4.port + self.p4.user
+        self.p4.ticket_file = ticket_file
+        #print p4.ticket_file
+        self.p4.connect()
+        self.p4.run_login()
+        f = open(self.p4.ticket_file, 'r')
+        ticket = f.read()
+        #print ticket
+        f.close()
+        os.remove (self.p4.ticket_file)
+        ticket = ticket.split("=")[1]
+        ticket = ticket.split(":")[1]
+        ticket = ticket.rstrip('\n')
+        PerforceClient.UserToTicket[self.p4.user] = ticket
+        logging.debug("User: " + self.p4.user + " Ticket:" +  PerforceClient.UserToTicket[self.p4.user])
+
+
     def _connect(self):
         """
         Connect to the perforce server.
@@ -105,7 +133,10 @@ class PerforceClient(object):
         proxy.
         """
         self.p4.user = self.username
-        self.p4.password = self.password
+        #self.p4.password =  PerforceClient.UserToTicket[self.p4.user] #self.password
+        self.p4.password =  self.password
+
+        logging.debug("In Connect - User: " + self.p4.user + " Ticket:" +  self.p4.password)
         if self.encoding:
             self.p4.charset = self.encoding
         self.p4.exception_level = 1
@@ -118,6 +149,11 @@ class PerforceClient(object):
         else:
             self.p4.port = self.p4port
         self.p4.connect()
+        if self.p4.connected():
+            logging.debug("we are connected!")
+        else:
+            logging.debug("we are not connected")
+
 
     def _disconnect(self):
         """
@@ -249,21 +285,33 @@ class PerforceTool(SCMTool):
     }
 
     def __init__(self, repository):
+
+        # logging.debug()
         SCMTool.__init__(self, repository)
 
+        repository.password = PerforceClient.UserToTicket[repository.username];
+        
+
+        logging.debug ("PerforceTool user: " + repository.username + " Password:" + repository.password)
+
         self.client = self._create_client(
             str(repository.mirror_path or repository.path),
             str(repository.username),
+            #str(PerforceClient.UserToTicket[repository.username]),
             str(repository.password),
             str(repository.encoding))
 
     @staticmethod
     def _create_client(path, username, password, encoding=''):
+        # logging.debug()
+
         if path.startswith('stunnel:'):
             path = path[8:]
             use_stunnel = True
         else:
             use_stunnel = False
+        #password = PerforceClient.UserToTicket[username]
+        logging.debug("Perforce user: " + username + " password:" + password)
         return PerforceClient(path, username, password, encoding, use_stunnel)
 
     @staticmethod
