Ejemplo n.º 1
0
    def post(self):
        """Creates new user account if provided valid arguments"""
        parser = reqparse.RequestParser()
        parser.add_argument('email', type=UserValidator.create('unique_email'), required=True)
        parser.add_argument('username', type=UserValidator.create('unique_username'))
        parser.add_argument('password', type=UserValidator.create('password'))
        parser.add_argument('remember', type=inputs.boolean, default=False)
        args = parser.parse_args()

        user_db = auth.create_user_db(
            auth_id=None,
            name='',
            username=args.username,
            email=args.email,
            verified=True if not config.CONFIG_DB.verify_email else False,
            password=args.password
        )
        user_db.put()

        if config.CONFIG_DB.verify_email:
            task.verify_user_email_notification(user_db)
            return make_empty_ok_response()

        # if users don't need to verify email, we automaticaly signin newly registered user
        auth.signin_user_db(user_db, remember=args.remember)
        return user_db.to_dict(include=User.get_private_properties())
Ejemplo n.º 2
0
def retrieve_user_from_reddit(response):
    auth_id = "reddit_%s" % response["id"]
    user_db = model.User.get_by("auth_ids", auth_id)
    if user_db:
        return user_db

    return auth.create_user_db(auth_id=auth_id, name=response["name"], username=response["name"])
Ejemplo n.º 3
0
def retrieve_user_from_yahoo(response):
  auth_id = 'yahoo_%s' % response['guid']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  username = response.get('nickname', '').strip()
  names = [response.get('givenName', ''), response.get('familyName', '')]
  name = ' '.join(names).strip() or username
  if not name:
    name = 'yahoo_user_%s' % response['guid']

  emails = response.get('emails', {})
  if not isinstance(emails, list):
    emails = [emails]
  emails = [e for e in emails if 'handle' in e]
  emails.sort(key=lambda e: e.get('primary', False))
  email = emails[0]['handle'] if emails else ''

  return auth.create_user_db(
    auth_id=auth_id,
    name=name,
    username=username,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 4
0
    def post(self):
        """Creates new user account if provided valid arguments"""
        parser = reqparse.RequestParser()
        parser.add_argument('email', type=UserValidator.create('unique_email'), required=True)
        parser.add_argument('username', type=UserValidator.create('unique_username'))
        parser.add_argument('password', type=UserValidator.create('password'))
        parser.add_argument('remember', type=inputs.boolean, default=False)
        args = parser.parse_args()

        user_db = auth.create_user_db(
            auth_id=None,
            name='',
            username=args.username,
            email=args.email,
            verified=True if not config.CONFIG_DB.verify_email else False,
            password=args.password
        )
        user_db.put()

        if config.CONFIG_DB.verify_email:
            task.verify_user_email_notification(user_db)
            return make_empty_ok_response()

        # if users don't need to verify email, we automaticaly signin newly registered user
        auth.signin_user_db(user_db, remember=args.remember)
        return user_db.to_dict(include=User.get_private_properties())
Ejemplo n.º 5
0
def retrieve_user_from_google(response):
  auth_id = 'google_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  if 'email' in response:
    email = response['email']
  elif 'emails' in response:
    email = response['emails'][0]['value']
  else:
    email = ''

  if 'displayName' in response:
    name = response['displayName']
  elif 'name' in response:
    names = response['name']
    given_name = names.get('givenName', '')
    family_name = names.get('familyName', '')
    name = ' '.join([given_name, family_name]).strip()
  else:
    name = 'google_user_%s' % id

  return auth.create_user_db(
      auth_id=auth_id,
      name=name,
      username=email or name,
      email=email,
      verified=bool(email),
    )
Ejemplo n.º 6
0
def retrieve_user_from_yahoo(response):
    auth_id = 'yahoo_%s' % response['guid']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    username = response.get('nickname', '').strip()
    names = [response.get('givenName', ''), response.get('familyName', '')]
    name = ' '.join(names).strip() or username
    if not name:
        name = 'yahoo_user_%s' % response['guid']

    emails = response.get('emails', {})
    if not isinstance(emails, list):
        emails = [emails]
    emails = [e for e in emails if 'handle' in e]
    emails.sort(key=lambda e: e.get('primary', False))
    email = emails[0]['handle'] if emails else ''

    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=username,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 7
0
def retrieve_user_from_twitter(response):
    auth_id = 'twitter_%s' % response['user_id']
    user_db = model.User.get_by('auth_ids', auth_id)
    return user_db or auth.create_user_db(
        auth_id=auth_id,
        name=response['screen_name'],
        username=response['screen_name'],
    )
Ejemplo n.º 8
0
def retrieve_user_from_twitter(response):
    auth_id = 'twitter_%s' % response['user_id']
    user_db = model.User.get_by('auth_ids', auth_id)
    return user_db or auth.create_user_db(
        auth_id=auth_id,
        name=response['screen_name'],
        username=response['screen_name'],
    )
Ejemplo n.º 9
0
def retrieve_user_from_microsoft(response):
    auth_id = "microsoft_%s" % response["id"]
    user_db = model.User.get_by("auth_ids", auth_id)
    if user_db:
        return user_db
    email = response["emails"]["preferred"] or response["emails"]["account"]
    return auth.create_user_db(
        auth_id=auth_id, name=response.get("name", ""), username=email, email=email, verified=bool(email)
    )
Ejemplo n.º 10
0
def retrieve_user_from_twitter(response):
  auth_id = 'twitter_%s' % response['id_str']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  return auth.create_user_db(
    auth_id=auth_id,
    name=response['name'] or response['screen_name'],
    username=response['screen_name'],
  )
Ejemplo n.º 11
0
def retrieve_user_from_facebook(response):
    auth_id = 'facebook_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    return user_db or auth.create_user_db(
        auth_id=auth_id,
        name=response['name'],
        username=response.get('username', response['name']),
        email=response.get('email', ''),
        verified=bool(response.get('email', '')),
    )
