Guest User

Untitled

a guest
Feb 27th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. #I wrote this partial pipeline step
  2.  
  3. @partial
  4. def require_phone(backend, request, details, *args, **kwargs):
  5. request.session['backend'] = backend.name
  6. user_phone = request.session.get('user', None)
  7. user = kwargs.get('user', None)
  8. if not user:
  9. if not user_phone:
  10. return redirect(reverse('social-confirm'))
  11. else:
  12. try:
  13. user = User.objects.get(phone=user_phone)
  14. user.first_name = details['fullname']
  15. user.save()
  16. return {
  17. 'user': user,
  18. 'username': user.phone,
  19. }
  20. except User.DoesNotExist:
  21. return redirect(reverse('social-confirm'))
  22. return
  23.  
  24.  
  25. # Then add this to my pipeline
  26. SOCIAL_AUTH_PIPELINE = (
  27. 'social_core.pipeline.social_auth.social_details',
  28. 'social_core.pipeline.social_auth.social_uid',
  29. 'social_core.pipeline.social_auth.auth_allowed',
  30. 'social_core.pipeline.social_auth.social_user',
  31. 'santehnik.account.pipeline.require_phone',
  32. 'social_core.pipeline.social_auth.associate_user',
  33. 'social_core.pipeline.social_auth.load_extra_data',
  34. 'social_core.pipeline.user.user_details',
  35. )
  36.  
  37. '''require_phone() function will redirect us to 'social-confirm',
  38. which will get phone from user, create user with this phone, if user not exists
  39. and redirect us to account activation with sms code
  40. '''
  41. def social_confirm(request):
  42. backend = request.session['backend']
  43. if request.method == 'POST':
  44. form = SocialConfirmationForm(request.POST)
  45. if form.is_valid():
  46. phone = form.cleaned_data['phone']
  47. try:
  48. user = User.objects.get(phone=phone)
  49.  
  50. except User.DoesNotExist:
  51. user = User(phone=phone, is_active=False)
  52. hashcode = user.create_hash()
  53. user.hashcode = hashcode
  54. send_sms_with_activation(user)
  55. user.save()
  56. if user.is_active:
  57. return redirect(reverse('social-existing-activation', kwargs={'hashcode': hashcode}))
  58. return redirect(reverse('social-new-activation', kwargs={'hashcode': hashcode}))
  59.  
  60. else:
  61. form = SocialConfirmationForm()
  62. return render(request, 'account/social_confirm.html', locals())
  63.  
  64.  
  65. def activate_existing_user(request, **kwargs):
  66. backend = request.session.get('backend')
  67. hashcode = kwargs.get('hashcode')
  68. if request.method == 'POST':
  69. form = SocialActivationForm(request.POST, hashcode=hashcode)
  70. if form.is_valid():
  71. activation_code = form.cleaned_data['code']
  72. hashcode = form.cleaned_data['hashcode']
  73. if activation_code:
  74. try:
  75. user = User.objects.get(activation_code=activation_code, hashcode=hashcode)
  76. user.activation_code = ''
  77. user.hashcode = ''
  78. user.is_active = True
  79. user.save()
  80. request.session['user'] = user.phone
  81. messages.success(request, _('Your account has been successfully activated'))
  82. return redirect('social:complete', backend=backend)
  83. except User.DoesNotExist:
  84. messages.error(request, 'User is not found')
  85. return redirect(reverse('social-existing-activation', kwargs={'hashcode': hashcode}))
  86. else:
  87. form = SocialActivationForm(hashcode=hashcode)
  88. return render(request, 'account/social_activation.html', locals())
  89.  
  90.  
  91. def activate_new_user(request, **kwargs):
  92. backend = request.session.get('backend')
  93. hashcode = kwargs.get('hashcode')
  94. if request.method == 'POST':
  95. form = SocialNewUserActivationForm(request.POST, hashcode=hashcode)
  96. if form.is_valid():
  97. activation_code = form.cleaned_data['code']
  98. hashcode = form.cleaned_data['hashcode']
  99. password = form.cleaned_data['password']
  100. if activation_code:
  101. try:
  102. user = User.objects.get(hashcode=hashcode, activation_code=activation_code, is_active=False)
  103. user.activation_code = ''
  104. user.hashcode = ''
  105. user.is_active = True
  106. user.set_password(password)
  107. user.save()
  108. request.session['user'] = user.phone
  109. login(request, user, backend='django.contrib.auth.backends.ModelBackend')
  110. messages.success(request, _('Your account has been successfully activated'))
  111. return redirect('social:complete', backend=backend)
  112. except User.DoesNotExist:
  113. messages.error(request, 'User is not found')
  114. return redirect(reverse('social-new-activation', kwargs={'hashcode': hashcode}))
  115. else:
  116. form = SocialNewUserActivationForm(hashcode=hashcode)
  117. return render(request, 'account/activate_new_social_user.html', locals())
Add Comment
Please, Sign In to add comment