Пример #1
0
    def will_handle_ui(self, request):
        if not self.active:
            # not active, not responsible
            return False

        from octoprint.server.util import loginUserFromApiKey, loginUserFromAuthorizationHeader, InvalidApiKeyException
        from octoprint.server.util.flask import passive_login

        # first try to login via api key & authorization header, just in case that's set
        try:
            if loginUserFromApiKey():
                # successful? No need for handling the UI
                return False
        except InvalidApiKeyException:
            pass  # ignored

        if loginUserFromAuthorizationHeader():
            # successful? No need for handling the UI
            return False

        # then try a passive login
        passive_login()
        if Permissions.STATUS.can() and Permissions.SETTINGS_READ.can():
            # Status & settings_read permission? No need to handle UI
            return False
        else:
            return True
Пример #2
0
def login():
	data = request.values
	if hasattr(request, "json") and request.json:
		data = request.json

	if octoprint.server.userManager.enabled and "user" in data and "pass" in data:
		username = data["user"]
		password = data["pass"]

		if "remember" in data and data["remember"] in valid_boolean_trues:
			remember = True
		else:
			remember = False

		if "usersession.id" in session:
			_logout(current_user)

		user = octoprint.server.userManager.findUser(username)
		if user is not None:
			if octoprint.server.userManager.checkPassword(username, password):
				if not user.is_active():
					return make_response(("Your account is deactivated", 403, []))

				if octoprint.server.userManager.enabled:
					user = octoprint.server.userManager.login_user(user)
					session["usersession.id"] = user.session
					g.user = user
				login_user(user, remember=remember)
				identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id()))
				return jsonify(user.asDict())
		return make_response(("User unknown or password incorrect", 401, []))

	elif "passive" in data:
		return passive_login()
	return NO_CONTENT
Пример #3
0
def login():
	if octoprint.server.userManager is not None and "user" in request.values.keys() and "pass" in request.values.keys():
		username = request.values["user"]
		password = request.values["pass"]

		if "remember" in request.values.keys() and request.values["remember"] == "true":
			remember = True
		else:
			remember = False

		if "usersession.id" in session:
			_logout(current_user)

		user = octoprint.server.userManager.findUser(username)
		if user is not None:
			if octoprint.server.userManager.checkPassword(username, password):
				if octoprint.server.userManager is not None:
					user = octoprint.server.userManager.login_user(user)
					session["usersession.id"] = user.get_session()
					g.user = user
				login_user(user, remember=remember)
				identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id()))
				return jsonify(user.asDict())
		return make_response(("User unknown or password incorrect", 401, []))

	elif "passive" in request.values:
		return passive_login()
	return NO_CONTENT
Пример #4
0
def login():
	data = request.values
	if hasattr(request, "json") and request.json:
		data = request.json

	if octoprint.server.userManager.enabled and "user" in data and "pass" in data:
		username = data["user"]
		password = data["pass"]

		if "remember" in data and data["remember"] in valid_boolean_trues:
			remember = True
		else:
			remember = False

		if "usersession.id" in session:
			_logout(current_user)

		user = octoprint.server.userManager.findUser(username)
		if user is not None:
			if octoprint.server.userManager.checkPassword(username, password):
				if not user.is_active():
					return make_response(("Your account is deactivated", 403, []))

				if octoprint.server.userManager.enabled:
					user = octoprint.server.userManager.login_user(user)
					session["usersession.id"] = user.session
					g.user = user
				login_user(user, remember=remember)
				identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id()))
				return jsonify(user.asDict())
		return make_response(("User unknown or password incorrect", 401, []))

	elif "passive" in data:
		return passive_login()
	return NO_CONTENT
Пример #5
0
def login():
    if octoprint.server.userManager.enabled and "user" in request.values.keys(
    ) and "pass" in request.values.keys():
        username = request.values["user"]
        password = request.values["pass"]

        if "remember" in request.values.keys(
        ) and request.values["remember"] == "true":
            remember = True
        else:
            remember = False

        if "usersession.id" in session:
            _logout(current_user)

        user = octoprint.server.userManager.findUser(username)
        if user is not None:
            if octoprint.server.userManager.checkPassword(username, password):
                if octoprint.server.userManager.enabled:
                    user = octoprint.server.userManager.login_user(user)
                    session["usersession.id"] = user.get_session()
                    g.user = user
                login_user(user, remember=remember)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(user.get_id()))
                return jsonify(user.asDict())
        return make_response(("User unknown or password incorrect", 401, []))

    elif "passive" in request.values:
        return passive_login()
    return NO_CONTENT
Пример #6
0
	def will_handle_ui(self, request):
		if not self.active:
			# not active, not responsible
			return False

		from octoprint.server.util import loginUserFromApiKey, loginUserFromAuthorizationHeader, InvalidApiKeyException
		from octoprint.server.util.flask import passive_login

		# first try to login via api key & authorization header, just in case that's set
		try:
			if loginUserFromApiKey():
				# successful? No need for handling the UI
				return False
		except InvalidApiKeyException:
			pass # ignored

		if loginUserFromAuthorizationHeader():
			# successful? No need for handling the UI
			return False

		# then try a passive login
		result = passive_login()
		if hasattr(result, "status_code") and result.status_code == 200:
			# successful? No need for handling the UI
			return False
		else:
			return True
