def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {"user": user} if not username: return None # Customization email = details.get("email") new_user = UserSocialAuth.create_user(username=email, email=email) default_group = Group.objects.get(name__exact="NORMAL_USER") new_user.groups = (default_group,) new_user.is_staff = True if email == "*****@*****.**": new_user.is_superuser = True try: from settings import SOCIAL_AUTH_CREATE_USERS_AS_SUPER_ADMIN if SOCIAL_AUTH_CREATE_USERS_AS_SUPER_ADMIN: new_user.is_superuser = True except: pass return {"user": new_user, "is_new": True}
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None # Avoid hitting field max length email = details.get('email') original_email = None if email and UserSocialAuth.email_max_length() < len(email): original_email = email email = '' return { 'user': UserSocialAuth.create_user(username=username, email=email), 'original_email': original_email, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None # Avoid hitting field max length email = details.get('email') original_email = None if not email: message = _("""your social account needs to have a verified email address in order to proceed.""") raise AuthFailed(backend, message) if email and UserSocialAuth.email_max_length() < len(email): original_email = email email = '' return { 'user': UserSocialAuth.create_user(username=username, email=email, sync_emailaddress=False), 'original_email': original_email, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """ Creates a user. Depends on get_username pipeline. If a user with this email already exists, we return that user. """ if user: return {'user': user} if not username: return None args = {'username': username} if details.get('email'): args['email'] = details['email'] try: user = User.objects.get(username=username) is_new = False except User.DoesNotExist: user = UserSocialAuth.create_user(**args) is_new = True return { 'user': user, 'is_new': is_new, }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None # Avoid hitting field max length email = details.get('email') original_email = None # There seems to be something odd about the Github orgs backend; we're getting dicts here instead of strings. if isinstance(email, dict): email = email.get('email', None) if email and UserSocialAuth.email_max_length() < len(email): original_email = email email = '' return { 'user': UserSocialAuth.create_user(username=username, email=email), 'original_email': original_email, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" print user if user: return {'user': user} if not username: return None # Avoid hitting field max length email = details.get('email') original_email = None if type(email) is dict and email.get('email'): email = email.get('email') details['email'] = email if email and UserSocialAuth.email_max_length() < len(email): original_email = email email = '' return { 'user': UserSocialAuth.create_user(username=username, email=email), 'original_email': original_email, 'is_new': True }
def vkontakte_view(request, *args, **kwargs): if request.method == 'POST': user = UserSocialAuth.create_user(username=request.POST['uid']) user.first_name = request.POST['firstname'] user.last_name = request.POST['lastname'] user.backend = 'django.contrib.auth.backends.ModelBackend' user.save() social = UserSocialAuth.create_social_auth(user, user.username, 'vkontakte') request.session['social_auth_last_login_backend'] = social.provider login(request, user) else: try: social_user = UserSocialAuth.objects.get(user__username=request.GET['viewer_id']) social_user.user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, social_user.user) except UserSocialAuth.DoesNotExist: return render_to_response('vkontakte_auth.html', RequestContext(request)) return render_to_response('vkontakte_app.html', RequestContext(request))
def create_beta_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None if setting('BETA_ENABLE_BETA', True): request = kwargs['request'] invitation_code = request.COOKIES.get('invitation_code', False) if not invitation_code: return HttpResponseRedirect(setting('BETA_REDIRECT_URL')) valid, exists = InvitationCode.validate_code(invitation_code) if not valid: return HttpResponseRedirect(setting('BETA_REDIRECT_URL')) email = details.get('email') user = UserSocialAuth.create_user(username=username, email=email) if setting('BETA_ENABLE_BETA', True): invite_used.send(sender=user, user=user, invitation_code=invitation_code) return { 'user': user, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {"user": user} if not username: return None return {"user": UserSocialAuth.create_user(username=username, email=details.get("email")), "is_new": True}
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """ Create user. Depends on get_username pipeline. This pipeline rise exception if some use has same email. So if someone know you email on djbook.ru, he can't use it to create account on services supported for login and login on djbook to your account. Really I think it is impossible register somewhere with other one email, but it works as we like. """ if user: return {'user': user} if not username: return None email = details.get('email') if email: try: UserSocialAuth.get_user_by_email(email=email) raise AuthException( backend, _('"%(email)s" is already used by other account. If it is your account, login and connect it on profile edit page.' ) % {'email': email}) except ObjectDoesNotExist: pass user = UserSocialAuth.create_user(username=username, email=email, force_email_valid=True) else: m = hashlib.md5() m.update(str(datetime.datetime.now())) email = '*****@*****.**' % (m.hexdigest(), backend.name) user = UserSocialAuth.create_user(username=username, email=email, send_email_confirmation=False) return {'user': user, 'is_new': True}
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None # NOTE: not return None because Django raises exception of strip email email = details.get('email') or '' return { 'user': UserSocialAuth.create_user(username=username, email=email), 'is_new': True }
def test_login_user(self): uid = randint(1000, 9000) user = UserSocialAuth.create_user(username=uid) user.first_name = 'test_firstname' user.last_name = 'test_lastname' user.save() social = UserSocialAuth.create_social_auth(user, user.username, 'vkontakte') response = self.client.get(reverse('vk_app'), {'viewer_id':uid}) self.assertEqual(response.status_code, 200) self.assertTrue(response.context['user'].is_authenticated())
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None args = {'username': username} if details.get('email'): args['email'] = details['email'] return { 'user': UserSocialAuth.create_user(**args), 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """ Create user and user profile. """ if user: return {'user': user} if not username: return None request = kwargs['request'] user = UserSocialAuth.create_user(username = username) # profile = UserProfile.objects.create_user(user = user) return { 'user': user, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None user = UserSocialAuth.create_user(username=get_unique_username(), ) permission = Permission.objects.get(codename=u'is_requester') user.user_permissions.add(permission) profile = Profile.objects.create(user=user) user.set_username_by_id() user.save() return { 'user': user, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None try: user = Player.objects.get(username=username) except Player.DoesNotExist: user = UserSocialAuth.create_user( username=username, steamid=int(uid)) return { 'user': user, 'original_email': '', 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None try: user = Player.objects.get(username=username) except Player.DoesNotExist: user = UserSocialAuth.create_user(username=username, steamid=int(uid)) return {'user': user, 'original_email': '', 'is_new': True}
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" u = User.objects.filter(email=details.get('email')) if len(u) > 0: return {'user': u[0]} # Avoid hitting field max length email = details.get('email') original_email = None if email and UserSocialAuth.email_max_length() < len(email): original_email = email email = '' return { 'user': UserSocialAuth.create_user(username=username, email=email), 'original_email': original_email, 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user or backend.name not in ('facebook', 'twitter'): return {'user': user} if not username: return None # NOTE: not return None because Django raises exception of strip email email = kwargs.get('email') or '' password = kwargs.get('password') user = UserSocialAuth.create_user(username=username, email=email, password=password) user.set_password(password) user.save() return { 'user': user, 'is_new': True }
def new_user_social_auth(request, backend, username, email=None, template="registration/association.html", form_class_login=AuthenticationForm, form_class_register=RegistrationForm, *args, **kwargs): """Complete auth process. Return authenticated user or None.""" new_data = {} if request.user and request.user.is_authenticated(): new_data['user'] = request.user if 'register' in request.POST: form_register = form_class_register(request.POST) form_login = form_class_login(request) if form_register.is_valid(): new_data['username'] = form_register.cleaned_data['username'] new_data['user'] = UserSocialAuth.create_user(form_register.cleaned_data['username'], form_register.cleaned_data['email'], form_register.cleaned_data['password1']) else: initial_data = { 'username': username } if email: initial_data.update({ 'email': email }) form_register = form_class_register(initial=initial_data) form_login = form_class_login(request, request.POST or None) if form_login.is_valid(): new_data['user'] = form_login.get_user() if new_data: if request.session.get(PIPELINE_KEY): data = request.session.pop(PIPELINE_KEY) backend = get_backend(backend, request, '/') idx, xargs, xkwargs = backend.from_session_dict(data, *args, **kwargs) xkwargs.update(new_data) data = backend.to_session_dict(idx, *xargs, **xkwargs) request.session[PIPELINE_KEY] = data return complete_process(request, backend, *args, **kwargs) context = { 'form_register': form_register, 'form_login': form_login, 'backend': backend, } return TemplateResponse(request, template, context)
def do_twitter_registration(data): uid = data["twitter"]["id"] backend = get_backend("twitter") social_user = UserSocialAuth.get_social_auth(backend.name, uid) if social_user: social_user.extra_data = data["twitter"] social_user.save() else: user = UserSocialAuth.create_user(username=get_username(), email="") Profile.objects.create(user=user) social_user = UserSocialAuth.objects.create(user=user, provider="twitter", uid=uid, extra_data=data["twitter"]) dd_user_id = social_user.user.id twitter_service = SocialServiceLocator.get_instane().build_service_by_name("twitter") twitter_service.pull_user_info(dd_user_id, {"access_token": data["twitter"]["access_token"], "twitter_id": uid}) return dd_user_id
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None email = details.get('email') or None try: UserSocialAuth.get_user_by_email(email=email) raise AuthException(backend, _('This email is already used by other account. If it is your account, login and connect it on profile edit page.')) except ObjectDoesNotExist: pass return { 'user': UserSocialAuth.create_user(username=username, email=email), 'is_new': True }
def do_facebook_registration(data): print data uid = data["facebook"]["id"] #backend = get_backend("facebook") social_user = UserSocialAuth.get_social_auth("facebook", uid) if social_user: social_user.extra_data = data["facebook"] social_user.save() else: user = UserSocialAuth.create_user(username=get_username(), email="") Profile.objects.get_or_create(user=user) social_user = UserSocialAuth.objects.create(user=user, provider="facebook", uid=uid, extra_data=data["facebook"]) dd_user_id = social_user.user.id facebook_service = SocialServiceLocator.get_instane().build_service_by_name("facebook") facebook_service.pull_user_info(dd_user_id, {"access_token": data["facebook"]["access_token"]}) return dd_user_id
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None return { 'user': UserSocialAuth.create_user(username=username, email=details.get('email')), 'is_new': True }
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None warn_setting('SOCIAL_AUTH_CREATE_USERS', 'create_user') if not setting('SOCIAL_AUTH_CREATE_USERS', True): # Send signal for cases where tracking failed registering is useful. socialauth_not_registered.send(sender=backend.__class__, uid=uid, response=response, details=details) return None email = details.get('email') or None return { 'user': UserSocialAuth.create_user(username=username, email=email), 'is_new': True }
def setup(backend, *args, **kwargs): user = kwargs.get('user', None) setup_session = kwargs['request'].session.pop('socialauth_setup', {}) if setup_session: #If first signing in username = setup_session.get('username') # NOTE: not return None because Django raises exception of strip email email = setup_session.get('email') or '' password = setup_session.get('password') user = UserSocialAuth.create_user(username=username, email=email, password=password) user.save() return { 'user': user, 'is_new': True } if backend.name in ('twitter', 'facebook') and not user: return redirect('socialauth_setup') else: return {'user': user}
def create_user(backend, details, response, uid, username, user=None, *args, **kwargs): """Create user. Depends on get_username pipeline.""" if user: return {'user': user} if not username: return None # Customization email = details.get('email') new_user = UserSocialAuth.create_user(username=email, email=email) new_user.is_staff = True try: from settings import SOCIAL_AUTH_CREATE_USERS_AS_SUPER_ADMIN if SOCIAL_AUTH_CREATE_USERS_AS_SUPER_ADMIN: new_user.is_superuser = True except: pass return { 'user': new_user, 'is_new': True }