本文整理汇总了Python中pytas.http.TASClient.authenticate方法的典型用法代码示例。如果您正苦于以下问题:Python TASClient.authenticate方法的具体用法?Python TASClient.authenticate怎么用?Python TASClient.authenticate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pytas.http.TASClient
的用法示例。
在下文中一共展示了TASClient.authenticate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TASBackend
# 需要导入模块: from pytas.http import TASClient [as 别名]
# 或者: from pytas.http.TASClient import authenticate [as 别名]
class TASBackend(ModelBackend):
logger = logging.getLogger(__name__)
def __init__(self):
self.tas = TASClient()
# Create an authentication method
# This is called by the standard Django login procedure
def authenticate(self, username=None, password=None, request=None, **kwargs):
user = None
if username is not None and password is not None:
tas_user = None
if request is not None:
self.logger.info('Attempting login via TAS for user "%s" from IP "%s"' % (username, request.META.get('REMOTE_ADDR')))
else:
self.logger.info('Attempting login via TAS for user "%s" from IP "%s"' % (username, 'unknown'))
try:
# Check if this user is valid on the mail server
if self.tas.authenticate(username, password):
tas_user = self.tas.get_user(username=username)
self.logger.info('Login successful for user "%s"' % username)
else:
raise ValidationError('Authentication Error', 'Your username or password is incorrect.')
except Exception as e:
self.logger.warning(e.args)
if re.search(r'PendingEmailConfirmation', e.args[1]):
raise ValidationError('Please confirm your email address before logging in.')
else:
raise ValidationError(e.args[1])
if tas_user is not None:
UserModel = get_user_model()
try:
# Check if the user exists in Django's local database
user = UserModel.objects.get(username=username)
user.first_name = tas_user['firstName']
user.last_name = tas_user['lastName']
user.email = tas_user['email']
user.save()
except UserModel.DoesNotExist:
# Create a user in Django's local database
self.logger.info('Creating local user record for "%s" from TAS Profile' % username)
user = UserModel.objects.create_user(
username=username,
first_name=tas_user['firstName'],
last_name=tas_user['lastName'],
email=tas_user['email']
)
try:
profile = DesignSafeProfile.objects.get(user=user)
except DesignSafeProfile.DoesNotExist:
profile = DesignSafeProfile(user=user)
profile.save()
return user
示例2: clean
# 需要导入模块: from pytas.http import TASClient [as 别名]
# 或者: from pytas.http.TASClient import authenticate [as 别名]
def clean(self):
cleaned_data = self.cleaned_data
reset_link = reverse('designsafe_accounts:password_reset')
tas = TASClient()
current_password_correct = tas.authenticate(self._username,
cleaned_data['current_password'])
if current_password_correct:
tas_user = tas.get_user(username=self._username)
pw = cleaned_data['new_password']
confirm_pw = cleaned_data['confirm_new_password']
valid, error_message = check_password_policy(tas_user, pw, confirm_pw)
if not valid:
self.add_error('new_password', error_message)
self.add_error('confirm_new_password', error_message)
raise forms.ValidationError(error_message)
else:
err_msg = mark_safe(
'The current password you provided is incorrect. Please try again. '
'If you do not remember your current password you can '
'<a href="%s" tabindex="-1">reset your password</a> with an email '
'confirmation.' % reset_link)
self.add_error('current_password', err_msg)