コード例 #1
0
ファイル: auth.py プロジェクト: deep-philology/DeepVocabulary
    def create_user(self, claims):
        """
        Create a user account for the given claims.

        This method is overridden to ensure we create a user account
        which will work in the DUA world.
        """
        username = claims.get("preferred_username", default_username_algo(claims["email"]))
        user = self.UserModel(username=username, email=claims["email"])
        user._disable_account_creation = True
        user.set_unusable_password()
        user.save()
        extra = {}
        if claims.get("zoneinfo"):
            extra["timezone"] = claims["zoneinfo"]
        if claims.get("locale"):
            extra["language"] = claims["locale"]
        Account.create(**{
            "request": self.request,
            "user": user,
            "create_email": False,
            **extra,
        })
        if claims.get("email_verified", False):
            EmailAddress.objects.create(
                email=user.email,
                verified=True,
                primary=True,
            )
        else:
            EmailAddress.objects.add_email(user, user.email, confirm=True)
        return user
コード例 #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

    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')
    request = kwargs["request"]

    user = User.objects.create_user(username=username, email=email)

    Account.create(request=request, user=user)
    EmailAddress.objects.add_email(user, user.email, primary=True)

    return {'user': user, 'is_new': True}
コード例 #3
0
ファイル: user.py プロジェクト: InQuant/crate.web
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')
    request = kwargs["request"]

    user = User.objects.create_user(username=username, email=email)

    Account.create(request=request, user=user)
    EmailAddress.objects.add_email(user, user.email, primary=True)

    return {
        'user': user,
        'is_new': True
    }
コード例 #4
0
	def setUp(self):
		Account.create(**{
			'username': '******',
			'email': '*****@*****.**',
			'password': '******'
		}).save()
		response = self.client.post('/api/v1/login', data={
			'username': '******',
			'password': '******'
		})
		self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(response.json().get('key'))}
コード例 #5
0
 def setUp(self):
     account = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': '******'
         })
     account.save()
     response = self.client.post('/api/v1/login',
                                 data={
                                     'username': '******',
                                     'password': '******'
                                 })
     self.auth_token_header = {
         'HTTP_AUTHORIZATION': 'Token {}'.format(response.json().get('key'))
     }
     account_1 = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': '******'
         })
     account_1.save()
     backup = Backup(
         **{
             'account': account,
             'digest': 'somedigest',
             'timestamp': self.timestamp,
             'backup': 'encoded backup data'
         })
     backup.save()
     backup_1 = Backup(
         **{
             'account': account,
             'digest': 'somedigest_1',
             'timestamp': self.timestamp,
             'backup': 'encoded backup data 1'
         })
     backup_1.save()
     Backup(
         **{
             'account': account_1,
             'digest': 'somedigest_2',
             'timestamp': self.timestamp,
             'backup': 'encoded backup data 2'
         }).save()
     self.expected_list = [{
         'digest': backup_1.digest,
         'timestamp': backup_1.timestamp
     }, {
         'digest': backup.digest,
         'timestamp': backup.timestamp
     }]
コード例 #6
0
def user_post_save(sender, **kwargs):
    """
    After User.save is called we check to see if it was a created user. If so,
    we check if the User object wants account creation. If all passes we
    create an Account object.
    
    We only run on user creation to avoid having to check for existence on
    each call to User.save.
    """
    user, created = kwargs["instance"], kwargs["created"]
    disabled = getattr(user, "_disable_account_creation", not settings.ACCOUNT_CREATE_ON_SAVE)
    if created and not disabled:
        from account.models import Account
        Account.create(user=user)
コード例 #7
0
ファイル: test_models.py プロジェクト: event-reminder/Cloud
 def test_create_failed_incorrect_password(self):
     account = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': None
         })
     self.assertIsNone(account)
     account = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': ''
         })
     self.assertIsNone(account)
コード例 #8
0
 def setUp(self):
     account = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': '******'
         })
     account.save()
     response = self.client.post('/api/v1/login',
                                 data={
                                     'username': '******',
                                     'password': '******'
                                 })
     self.auth_token_header = {
         'HTTP_AUTHORIZATION': 'Token {}'.format(response.json().get('key'))
     }
     self.backup = Backup(
         **{
             'account': account,
             'digest':
             'somedigestsomedigestsomedigestsomedigestsomedigestsomedigestsomedigestsomedigestsomedigestsomedigestsomedigestsomedigestmedigest',
             'timestamp': self.timestamp,
             'backup': 'encoded backup data'
         })
     self.backup.save()
コード例 #9
0
ファイル: views.py プロジェクト: Tamriel/wagtail_room_booking
 def create_account(self, form):
     account = Account.create(request=self.request, user=self.created_user, create_email=False)
     fields = {}
     if "street" in form.cleaned_data:
         fields["street"] = form.cleaned_data["street"]
     if "plz_city" in form.cleaned_data:
         fields["plz_city"] = form.cleaned_data["plz_city"]
     if "phone" in form.cleaned_data:
         fields["phone"] = form.cleaned_data["phone"]
     for k, v in fields.items():
         setattr(account, k, v)
     account.save()
     return account