Пример #7
0
    def will_handle_ui(self, request):
        if not self.active:
            # not active, not responsible
            return False

        from octoprint.server.util import loginUserFromApiKey, loginUserFromAuthorizationHeader, InvalidApiKeyException
        from octoprint.server.util.flask import passive_login

        # first try to login via api key & authorization header, just in case that's set
        try:
            if loginUserFromApiKey():
                # successful? No need for handling the UI
                return False
        except InvalidApiKeyException:
            pass  # ignored

        if loginUserFromAuthorizationHeader():
            # successful? No need for handling the UI
            return False

        # then try a passive login
        result = passive_login()
        if hasattr(result, "status_code") and result.status_code == 200:
            # successful? No need for handling the UI
            return False
        else:
            return True
Пример #8
0
	def will_handle_ui(self, request):
		from octoprint.server.util.flask import passive_login

		result = passive_login()
		if hasattr(result, "status_code") and result.status_code == 200:
			# passive login successful, no need to handle that
			return False
		else:
			return True
Пример #9
0
def login():
    data = request.get_json()
    if not data:
        data = request.values

    if octoprint.server.userManager.enabled and "user" in data and "pass" in data:
        username = data["user"]
        password = data["pass"]

        if "remember" in data and data["remember"] in valid_boolean_trues:
            remember = True
        else:
            remember = False

        if "usersession.id" in session:
            _logout(current_user)

        user = octoprint.server.userManager.find_user(username)
        if user is not None:
            if octoprint.server.userManager.check_password(username, password):
                if not user.is_active:
                    return make_response(
                        ("Your account is deactivated", 403, []))

                if octoprint.server.userManager.enabled:
                    user = octoprint.server.userManager.login_user(user)
                    session["usersession.id"] = user.session
                    g.user = user
                login_user(user, remember=remember)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(user.get_id()))

                remote_addr = get_remote_address(request)
                logging.getLogger(__name__).info(
                    "Actively logging in user {} from {}".format(
                        user.get_id(), remote_addr))

                response = user.as_dict()
                response["_is_external_client"] = s().getBoolean(["server", "ipCheck", "enabled"]) \
                                                  and not util_net.is_lan_address(remote_addr,
                                                                                  additional_private=s().get(["server", "ipCheck", "trustedSubnets"]))

                r = make_response(jsonify(response))
                r.delete_cookie("active_logout")

                eventManager().fire(Events.USER_LOGGED_IN,
                                    payload=dict(username=user.get_id()))

                return r

        return make_response(("User unknown or password incorrect", 403, []))

    elif "passive" in data:
        return passive_login()

    return make_response(
        "Neither user and pass attributes nor passive flag present", 400)
Пример #10
0
	def will_handle_ui(self, request):
		if self._user_manager.enabled and not self._user_manager.hasBeenCustomized():
			# ACL hasn't been configured yet, make an exception
			return False

		from octoprint.server.util.flask import passive_login

		result = passive_login()
		if hasattr(result, "status_code") and result.status_code == 200:
			# passive login successful, no need to handle that
			return False
		else:
			return True
Пример #11
0
def login():
    data = request.values
    if hasattr(request, "json") and request.json:
        data = request.json

    if octoprint.server.userManager.enabled and "user" in data and "pass" in data:
        username = data["user"]
        password = data["pass"]

        if "remember" in data and data["remember"] in valid_boolean_trues:
            remember = True
        else:
            remember = False

        if "usersession.id" in session:
            _logout(current_user)

        user = octoprint.server.userManager.findUser(username)
        if user is not None:
            if octoprint.server.userManager.checkPassword(username, password):
                if not user.is_active():
                    return make_response(
                        ("Your account is deactivated", 403, []))

                if octoprint.server.userManager.enabled:
                    user = octoprint.server.userManager.login_user(user)
                    session["usersession.id"] = user.session
                    g.user = user
                login_user(user, remember=remember)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(user.get_id()))

                remote_addr = get_remote_address(request)
                logging.getLogger(__name__).info(
                    "Actively logging in user {} from {}".format(
                        user.get_id(), remote_addr))

                response = user.asDict()
                response["_is_external_client"] = s().getBoolean(["server", "ipCheck", "enabled"]) \
                                                  and not util_net.is_lan_address(remote_addr,
                                                                                  additional_private=s().get(["server", "ipCheck", "trustedSubnets"]))
                return jsonify(response)

        return make_response(("User unknown or password incorrect", 401, []))

    elif "passive" in data:
        return passive_login()
    return NO_CONTENT
Пример #12
0
def login():
	data = request.values
	if hasattr(request, "json") and request.json:
		data = request.json

	if octoprint.server.userManager.enabled and "user" in data and "pass" in data:
		username = data["user"]
		password = data["pass"]

		if "remember" in data and data["remember"] in valid_boolean_trues:
			remember = True
		else:
			remember = False

		if "usersession.id" in session:
			_logout(current_user)

		user = octoprint.server.userManager.findUser(username)
		if user is not None:
			if octoprint.server.userManager.checkPassword(username, password):
				if not user.is_active():
					return make_response(("Your account is deactivated", 403, []))

				if octoprint.server.userManager.enabled:
					user = octoprint.server.userManager.login_user(user)
					session["usersession.id"] = user.session
					g.user = user
				login_user(user, remember=remember)
				identity_changed.send(current_app._get_current_object(), identity=Identity(user.get_id()))

				remote_addr = get_remote_address(request)
				logging.getLogger(__name__).info("Actively logging in user {} from {}".format(user.get_id(), remote_addr))

				response = user.asDict()
				response["_is_external_client"] = s().getBoolean(["server", "ipCheck", "enabled"]) \
				                                  and not util_net.is_lan_address(remote_addr,
				                                                                  additional_private=s().get(["server", "ipCheck", "trustedSubnets"]))
				return jsonify(response)

		return make_response(("User unknown or password incorrect", 401, []))

	elif "passive" in data:
		return passive_login()
	return NO_CONTENT