Ejemplo n.º 1
0
def signup():
    """
    Signup a user using name, email, password.
    :return: Http Json response
    """

    if request.content_type == 'application/json':
        post_data = request.get_json(force=True)
        email = post_data.get('email')
        password = User.encode_password(post_data.get('password'))
        name = post_data.get('name')
        if re.match(r"[^@]+@[^@]+\.[^@]+", email):
            user = User.get_by_email(email)
            if user and user.isActive and user.isEmailVerified:
                return response(
                    'failed',
                    'Email already registered. Use the Sign-in option', 401)
            if user and user.isActive and not user.isEmailVerified:
                token = user.get_auth_token()
                confirm_url = url_for('auth.verify',
                                      token=token,
                                      _external=True)
                html = render_template('activate.html',
                                       confirm_url=confirm_url)
                subject = "Fronteous Arena - Confirm your email address"
                send_email(user.email_id, subject, html)

                logger.bind(userId=user._id)
                return response_auth('success', 'Successfully signed up.',
                                     None, None, 200)

            else:
                user = User(email_id=email, name=name, password=password)
                user.sign_up(userObj=post_data)

                if not user.isEmailVerified:  #If email is not verified. Not email at this stage wil be verified only for invited users coming through invitation token
                    token = user.get_auth_token()
                    confirm_url = url_for('auth.verify',
                                          token=token,
                                          _external=True)
                    html = render_template('activate.html',
                                           confirm_url=confirm_url)
                    subject = "Fronteous Arena - Confirm your email address"
                    send_email(user.email_id, subject, html)

                logger.bind(userId=user._id)
                return response_auth('success', 'Successfully signed up.',
                                     None, None, 200)
        return response(
            'failed',
            'Missing or wrong email format or password is less than four characters',
            400)
    return response('failed', 'Content-type must be json', 402)
Ejemplo n.º 2
0
 def post(self):
     """
     Register a user, generate their token and add them to the database
     :return: Json Response with the user`s token
     """
     if request.content_type == 'application/json':
         post_data = request.get_json()
         email = post_data.get('email')
         password = post_data.get('password')
         username = post_data.get('username')
         if re.match(r"[^@]+@[^@]+\.[^@]+",
                     email) and len(password) > 4 and len(username) > 3:
             user = User.get_by_email(email)
             if not user:
                 token = User(email=email,
                              password=password,
                              username=username).save()
                 return response_auth('success', 'Successfully registered',
                                      token, 201)
             else:
                 return response(
                     'failed',
                     'Failed, User already exists, Please sign In', 400)
         return response(
             'failed',
             'Missing or wrong email format or password is less than four characters',
             400)
     return response('failed', 'Content-type must be json', 400)
Ejemplo n.º 3
0
 def post(self):
     """
     Login a user if the supplied credentials are correct.
     :return: Http Json response
     """
     if 'application/json' in request.content_type:
         post_data = request.get_json()
         email = post_data.get('email')
         password = post_data.get('password')
         if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 4:
             user = User.query.filter_by(email=email).first()
             if user and bcrypt.check_password_hash(user.password,
                                                    password):
                 return response_auth('success',
                                      'Successfully logged In',
                                      user.encode_auth_token(user.id),
                                      200,
                                      user=user)
             return response(
                 'failed', 'User does not exist or password is incorrect',
                 401)
         return response(
             'failed',
             'Missing or wrong email format or password is less than four characters',
             401)
     return response('failed', 'Content-type must be json', 202)
Ejemplo n.º 4
0
    def post(self):
        """
        Register a user, generate their token and add them to the database
        :return: Json Response with the user`s token
        """
        if request.content_type == 'application/json':
            post_data = request.get_json()
            email = post_data.get('email')
            password = post_data.get('password')

            name = post_data.get('name')
            surname = post_data.get('surname')

            birthday_value = post_data.get('birthday')

            if not email:
                return response('failed', 'Missing email attribute', 400)

            if not password:
                return response('failed', 'Missing password attribute', 400)

            if not name:
                return response('failed', 'Missing name attribute', 400)

            if not surname:
                return response('failed', 'Missing surname attribute', 400)

            if not birthday_value:
                return response('failed', 'Missing birthday attribute', 400)

            try:
                birthday = isoparse(str(birthday_value))
            except ValueError:
                return response('failed', 'Wrong birthday attribute type', 400)

            if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 4:
                user = User.get_by_email(email)
                if not user:
                    token = User(email, password, name, surname,
                                 birthday).save()
                    return response_auth('success', token, 201)
                else:
                    return response(
                        'failed',
                        'Failed, User already exists, Please sign In', 400)
            return response(
                'failed',
                'Missing or wrong email format or password is less than four characters',
                400)
        return response('failed', 'Content-type must be json', 400)