Ejemplo n.º 12
0
def retrieve_user_from_github(response):
  auth_id = 'github_%s' % str(response['id'])
  user_db = model.User.get_by('auth_ids', auth_id)
  return user_db or auth.create_user_db(
      auth_id,
      response.get('name', response.get('login')),
      response.get('login'),
      response.get('email', ''),
      verified=bool(response.get('email', '')),
    )
Ejemplo n.º 13
0
def retrieve_user_from_bitbucket(response):
    auth_id = "bitbucket_%s" % response["username"]
    user_db = model.User.get_by("auth_ids", auth_id)
    if user_db:
        return user_db
    emails = bitbucket.get("user/emails").data["values"]
    email = "".join([e["email"] for e in emails if e["is_primary"]][0:1])
    return auth.create_user_db(
        auth_id=auth_id, name=response["display_name"], username=response["username"], email=email, verified=bool(email)
    )
Ejemplo n.º 14
0
def retrieve_user_from_github(response):
    auth_id = 'github_%s' % str(response['id'])
    user_db = model.User.get_by('auth_ids', auth_id)
    return user_db or auth.create_user_db(
        auth_id=auth_id,
        name=response['name'] or response['login'],
        username=response['login'],
        email=response.get('email', ''),
        verified=bool(response.get('email', '')),
    )
Ejemplo n.º 15
0
def retrieve_user_from_twitter(response):
  auth_id = 'twitter_%s' % response['user_id']
  user_db = model.User.get_by('auth_ids', auth_id)
  return user_db or auth.create_user_db(
      auth_id=auth_id,
      name=response['screen_name'],
      username=response['screen_name'],
      twitterToken=flask.session['oauth_token'][0],
      twitterSecret=flask.session['oauth_token'][1],
    )
Ejemplo n.º 16
0
def retrieve_user_from_facebook(response):
  auth_id = 'facebook_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  return user_db or auth.create_user_db(
      auth_id=auth_id,
      name=response['name'],
      username=response.get('username', response['name']),
      email=response.get('email', ''),
      verified=bool(response.get('email', '')),
    )