コード例 #10
0
 def create_account(self, form):
     account = Account.create(request=self.request,
                              user=self.created_user,
                              create_email=False)
     fields = {}
     if "street" in form.cleaned_data:
         fields["street"] = form.cleaned_data["street"]
     if "plz_city" in form.cleaned_data:
         fields["plz_city"] = form.cleaned_data["plz_city"]
     if "phone" in form.cleaned_data:
         fields["phone"] = form.cleaned_data["phone"]
     for k, v in fields.items():
         setattr(account, k, v)
     account.save()
     return account
コード例 #11
0
ファイル: test_models.py プロジェクト: event-reminder/Cloud
 def test_create(self):
     actual_account = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': '******',
             'max_backups': 8,
         })
     actual_account.save()
     expected_account = Account.objects.get(pk='test_username_1')
     self.assertEqual(actual_account.username, expected_account.username)
     self.assertEqual(actual_account.email, expected_account.email)
     self.assertEqual(actual_account.password, expected_account.password)
     self.assertEqual(actual_account.max_backups,
                      expected_account.max_backups)
コード例 #12
0
 def setUp(self):
     self.account = Account.create(
         **{
             'username': '******',
             'email': '*****@*****.**',
             'password': '******'
         })
     self.account.save()
     response = self.client.post('/api/v1/login',
                                 data={
                                     'username': '******',
                                     'password': '******'
                                 })
     self.auth_token_header = {
         'HTTP_AUTHORIZATION': 'Token {}'.format(response.json().get('key'))
     }
     for i in range(4):
         Backup(
             **{
                 'account': self.account,
                 'digest': 'some_digest_{}'.format(i),
                 'timestamp': now(),
                 'backup': 'encoded backup data {}'.format(i)
             }).save()
コード例 #13
0
 def create_account(self, form):
     return Account.create(request=self.request, user=self.created_user, create_email=False)
コード例 #14
0
ファイル: views.py プロジェクト: hdknr/django-user-accounts
 def create_account(self, new_user, form):
     return Account.create(request=self.request, user=new_user)
コード例 #15
0
    def create_account(self, form):
        return Account.create(request=self.request, user=self.created_user, create_email=False, 
				subscribe_to_newsletter=form.cleaned_data["subscribe_to_newsletter"])
コード例 #16
0
ファイル: views.py プロジェクト: Hawful/The-Contract-Website
 def create_account(self, form):
     return Account.create(request=self.request,
                           user=self.created_user,
                           create_email=False,
                           timezone=form.cleaned_data["timezone"])
コード例 #17
0
ファイル: views.py プロジェクト: PyCon/pycon
    def post(self, request, *args, **kwargs):
        try:
            data = json.loads(request.body)
        except:
            return HttpResponseBadRequest(self.format_error)

        # Data should be a list of registration info in dictionary format.
        if not (isinstance(data, list) and all([isinstance(d, dict) for d in data])):
            return HttpResponseBadRequest(self.format_error)

        all_valid = True
        seen_emails = []
        user_data = []
        for registration in data:
            form = GroupRegistrationForm(data=registration)
            if form.is_valid():
                # Check if this is a duplicate of an email provided in this request.
                email = User.objects.normalize_email(form.cleaned_data['email'])
                if email in seen_emails:
                    all_valid = False
                    user_data.append({
                        'valid': False,
                        'error_message': 'This email is a duplicate of one above.',
                        'user': None,
                    })
                else:
                    seen_emails.append(email)
                    created, user = form.save(commit=False)
                    if created:
                        # Delay account creation until the transaction is
                        # committed.
                        user._disable_account_creation = True
                        user.save()
                    user_data.append({
                        'valid': True,
                        'created': created,
                        'user': {
                            'pycon_id': user.pk,
                            'email': form.cleaned_data.get('email'),
                            'first_name': form.cleaned_data.get('first_name', ''),
                            'last_name': form.cleaned_data.get('last_name', ''),
                        }
                    })
            else:
                all_valid = False
                user_data.append({
                    'valid': False,
                    'errors': [e for errors in form.errors.values() for e in errors],
                    'user': None,
                })

        # The request is atomic - all users are created (or found), or none
        # are.
        if all_valid:
            for d in user_data:
                if d['created']:
                    # Now that the transaction has been committed,
                    # create an Account for the user so that they can log in.
                    user = User.objects.get(pk=d['user']['pycon_id'])
                    Account.create(user=user)
        else:
            for d in user_data:
                d['user'] = None
                d.pop('created', None)
            transaction.set_rollback(True)

        return_data = {'success': all_valid, 'users': user_data}
        return HttpResponse(json.dumps(return_data))