Ejemplo n.º 5
0
 def post(self):
     if request.content_type == 'application/json':
         post_data = request.get_json()
         email = post_data.get('email')
         password = post_data.get('password')
         if re.match(r"[^@]+@[^@]+\.[^@]+", email) and len(password) > 4:
             user = User.get_by_email(email)
             if user and bcrypt.check_password_hash(user.password,
                                                    password):
                 return response_auth('success', 'Successfully logged in',
                                      user.encode_auth_token(user.id), 200,
                                      user.id, email)
             return response(
                 'failed', 'User does not exist or password is incorrect',
                 401)
         return response(
             'failed',
             'Missing or wrong email format or password is less than four chars',
             401)
     return response('failed', 'Content-type must be json', 202)
Ejemplo n.º 6
0
def login():
    """
    Login a user if the supplied credentials are correct.
    :return: Http Json response
    """
    if request.content_type == 'application/json':
        post_data = request.get_json(force=True)
        email = post_data.get('email')
        password = User.encode_password(post_data.get('password'))

        if re.match(r"[^@]+@[^@]+\.[^@]+", email) and password:
            user = User.get_by_email(email)
            # password = User.encode_password(password)
            if user and not user.isEmailVerified:
                return response(
                    'failed',
                    'Email not verified. Sign-up again to verify email.', 400)
            if user and not user.isRemoved:

                if not (user.registeredOn or user.isActive):
                    user.password = password
                    user.sign_up(userObj=post_data)

                if password == user.password:
                    logger.bind(userId=user._id)
                    accessToken = user.get_auth_token()
                    return response_auth(
                        'success', 'Successfully logged In', accessToken,
                        os.getenv('AUTH_TOKEN_EXPIRY_SECONDS'), 200)
                else:
                    return response('failed', 'Wrong Password', 403)
            else:
                logger.error('USER_NOT_FOUND', email=email)
                return response('failed', 'User not found', 401)
        return response(
            'failed',
            'Missing or wrong email format or password is less than four characters',
            400)
    return response('failed', 'Content-type must be json', 402)
Ejemplo n.º 7
0
 def post(self):
     """
     Register a user, generate their token and add them to the database
     :return: Json Response with the user`s token
     """
     if request.content_type == 'application/json':
         post_data = request.get_json()
         f_name = post_data.get('first_name')
         l_name = post_data.get('last_name')
         username = post_data.get('username')
         password = post_data.get('password')
         school_id = post_data.get('school_id')
         if len(password
                ) > 4 and f_name and l_name and username and school_id:
             school = get_single_school(school_id)
             if not school:
                 return response(
                     'failed',
                     'School with id ' + school_id + ' does not exist', 401)
             user = User.get_by_username(username)
             if not user:
                 user = User(username=username,
                             password=password,
                             f_name=f_name,
                             l_name=l_name)
                 token = user.save_user(school)
                 return response_auth('success', 'Successfully registered',
                                      token, 201)
             else:
                 return response(
                     'failed',
                     'Failed, User already exists, Please sign In', 400)
         return response(
             'failed',
             'Missing or wrong username format or password is less than four characters',
             401)
     return response('failed', 'Content-type must be json', 400)
Ejemplo n.º 8
0
 def post(self):
     """
     Login a user if the supplied credentials are correct.
     :return: Http Json response
     """
     if request.content_type == 'application/json':
         post_data = request.get_json()
         username = post_data.get('username')
         password = post_data.get('password')
         if len(password) > 4:
             user = User.get_by_username(username=username)
             if user and bcrypt.check_password_hash(user.password,
                                                    password):
                 return response_auth('success', 'Successfully logged In',
                                      user.encode_auth_token(user.username),
                                      200)
             return response(
                 'failed', 'User does not exist or password is incorrect',
                 401)
         return response(
             'failed',
             'Missing or wrong username format or password is less than four characters',
             401)
     return response('failed', 'Content-type must be json', 400)
Ejemplo n.º 9
0
def refresh_token(current_user):
    return response_auth('success',
                         current_user.encode_auth_token(current_user.id), 200)