Ejemplo n.º 17
0
def retrieve_user_from_reddit(response):
    auth_id = 'reddit_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    return auth.create_user_db(
        auth_id=auth_id,
        name=response['name'],
        username=response['name'],
    )
Ejemplo n.º 18
0
def retrieve_user_from_instagram(response):
    auth_id = 'instagram_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    return auth.create_user_db(
        auth_id=auth_id,
        name=response.get('full_name', '').strip() or response.get('username'),
        username=response.get('username'),
    )
Ejemplo n.º 19
0
def retrieve_user_from_instagram(response):
  auth_id = 'instagram_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  return auth.create_user_db(
      auth_id=auth_id,
      name=response.get('full_name', '').strip() or response.get('username'),
      username=response.get('username'),
    )
Ejemplo n.º 20
0
def retrieve_user_from_dropbox(response):
  auth_id = 'dropbox_%s' % response['uid']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  return auth.create_user_db(
      auth_id=auth_id,
      name=response['display_name'],
      username=response['display_name'],
    )
Ejemplo n.º 21
0
def retrieve_user_from_reddit(response):
  auth_id = 'reddit_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  return auth.create_user_db(
    auth_id=auth_id,
    name=response['name'],
    username=response['name'],
  )
Ejemplo n.º 22
0
def retrieve_user_from_instagram(response):
    auth_id = "instagram_%s" % response["id"]
    user_db = model.User.get_by("auth_ids", auth_id)
    if user_db:
        return user_db

    return auth.create_user_db(
        auth_id=auth_id,
        name=response.get("full_name", "").strip() or response.get("username"),
        username=response.get("username"),
    )
Ejemplo n.º 23
0
def retrieve_user_from_dropbox(response):
    auth_id = 'dropbox_%s' % response['uid']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    return auth.create_user_db(
        auth_id=auth_id,
        name=response['display_name'],
        username=response['display_name'],
    )
Ejemplo n.º 24
0
    def post(self):
        """Creates new user account if provided valid arguments"""
        parser = reqparse.RequestParser()
        parser.add_argument('first_name',
                            type=UserValidator.create('name'),
                            required=True)
        parser.add_argument('last_name',
                            type=UserValidator.create('name'),
                            required=True)
        parser.add_argument('email',
                            type=UserValidator.create('unique_email'),
                            required=True)
        parser.add_argument('password',
                            type=UserValidator.create('password'),
                            required=True)
        parser.add_argument('terms',
                            type=bool,
                            required=True,
                            help='Must agree to all terms and conditions')
        args = parser.parse_args()

        if not args.terms:
            return ApiException.error(107)

        count = 0
        username = util.create_username_from_email(args.email)
        while (True):  # get a unique username
            if User.is_username_available(username):
                break
            username += str(count)
            count += 1

        user_db = auth.create_user_db(
            auth_id=None,
            username=util.create_username_from_email(args.email),
            email=args.email,
            verified=True if not config.CONFIG_DB.verify_email else False,
            password=args.password,
            avatar_url=User.get_gravatar_url(args.email),
            roles=[User.Roles.MEMBER],
            first_name=args.first_name,
            last_name=args.last_name,
        )
        user_db.put()

        Profile.get_or_create(user_db)

        if config.CONFIG_DB.verify_email:
            task.verify_user_email_notification(user_db)

        # sign in user
        auth.signin_user_db(user_db, remember=True)
        return user_db.to_dict(include=User.get_private_properties())
Ejemplo n.º 25
0
def retrieve_user_from_vk(response):
    auth_id = 'vk_%s' % response['uid']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    name = ' '.join((response['first_name'], response['last_name'])).strip()
    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=name,
    )
Ejemplo n.º 26
0
def retrieve_user_from_vk(response):
  auth_id = 'vk_%s' % response['uid']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  name = ' '.join((response['first_name'], response['last_name'])).strip()
  return auth.create_user_db(
      auth_id=auth_id,
      name=name,
      username=name,
    )