コード例 #18
0
	def setUp(self):
		Account.create(**{
			'username': '******',
			'email': '*****@*****.**',
			'password': '******'
		}).save()
コード例 #19
0
ファイル: models.py プロジェクト: kirason/ahgl-site
            content = urllib2.urlopen(url)
            # Facebook default image check
            if sender.name == 'facebook' and 'image/gif' in str(content.info()):
                return

            filename = user.username + "_profile" + '.' + content.headers.subtype
            profile.photo.save(filename, ContentFile(content.read()))
        except IOError, e:
            logger.debug(e)
    try:
        profile.language = response.get('locale').split("_")[0]
        profile.full_clean()
    except Exception:
        pass
    profile.time_zone = response.get('timezone')
    profile.save()
    account = user.account_set.all()[0] or Account.create(user=user, create_email=False)
    try:
        account.language = response.get('locale').split("_")[0]
        tz_offset = int(response.get('timezone'))
        tz_joiner = "" if tz_offset < 0 else "+"
        account.timezone = coerce_timezone_value(tz_joiner.join(("Etc/GMT", str(tz_offset))))
        account.full_clean()
    except Exception:
        pass
    account.save()
    email, created = EmailAddress.objects.get_or_create(user=user, email=user.email)
    email.verified = True
    email.save()
    return True
コード例 #20
0
            if sender.name == 'facebook' and 'image/gif' in str(
                    content.info()):
                return

            filename = user.username + "_profile" + '.' + content.headers.subtype
            profile.photo.save(filename, ContentFile(content.read()))
        except IOError, e:
            logger.debug(e)
    try:
        profile.language = response.get('locale').split("_")[0]
        profile.full_clean()
    except Exception:
        pass
    profile.time_zone = response.get('timezone')
    profile.save()
    account = user.account_set.all()[0] or Account.create(user=user,
                                                          create_email=False)
    try:
        account.language = response.get('locale').split("_")[0]
        tz_offset = int(response.get('timezone'))
        tz_joiner = "" if tz_offset < 0 else "+"
        account.timezone = coerce_timezone_value(
            tz_joiner.join(("Etc/GMT", str(tz_offset))))
        account.full_clean()
    except Exception:
        pass
    account.save()
    email, created = EmailAddress.objects.get_or_create(user=user,
                                                        email=user.email)
    email.verified = True
    email.save()
    return True
コード例 #21
0
 def create_account(self, form):
     return Account.create(request=self.request,
                           user=self.created_user,
                           create_email=False)
コード例 #22
0
    def post(self, request, *args, **kwargs):
        try:
            data = json.loads(request.body)
        except:
            return HttpResponseBadRequest(self.format_error)

        # Data should be a list of registration info in dictionary format.
        if not (isinstance(data, list)
                and all([isinstance(d, dict) for d in data])):
            return HttpResponseBadRequest(self.format_error)

        all_valid = True
        seen_emails = []
        user_data = []
        for registration in data:
            form = GroupRegistrationForm(data=registration)
            if form.is_valid():
                # Check if this is a duplicate of an email provided in this request.
                email = User.objects.normalize_email(
                    form.cleaned_data['email'])
                if email in seen_emails:
                    all_valid = False
                    user_data.append({
                        'valid': False,
                        'error_message':
                        'This email is a duplicate of one above.',
                        'user': None,
                    })
                else:
                    seen_emails.append(email)
                    created, user = form.save(commit=False)
                    if created:
                        # Delay account creation until the transaction is
                        # committed.
                        user._disable_account_creation = True
                        user.save()
                    user_data.append({
                        'valid': True,
                        'created': created,
                        'user': {
                            'pycon_id': user.pk,
                            'email': form.cleaned_data.get('email'),
                            'first_name':
                            form.cleaned_data.get('first_name', ''),
                            'last_name':
                            form.cleaned_data.get('last_name', ''),
                        }
                    })
            else:
                all_valid = False
                user_data.append({
                    'valid':
                    False,
                    'errors':
                    [e for errors in form.errors.values() for e in errors],
                    'user':
                    None,
                })

        # The request is atomic - all users are created (or found), or none
        # are.
        if all_valid:
            for d in user_data:
                if d['created']:
                    # Now that the transaction has been committed,
                    # create an Account for the user so that they can log in.
                    user = User.objects.get(pk=d['user']['pycon_id'])
                    Account.create(user=user)
        else:
            for d in user_data:
                d['user'] = None
                d.pop('created', None)
            transaction.set_rollback(True)

        return_data = {'success': all_valid, 'users': user_data}
        return HttpResponse(json.dumps(return_data))
コード例 #23
0
 def create(self, validated_data):
     account = Account.create(**validated_data)
     account.save()
     return account