"""oidc models""" from django.db import models from django.shortcuts import reverse from django.utils.translation import gettext as _ from oidc_provider.models import Client from passbook.core.models import Provider class OpenIDProvider(Provider): """Proxy model for OIDC Client""" # Since oidc_provider doesn't currently support swappable models # (https://github.com/juanifioren/django-oidc-provider/pull/305) # we have a 1:1 relationship, and update oidc_client when the form is saved. oidc_client = models.OneToOneField(Client, on_delete=models.CASCADE) form = 'passbook.oidc_provider.forms.OIDCProviderForm' @property def name(self): """Name property for UI""" return self.oidc_client.name def __str__(self): return "OpenID Connect Provider %s" % self.oidc_client.__str__() def html_setup_urls(self, request): """return template and context modal with URLs for authorize, token, openid-config, etc""" return "oidc_provider/setup_url_modal.html", { 'provider': self, 'authorize': request.build_absolute_uri( reverse('oidc_provider:authorize')), 'token': request.build_absolute_uri( reverse('oidc_provider:token')), 'userinfo': request.build_absolute_uri( reverse('oidc_provider:userinfo')), 'provider_info': request.build_absolute_uri( reverse('oidc_provider:provider-info')), } class Meta: verbose_name = _('OpenID Provider') verbose_name_plural = _('OpenID Providers')