Exemple #1
0
    def post(self):
        """Signs in existing user. Note, g.user_db is set inside parse_signin decorator"""
        if not g.user_db:
            return ApiException.error(106)  # Invalid credentials

        # if not g.user_db.verified:
        #     return ApiException.error(105) # Email not verified

        if not g.user_db.active == 1:  # something other than active
            return ApiException.error(
                100 +
                g.user_db.active)  # shows error (add 100 to this property)

        # everything is good; signin
        auth.signin_user_db(g.user_db, remember=g.args.remember)
        return g.user_db.to_dict(include=User.get_private_properties())
Exemple #2
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())