From 634727c51b0798438283ed2a611f5a727c6731f5 Mon Sep 17 00:00:00 2001
From: Andrew Williams
Date: Mon, 1 Mar 2010 15:48:17 +0000
Subject: [PATCH] Now checks if the service can provide cookies
---
sso/models.py | 10 +++++++++-
sso/services/__init__.py | 8 ++++++++
sso/services/jabber/__init__.py | 6 +++++-
templates/profile.html | 6 +++++-
4 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/sso/models.py b/sso/models.py
index 1d8ba35..ca89419 100644
--- a/sso/models.py
+++ b/sso/models.py
@@ -59,6 +59,14 @@ class Service(models.Model):
api = models.CharField(max_length=200)
groups = models.ManyToManyField(Group, blank=False)
+ @property
+ def provide_login(self):
+ return acc.service.api().settings['provide_login']
+
+
+ def api(self):
+ return get_api(self.api)
+
def __str__(self):
#return "%s: %s" % (self.name, self.api)
return self.name
@@ -79,7 +87,7 @@ class ServiceAccount(models.Model):
if not self.username:
self.username = self.user.username
- api = get_api(self.service.api)
+ api = self.service.api()
if self.active:
if not api.check_user(self.username):
diff --git a/sso/services/__init__.py b/sso/services/__init__.py
index 6ab42b8..07aab61 100644
--- a/sso/services/__init__.py
+++ b/sso/services/__init__.py
@@ -17,6 +17,10 @@ class BaseService():
"""
+ settings = { 'require_user': True,
+ 'require_password': True,
+ 'provide_login': False }
+
def add_user(self, username, password):
""" Add a user """
pass
@@ -36,3 +40,7 @@ class BaseService():
def check_user(self, username):
""" Check if the username exists """
pass
+
+ def login(username):
+ """ Login the user and provide cookies back """
+ pass
diff --git a/sso/services/jabber/__init__.py b/sso/services/jabber/__init__.py
index 890fa5a..4e4dda4 100644
--- a/sso/services/jabber/__init__.py
+++ b/sso/services/jabber/__init__.py
@@ -3,7 +3,11 @@ from sso.services.jabber.ejabberdctl import eJabberdCtl
import settings
class JabberService(BaseService):
-
+
+ settings = { 'require_user': True,
+ 'require_password': True,
+ 'provide_login': False }
+
def __init__(self):
self.ejctl = eJabberdCtl(sudo=settings.JABBER_SUDO)
diff --git a/templates/profile.html b/templates/profile.html
index 3a64d71..8327ef1 100644
--- a/templates/profile.html
+++ b/templates/profile.html
@@ -25,7 +25,11 @@ a new service click the Add Service link
{{ acc.username }} |
****** |
{{ acc.active }} |
- Delete |
+ Delete
+ {% if acc.provide_login %}
+ / Login>/a>
+ {% endif %}
+ |
{% endfor %}