Ejemplo n.º 27
0
def retrieve_user_from_azure_ad(response):
  auth_id = 'azure_ad_%s' % response['oid']
  email = response.get('upn', '')
  first_name = response.get('given_name', '')
  last_name = response.get('family_name', '')
  username = '******'.join((first_name, last_name)).strip()
  return auth.create_user_db(
    auth_id=auth_id,
    name='%s %s' % (first_name, last_name),
    username=email or username,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 28
0
def retrieve_user_from_microsoft(response):
  auth_id = 'microsoft_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  email = response['emails']['preferred'] or response['emails']['account']
  return auth.create_user_db(
    auth_id=auth_id,
    name=response.get('name', ''),
    username=email,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 29
0
def retrieve_user_from_azure_ad(response):
    auth_id = 'azure_ad_%s' % response['oid']
    email = response.get('upn', '')
    first_name = response.get('given_name', '')
    last_name = response.get('family_name', '')
    username = '******'.join((first_name, last_name)).strip()
    return auth.create_user_db(
        auth_id=auth_id,
        name='%s %s' % (first_name, last_name),
        username=email or username,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 30
0
def retrieve_user_from_github(response):
    auth_id = 'github_%s' % str(response['id'])
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        user_db.github = response.get('login')
        user_db.put()
    return user_db or auth.create_user_db(
        auth_id,
        response.get('name', response.get('login')),
        response.get('login'),
        response.get('email', ''),
        verified=bool(response.get('email', '')),
        github=response.get('login'),
    )
Ejemplo n.º 31
0
def retrieve_user_from_bitbucket(response):
  auth_id = 'bitbucket_%s' % response['username']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  emails = bitbucket.get('user/emails').data['values']
  email = ''.join([e['email'] for e in emails if e['is_primary']][0:1])
  return auth.create_user_db(
    auth_id=auth_id,
    name=response['display_name'],
    username=response['username'],
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 32
0
def retrieve_user_from_facebook(response):
  auth_id = 'facebook_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  name = response['name']
  email = response.get('email', '')
  return auth.create_user_db(
    auth_id=auth_id,
    name=name,
    username=name,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 33
0
def retrieve_user_from_bitbucket(response):
    auth_id = 'bitbucket_%s' % response['username']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db
    emails = bitbucket.get('user/emails').data['values']
    email = ''.join([e['email'] for e in emails if e['is_primary']][0:1])
    return auth.create_user_db(
        auth_id=auth_id,
        name=response['display_name'],
        username=response['username'],
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 34
0
def retrieve_user_from_microsoft(response):
    auth_id = 'microsoft_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db
    email = response['userPrincipalName']
    name = response.get('displayName', '')
    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=name or email,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 35
0
def retrieve_user_from_linkedin(response):
    auth_id = 'linkedin_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    name = response[formatedName]
    email = response.get('emailAddress', '')
    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=email or name,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 36
0
def retrieve_user_from_linkedin(response):
    auth_id = 'linkedin_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    names = [response.get('firstName', ''), response.get('lastName', '')]
    name = ' '.join(names).strip()
    email = response.get('emailAddress', '')
    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=email or name,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 37
0
def retrieve_user_from_linkedin(response):
  auth_id = 'linkedin_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  names = [response.get('firstName', ''), response.get('lastName', '')]
  name = ' '.join(names).strip()
  email = response.get('emailAddress', '')
  return auth.create_user_db(
      auth_id=auth_id,
      name=name,
      username=email or name,
      email=email,
      verified=bool(email),
    )
Ejemplo n.º 38
0
def retrieve_user_from_mailru(response):
    auth_id = 'mailru_%s' % response['uid']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db
    name = u' '.join(
        [response.get('first_name', u''),
         response.get('last_name', u'')]).strip()
    email = response.get('email', '')
    return auth.create_user_db(
        auth_id=auth_id,
        name=name or email,
        username=email or name,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 39
0
def retrieve_user_from_gae(gae_user):
  auth_id = 'federated_%s' % gae_user.user_id()
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    if not user_db.admin and users.is_current_user_admin():
      user_db.admin = True
      user_db.put()
    return user_db

  return auth.create_user_db(
    auth_id=auth_id,
    name=util.create_name_from_email(gae_user.email()),
    username=gae_user.email(),
    email=gae_user.email(),
    verified=True,
    admin=users.is_current_user_admin(),
  )
Ejemplo n.º 40
0
def retrieve_user_from_gae(gae_user):
  auth_id = 'federated_%s' % gae_user.user_id()
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    if not user_db.admin and users.is_current_user_admin():
      user_db.admin = True
      user_db.put()
    return user_db

  return auth.create_user_db(
      auth_id=auth_id,
      name=util.create_name_from_email(gae_user.email()),
      username=gae_user.email(),
      email=gae_user.email(),
      verified=True,
      admin=users.is_current_user_admin(),
    )
Ejemplo n.º 41
0
def retrieve_user_from_mailru(response):
  auth_id = 'mailru_%s' % response['uid']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  name = u' '.join([
    response.get('first_name', u''),
    response.get('last_name', u'')
  ]).strip()
  email = response.get('email', '')
  return auth.create_user_db(
    auth_id=auth_id,
    name=name or email,
    username=email or name,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 42
0
def retrieve_user_from_linkedin(response):
  auth_id = 'linkedin_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  name = ' '.join([
    get_localized_value(response, 'firstName'),
    get_localized_value(response, 'lastName'),
  ]).strip()
  email_response = linkedin.get('emailAddress?q=members&projection=(elements*(handle~))')
  email = get_email_address(email_response.json())
  return auth.create_user_db(
    auth_id=auth_id,
    name=name,
    username=email or name,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 43
0
def retrieve_user_from_bitbucket(response):
  auth_id = 'bitbucket_%s' % response['username']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db
  if response['first_name'] or response['last_name']:
    name = ' '.join((response['first_name'], response['last_name'])).strip()
  else:
    name = response['username']
  emails = bitbucket.get('users/%s/emails' % response['username'])
  email = ''.join([e['email'] for e in emails.data if e['primary']][0:1])
  return auth.create_user_db(
      auth_id=auth_id,
      name=name,
      username=response['username'],
      email=email,
      verified=bool(email),
    )
Ejemplo n.º 44
0
def retrieve_user_from_bitbucket(response):
    auth_id = 'bitbucket_%s' % response['username']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db
    if response['first_name'] or response['last_name']:
        name = ' '.join(
            (response['first_name'], response['last_name'])).strip()
    else:
        name = response['username']
    emails = bitbucket.get('users/%s/emails' % response['username'])
    email = ''.join([e['email'] for e in emails.data if e['primary']][0:1])
    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=response['username'],
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 45
0
def retrieve_user_from_google(response):
    auth_id = 'google_%s' % response['id']
    user_db = model.User.get_by('auth_ids', auth_id)
    if user_db:
        return user_db

    name = response.get('name', '')
    if not name:
        given_name = response.get('given_name', '')
        family_name = response.get('family_name', '')
        name = ' '.join([given_name, family_name]).strip()
    if not name:
        name = 'google_user_%s' % id
    email = response.get('email', '')
    return auth.create_user_db(
        auth_id=auth_id,
        name=name,
        username=email or name,
        email=email,
        verified=bool(email),
    )
Ejemplo n.º 46
0
def retrieve_user_from_google(response):
  auth_id = 'google_%s' % response['id']
  user_db = model.User.get_by('auth_ids', auth_id)
  if user_db:
    return user_db

  name = response.get('name', '')
  if not name:
    given_name = response.get('given_name', '')
    family_name = response.get('family_name', '')
    name = ' '.join([given_name, family_name]).strip()
  if not name:
    name = 'google_user_%s' % id
  email = response.get('email', '')
  return auth.create_user_db(
    auth_id=auth_id,
    name=name,
    username=email or name,
    email=email,
    verified=bool(email),
  )
Ejemplo n.º 47
0
def retrieve_user_from_twitter(response):
    auth_id = "twitter_%s" % response["user_id"]
    user_db = model.User.get_by("auth_ids", auth_id)
    return user_db or auth.create_user_db(
        auth_id=auth_id, name=response["screen_name"], username=response["screen_name"]
    )