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