示例#1
0
文件: custom.py 项目: sivaa/eventsin
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}
示例#2
0
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
    }
示例#3
0
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
    }
示例#4
0
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,
    }
示例#5
0
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
    }
示例#6
0
文件: user.py 项目: mburst/problemotd
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
    }
示例#7
0
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,
    }
示例#8
0
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
    }
示例#10
0
文件: user.py 项目: gonsamuel/djnro
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}
示例#11
0
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}
示例#12
0
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
    }
示例#13
0
 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())
示例#14
0
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
    }
示例#15
0
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
    }
示例#16
0
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
    }
示例#17
0
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
    }
示例#18
0
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}
示例#19
0
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
    }
示例#20
0
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
    }
示例#21
0
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
    }
示例#22
0
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)
示例#23
0
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 
示例#24
0
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
    }
示例#25
0
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
    }
示例#27
0
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
    }
示例#28
0
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
    }