Revision 9d20fe23 snf-astakos-app/astakos/im/forms.py
b/snf-astakos-app/astakos/im/forms.py | ||
---|---|---|
271 | 271 |
terms_link_html = '<a href="%s" target="_blank">%s</a>' \ |
272 | 272 |
% (reverse('latest_terms'), _("the terms")) |
273 | 273 |
self.fields['has_signed_terms'].label = \ |
274 |
mark_safe("I agree with %s" % terms_link_html)
|
|
274 |
mark_safe("I agree with %s" % terms_link_html) |
|
275 | 275 |
|
276 | 276 |
def clean_email(self): |
277 | 277 |
email = self.cleaned_data['email'] |
278 | 278 |
if not email: |
279 | 279 |
raise forms.ValidationError(_(astakos_messages.REQUIRED_FIELD)) |
280 | 280 |
if reserved_verified_email(email): |
281 |
provider = auth_providers.get_provider(self.request.REQUEST.get('provider', 'local'))
|
|
282 |
extra_message = _(astakos_messages.EXISTING_EMAIL_THIRD_PARTY_NOTIFICATION) % \
|
|
283 |
(provider.get_title_display, reverse('edit_profile'))
|
|
281 |
provider_id = self.request.REQUEST.get('provider', 'local')
|
|
282 |
provider = auth_providers.get_provider(provider_id)
|
|
283 |
extra_message = provider.get_add_to_existing_account_msg
|
|
284 | 284 |
|
285 |
raise forms.ValidationError(_(astakos_messages.EMAIL_USED) + ' ' + \
|
|
286 |
extra_message) |
|
285 |
raise forms.ValidationError(mark_safe(_(astakos_messages.EMAIL_USED) + ' ' +
|
|
286 |
extra_message))
|
|
287 | 287 |
return email |
288 | 288 |
|
289 | 289 |
def clean_has_signed_terms(self): |
... | ... | |
294 | 294 |
|
295 | 295 |
def post_store_user(self, user, request): |
296 | 296 |
pending = PendingThirdPartyUser.objects.get( |
297 |
token=request.POST.get('third_party_token'), |
|
298 |
third_party_identifier= \ |
|
299 |
self.cleaned_data.get('third_party_identifier')) |
|
300 |
return user.add_pending_auth_provider(pending) |
|
297 |
token=request.POST.get('third_party_token'), |
|
298 |
third_party_identifier= |
|
299 |
self.cleaned_data.get('third_party_identifier')) |
|
300 |
provider = pending.get_provider(user) |
|
301 |
provider.add_to_user() |
|
302 |
pending.delete() |
|
301 | 303 |
|
302 | 304 |
def save(self, commit=True): |
303 | 305 |
user = super(ThirdPartyUserCreationForm, self).save(commit=False) |
... | ... | |
406 | 408 |
try: |
407 | 409 |
user = AstakosUser.objects.get_by_identifier(username) |
408 | 410 |
if not user.has_auth_provider('local'): |
409 |
provider = auth_providers.get_provider('local') |
|
411 |
provider = auth_providers.get_provider('local', user)
|
|
410 | 412 |
raise forms.ValidationError( |
411 |
_(provider.get_message('NOT_ACTIVE_FOR_USER')))
|
|
413 |
provider.get_login_disabled_msg)
|
|
412 | 414 |
except AstakosUser.DoesNotExist: |
413 | 415 |
pass |
414 | 416 |
|
... | ... | |
418 | 420 |
if self.user_cache is None: |
419 | 421 |
raise |
420 | 422 |
if not self.user_cache.is_active: |
421 |
raise forms.ValidationError(self.user_cache.get_inactive_message()) |
|
423 |
msg = self.user_cache.get_inactive_message('local') |
|
424 |
raise forms.ValidationError(msg) |
|
422 | 425 |
if self.request: |
423 | 426 |
if not self.request.session.test_cookie_worked(): |
424 | 427 |
raise |
... | ... | |
505 | 508 |
clean_email: to handle local auth provider checks |
506 | 509 |
""" |
507 | 510 |
def clean_email(self): |
508 |
email = super(ExtendedPasswordResetForm, self).clean_email() |
|
511 |
# we override the default django auth clean_email to provide more |
|
512 |
# detailed messages in case of inactive users |
|
513 |
email = self.cleaned_data['email'] |
|
509 | 514 |
try: |
510 | 515 |
user = AstakosUser.objects.get_by_identifier(email) |
511 |
|
|
516 |
self.users_cache = [user] |
|
512 | 517 |
if not user.is_active: |
513 |
raise forms.ValidationError(_(astakos_messages.ACCOUNT_INACTIVE))
|
|
518 |
raise forms.ValidationError(user.get_inactive_message('local'))
|
|
514 | 519 |
|
520 |
provider = auth_providers.get_provider('local', user) |
|
515 | 521 |
if not user.has_usable_password(): |
516 |
provider = auth_providers.get_provider('local') |
|
517 |
available_providers = user.auth_providers.all() |
|
518 |
available_providers = ",".join(p.settings.get_title_display for p in \ |
|
519 |
available_providers) |
|
520 |
message = astakos_messages.UNUSABLE_PASSWORD % \ |
|
521 |
(provider.get_method_prompt_display, available_providers) |
|
522 |
raise forms.ValidationError(message) |
|
522 |
msg = provider.get_unusable_password_msg |
|
523 |
raise forms.ValidationError(msg) |
|
523 | 524 |
|
524 | 525 |
if not user.can_change_password(): |
525 |
raise forms.ValidationError(_(astakos_messages.AUTH_PROVIDER_CANNOT_CHANGE_PASSWORD)) |
|
526 |
except AstakosUser.DoesNotExist, e: |
|
526 |
msg = provider.get_cannot_change_password_msg |
|
527 |
raise forms.ValidationError(msg) |
|
528 |
|
|
529 |
except AstakosUser.DoesNotExist: |
|
527 | 530 |
raise forms.ValidationError(_(astakos_messages.EMAIL_UNKNOWN)) |
528 | 531 |
return email |
529 | 532 |
|
... | ... | |
661 | 664 |
self.user = AstakosUser.objects.get(id=self.user.id) |
662 | 665 |
if NEWPASSWD_INVALIDATE_TOKEN or self.cleaned_data.get('renew'): |
663 | 666 |
self.user.renew_token() |
664 |
#self.user.flush_sessions() |
|
665 |
if not self.user.has_auth_provider('local'): |
|
666 |
self.user.add_auth_provider('local', auth_backend='astakos') |
|
667 |
|
|
668 |
provider = auth_providers.get_provider('local', self.user) |
|
669 |
if provider.get_add_policy: |
|
670 |
provider.add_to_user() |
|
667 | 671 |
|
668 | 672 |
except BaseException, e: |
669 | 673 |
logger.exception(e) |
Also available in: Unified diff