本文整理匯總了Python中django.contrib.auth.get_backends方法的典型用法代碼示例。如果您正苦於以下問題:Python auth.get_backends方法的具體用法?Python auth.get_backends怎麽用?Python auth.get_backends使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類django.contrib.auth
的用法示例。
在下文中一共展示了auth.get_backends方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _authorized_approvals
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def _authorized_approvals(self, as_user):
group_q = Q()
for g in as_user.groups.all():
group_q = group_q | Q(groups__in=[g])
permissions = []
for backend in auth.get_backends():
permissions.extend(backend.get_all_permissions(as_user))
permission_q = Q()
for p in permissions:
label, codename = p.split('.')
permission_q = permission_q | Q(permissions__content_type__app_label=label,
permissions__codename=codename)
return TransitionApproval.objects.filter(
Q(workflow=self.workflow, status=PENDING) &
(
(Q(transactioner__isnull=True) | Q(transactioner=as_user)) &
(Q(permissions__isnull=True) | permission_q) &
(Q(groups__isnull=True) | group_q)
)
)
示例2: query_ldap
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def query_ldap(email: str) -> List[str]:
values = []
backend = next((backend for backend in get_backends() if isinstance(backend, LDAPBackend)), None)
if backend is not None:
try:
ldap_username = backend.django_to_ldap_username(email)
except ZulipLDAPExceptionNoMatchingLDAPUser as e:
values.append(f"No such user found: {e}")
return values
ldap_attrs = _LDAPUser(backend, ldap_username).attrs
for django_field, ldap_field in settings.AUTH_LDAP_USER_ATTR_MAP.items():
value = ldap_attrs.get(ldap_field, ["LDAP field not present"])[0]
if django_field == "avatar":
if isinstance(value, bytes):
value = "(An avatar image file)"
values.append(f"{django_field}: {value}")
if settings.LDAP_EMAIL_ATTR is not None:
values.append("{}: {}".format('email', ldap_attrs[settings.LDAP_EMAIL_ATTR][0]))
else:
values.append("LDAP backend not configured on this server.")
return values
示例3: has_module_perms
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def has_module_perms(self, app_label):
"""
Returns True if the user has any permissions in the given app label.
Uses pretty much the same logic as has_perm, above.
"""
if self.is_active and self.is_superuser:
return True
for backend in auth.get_backends():
if not hasattr(backend, 'has_module_perms'):
continue
try:
if backend.has_module_perms(self, app_label):
return True
except PermissionDenied:
return False
return False
示例4: has_perm
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def has_perm(self, perm, obj=None):
"""
Logic from django.contrib.auth.models._user_has_perm
:param perm:
:param obj:
:return:
"""
for backend in auth.get_backends():
if not hasattr(backend, 'has_perm') \
or backend.__module__.startswith('django.contrib.auth'):
continue
try:
if backend.has_perm(self, perm, obj):
return True
except PermissionDenied:
return False
return False
示例5: _user_get_all_permissions
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def _user_get_all_permissions(user, obj):
permissions = set()
for backend in auth.get_backends():
if hasattr(backend, "get_all_permissions"):
permissions.update(backend.get_all_permissions(user, obj))
return permissions
示例6: _user_has_perm
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def _user_has_perm(user, perm, obj):
"""
A backend can raise `PermissionDenied` to short-circuit permission checking.
"""
for backend in auth.get_backends():
if not hasattr(backend, 'has_perm'):
continue
try:
if backend.has_perm(user, perm, obj):
return True
except PermissionDenied:
return False
return False
示例7: _user_has_module_perms
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def _user_has_module_perms(user, app_label):
"""
A backend can raise `PermissionDenied` to short-circuit permission checking.
"""
for backend in auth.get_backends():
if not hasattr(backend, 'has_module_perms'):
continue
try:
if backend.has_module_perms(user, app_label):
return True
except PermissionDenied:
return False
return False
示例8: get_group_permissions
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def get_group_permissions(self, obj=None):
"""
Returns a list of permission strings that this user has through their
groups. This method queries all available auth backends. If an object
is passed in, only permissions matching this object are returned.
"""
permissions = set()
for backend in auth.get_backends():
if hasattr(backend, "get_group_permissions"):
permissions.update(backend.get_group_permissions(self, obj))
return permissions
示例9: get_backend
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def get_backend():
backends = get_backends()
return backends[0]
示例10: get_group_permissions
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def get_group_permissions(self, obj=None):
"""
Return a list of permission strings that this user has through their
groups. Query all available auth backends. If an object is passed in,
return only permissions matching this object.
"""
permissions = set()
for backend in auth.get_backends():
if hasattr(backend, "get_group_permissions"):
permissions.update(backend.get_group_permissions(self, obj))
return permissions
示例11: is_supervisor_of
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def is_supervisor_of(user_or_profile, profile_or_countries):
user = _convert_profile_to_user(user_or_profile)
if auth_log.getEffectiveLevel() == logging.DEBUG:
auth_log.debug(
"* checking if object is supervised... [ %s %s] [ %s ]",
user, "<~ '%s' " % user_or_profile if user != user_or_profile else "",
repr(profile_or_countries))
if isinstance(profile_or_countries, int):
try:
profile_or_countries = Profile.objects.get(pk=profile_or_countries)
except Profile.DoesNotExist:
return False
elif isinstance(profile_or_countries, str):
profile_or_countries = profile_or_countries.split(" ")
# supervisor = False
# for backend in auth.get_backends():
# try:
# supervisor = backend.is_user_supervisor_of(user, profile_or_countries)
# except AttributeError as e:
# pass
# except:
# supervisor = False
# else:
# break
# return supervisor
return user.has_perm(PERM_SUPERVISOR, profile_or_countries)
示例12: supervisor_of
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def supervisor_of(user_or_profile):
user = _convert_profile_to_user(user_or_profile)
if auth_log.getEffectiveLevel() == logging.DEBUG:
auth_log.debug(
"* searching supervised objects... [ %s %s]",
user, "<~ '%s' " % user_or_profile if user != user_or_profile else "")
for backend in auth.get_backends():
try:
return sorted(backend.get_user_supervisor_of(user))
except Exception:
pass
return ("",)
示例13: get_oidc_backend
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def get_oidc_backend():
"""
Get the Django auth backend that uses OIDC.
"""
# allow the user to force which back backend to use. this is mostly
# convenient if you want to use OIDC with DRF but don't want to configure
# OIDC for the "normal" Django auth.
backend_setting = import_from_settings('OIDC_DRF_AUTH_BACKEND', None)
if backend_setting:
backend = import_string(backend_setting)()
if not isinstance(backend, OIDCAuthenticationBackend):
msg = 'Class configured in OIDC_DRF_AUTH_BACKEND ' \
'does not extend OIDCAuthenticationBackend!'
raise ImproperlyConfigured(msg)
return backend
# if the backend setting is not set, look through the list of configured
# backends for one that is an OIDCAuthenticationBackend.
backends = [b for b in get_backends() if isinstance(b, OIDCAuthenticationBackend)]
if not backends:
msg = 'No backends extending OIDCAuthenticationBackend found - ' \
'add one to AUTHENTICATION_BACKENDS or set OIDC_DRF_AUTH_BACKEND!'
raise ImproperlyConfigured(msg)
if len(backends) > 1:
raise ImproperlyConfigured('More than one OIDCAuthenticationBackend found!')
return backends[0]
示例14: has_perm
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def has_perm(self, perm, obj=None):
if self.is_active and self.is_superuser:
return True
for backend in auth.get_backends():
if not hasattr(backend, 'has_perm'):
continue
try:
if backend.has_perm(self, perm, obj):
return True
except PermissionDenied:
return False
return False
示例15: get_all_permissions
# 需要導入模塊: from django.contrib import auth [as 別名]
# 或者: from django.contrib.auth import get_backends [as 別名]
def get_all_permissions(self, obj=None):
"""
Logic from django.contrib.auth.models._user_get_all_permissions
:param perm:
:param obj:
:return:
"""
permissions = set()
for backend in auth.get_backends():
# Excluding Django.contrib.auth backends since they are not
# compatible with non-db-backed permissions.
if hasattr(backend, "get_all_permissions") \
and not backend.__module__.startswith('django.'):
permissions.update(backend.get_all_permissions(self, obj))
return permissions