Example #1
0
 def __init__(self):
     paths = {
         'login_path': self.login_path,
         'logout_path': self.logout_path,
         'validate_path': self.validate_path,
     }
     self.cas = PyCAS(self.server, **paths)
Example #2
0
 def __init__(self):
     url = self.config.get('cas','server').strip()
     paths = {
         'login_path': self.config.get('cas','login_path','/login').strip(),
         'logout_path': self.config.get('cas','logout_path','/logout').strip(),
         'validate_path': self.config.get('cas','validate_path','/validate').strip(),
     }
     self.cas = PyCAS(url, **paths)
     self.service = self.env.abs_href.login()
Example #3
0
class CasLoginModule(LoginModule):
    """A CAS-based login module."""
    
    server = Option('cas', 'server', doc='Base URL for the CAS server')
    login_path = Option('cas', 'login_path', default='/login', 
                        doc='Path component for the login system')
    logout_path = Option('cas', 'logout_path', default='/logout', 
                        doc='Path component for the logout system')
    validate_path = Option('cas', 'validate_path', default='/validate', 
                        doc='Path component for the validation system')
    
    def __init__(self):
        paths = {
            'login_path': self.login_path,
            'logout_path': self.logout_path,
            'validate_path': self.validate_path,
        }
        self.cas = PyCAS(self.server, **paths)
        
    # IAuthenticatorMethods
    def authenticate(self, req):
        ticket = req.args.get('ticket')
        if ticket:
            valid, user = self.cas.validate_ticket(req.abs_href.login(), ticket)
            if valid:
                req.environ['REMOTE_USER'] = user
                
        return super(CasLoginModule, self).authenticate(req)
        
    # INavigationContributor methods
    def get_navigation_items(self, req):        
        if req.authname and req.authname != 'anonymous':
            yield ('metanav', 'login', 'logged in as %s' % req.authname)
            yield ('metanav', 'logout', Markup('<a href="%s">Logout</a>' % escape(req.href.logout())))
        else:
            yield ('metanav', 'login', Markup('<a href="%s">Login</a>' % escape(self.cas.login_url(req.abs_href.login()))))
        

    # Internal methods
    def _do_login(self, req):
        if not req.remote_user:
            req.redirect(self.cas.login_url(req.abs_href.login()))
        super(CasLoginModule, self)._do_login(req)

    def _do_logout(self, req):
        if req.authname:
            super(CasLoginModule, self)._do_logout(req)
            req.redirect(self.cas.logout_url(req.abs_href()))
        else:
            req.redirect(req.abs_href())
Example #4
0
 def cas(self):
     paths = {
         'login_path': self.login_path,
         'logout_path': self.logout_path,
         'validate_path': self.validate_path,
     }
     return PyCAS(self.server, **paths)
Example #5
0
 def __init__(self):
     url = self.config.get("cas", "server").strip()
     paths = {
         "login_path": self.config.get("cas", "login_path", "/login").strip(),
         "logout_path": self.config.get("cas", "logout_path", "/logout").strip(),
         "validate_path": self.config.get("cas", "validate_path", "/validate").strip(),
     }
     self.cas = PyCAS(url, **paths)
     self.service = self.env.abs_href.login()
Example #6
0
class CasLoginModule(LoginModule):
    """A CAS-based login module."""
    
    def __init__(self):
        url = self.config.get('cas','server').strip()
        paths = {
            'login_path': self.config.get('cas','login_path','/login').strip(),
            'logout_path': self.config.get('cas','logout_path','/logout').strip(),
            'validate_path': self.config.get('cas','validate_path','/validate').strip(),
        }
        self.cas = PyCAS(url, **paths)
        self.service = self.env.abs_href.login()
        
    # IAuthenticatorMethods
    def authenticate(self, req):
        ticket = req.args.get('ticket')
        if ticket:
            valid, user = self.cas.validate_ticket(self.service, ticket)
            if valid:
                req.remote_user = user
                
        return super(CasLoginModule, self).authenticate(req)
        
    # INavigationContributor methods
    def get_navigation_items(self, req):        
        if req.authname and req.authname != 'anonymous':
            yield ('metanav', 'login', 'logged in as %s' % req.authname)
            yield ('metanav', 'logout', Markup('<a href="%s">Logout</a>' % escape(self.env.href.logout())))
        else:
            yield ('metanav', 'login', Markup('<a href="%s">Login</a>' % escape(self.cas.login_url(self.service))))
        

    def _do_logout(self, req):
        if req.authname:
            super(CasLoginModule, self)._do_logout(req)
            req.redirect(self.cas.logout_url(self.env.abs_href()))
        else:
            req.redirect(self.env.abs_href())
Example #7
0
class CasLoginModule(LoginModule):
    """A CAS-based login module."""

    def __init__(self):
        url = self.config.get("cas", "server").strip()
        paths = {
            "login_path": self.config.get("cas", "login_path", "/login").strip(),
            "logout_path": self.config.get("cas", "logout_path", "/logout").strip(),
            "validate_path": self.config.get("cas", "validate_path", "/validate").strip(),
        }
        self.cas = PyCAS(url, **paths)
        self.service = self.env.abs_href.login()

    # IAuthenticatorMethods
    def authenticate(self, req):
        ticket = req.args.get("ticket")
        if ticket:
            valid, user = self.cas.validate_ticket(self.service, ticket)
            if valid:
                req.remote_user = user

        return super(CasLoginModule, self).authenticate(req)

    # INavigationContributor methods
    def get_navigation_items(self, req):
        if req.authname and req.authname != "anonymous":
            yield ("metanav", "login", "logged in as %s" % req.authname)
            yield ("metanav", "logout", Markup('<a href="%s">Logout</a>' % escape(self.env.href.logout())))
        else:
            yield ("metanav", "login", Markup('<a href="%s">Login</a>' % escape(self.cas.login_url(self.service))))

    def _do_logout(self, req):
        if req.authname:
            super(CasLoginModule, self)._do_logout(req)
            req.redirect(self.cas.logout_url(self.env.abs_href()))
        else:
            req.redirect(self.env.abs_href())