def register_new_user(self, request):
        register_form = request.json if request.is_json else request.form
        register_dict = dict(register_form)
        form_register_fields = ["firstName", 'lastName', 'email', 'password', 'sectorId']
        form_valid_res = form_is_full(register_dict, form_register_fields)

        if form_valid_res.isSuccess:
            firstName = register_dict["firstName"]
            lastName = register_dict['lastName']
            email = register_dict['email']
            password = register_dict['password']
            sectorId = register_dict['sectorId']

            user = User(firstName=firstName, lastName=lastName, email=email, password=password, sectorId=sectorId)

            if user_is_valid(user).isSuccess:
                if password_is_valid(user.password).isSuccess:
                    if sector_id_is_valid(user.sectorId).isSuccess:
                        password_encrypt = PasswordEncryption.hash_salt(password=password, salt=None)
                        user.password = password_encrypt
                        if DAL.save_new_user_to_db(user) and DAL.save_user_password_history_to_db(user):
                            return AuthorizationResult(isSuccess=True, Message="User created successfully. ")
                    else:
                        return sector_id_is_valid(user.sectorId)
                else:
                    return password_is_valid(user.password)
            else:
                return AuthorizationResult(isSuccess=False, Message="User created failed. ")
        else:
            return form_valid_res
예제 #2
0
def start_login_process(email, enteredPassword):
    user = UserProvider.get_user_from_db_by_email(email)
    if user:
        if verify_user_password(user, enteredPassword):
            user.invalidLoginAttempt = 0
            return user, AuthorizationResult(isSuccess=verify_user_password(user, enteredPassword), Message="User Login!")
        else:
            #if hasattr(user, 'lockEndTime'):
            if user.lockEndTime != None and user.lockEndTime > datetime.now():
                return None, AuthorizationResult(isSuccess=False,
                                                     Message=Config.USER_IS_LOCKED_UNTIL + str(user.lockEndTime))
            else:
                user.invalidLoginAttempt = user.invalidLoginAttempt + 1
                if user.invalidLoginAttempt >= Config.LOGIN_LIMIT_TRYING:
                    user.lockEndTime = (datetime.now() + timedelta(minutes=15))  # .strftime("%B %d, %Y %I:%M%p")
                    user.invalidLoginAttempt = 0
                DAL.save_new_user_to_db(user)
    return None, AuthorizationResult(isSuccess=False, Message=Config.BAD_USER_NAME_OR_PASSWORD)
예제 #3
0
def start_change_password(user_id,change_password_dict):
    enteredPassword = change_password_dict['password']
    user = UserProvider.get_user_from_db_by_id(user_id)
    occurrences = Config.HISTORY_OF_THE_PASSWORDS
    res_password_is_valid = password_is_valid(enteredPassword)
    if res_password_is_valid.isSuccess:
        print(was_password_used_in_the_last_given_occurrences(user, enteredPassword, occurrences))
        if was_password_used_in_the_last_given_occurrences(user, enteredPassword, occurrences):
            return AuthorizationResult(isSuccess=False, Message=Config.PASSWORD_WAS_USED_IN_THE_LAST_GIVEN_OCCURRENCES)
        else:
            password_encrypt = PasswordEncryption.hash_salt(password=enteredPassword, salt=None)
            user.password = password_encrypt
            if DAL.save_new_user_to_db(user) and DAL.save_user_password_history_to_db(user):
                return AuthorizationResult(isSuccess=True, Message=Config.PASSWORD_CHANGE_SUCCESS)
            else:
                return AuthorizationResult(isSuccess=False, Message=Config.PASSWORD_CHANGE_FAILED)
            # else:
            # return AuthorizationResult(isSuccess=False, Message=Config.PASSWORD_CHANGE_FAILED)
    else:
        return res_password_is_valid