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())
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"])
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), )
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), )
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'], )
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) )
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'], )
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', '')), )
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', '')), )
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) )
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', '')), )
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], )
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'], )
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'), )
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'], )
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"), )
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())
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, )
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), )
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), )
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'), )
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), )
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), )
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), )
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), )
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), )
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), )
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(), )
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), )
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), )
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), )
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), )
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), )
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"] )