~matiasb/django-openid-auth/py3-migration

« back to all changes in this revision

Viewing changes to django_openid_auth/auth.py

  • Committer: Anthony Lenton
  • Date: 2012-06-01 16:45:34 UTC
  • mfrom: (89.1.2 race-condition)
  • Revision ID: anthony.lenton@canonical.com-20120601164534-rp67u89u7c3e0yox
[r=mhall],[bug=1007281] Strip non-alphanumeric characters out of email for better username suggestions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
146
146
        return dict(email=email, nickname=nickname,
147
147
                    first_name=first_name, last_name=last_name)
148
148
 
 
149
    def _get_preferred_username(self, nickname, email):
 
150
        if nickname:
 
151
            return nickname
 
152
        if email and getattr(settings, 'OPENID_USE_EMAIL_FOR_USERNAME',
 
153
            False):
 
154
            suggestion = ''.join([x for x in email if x.isalnum()])
 
155
            if suggestion:
 
156
                return suggestion
 
157
        return 'openiduser'
 
158
 
149
159
    def _get_available_username(self, nickname, identity_url):
150
160
        # If we're being strict about usernames, throw an error if we didn't
151
161
        # get one back from the provider
225
235
                    "An attribute required for logging in was not "
226
236
                    "returned ({0}).".format(required_attr))
227
237
 
228
 
        nickname = details['nickname'] or 'openiduser'
 
238
        nickname = self._get_preferred_username(details['nickname'],
 
239
            details['email'])
229
240
        email = details['email'] or ''
230
241
 
231
 
        username = self._get_available_username(details['nickname'], openid_response.identity_url)
 
242
        username = self._get_available_username(nickname,
 
243
            openid_response.identity_url)
232
244
 
233
245
        user = User.objects.create_user(username, email, password=None)
234
246
        self.associate_openid(user, openid_response)