#ifndef FZ_AUTHENTICATION_SYSTEM_IDENTITY_PROVIDER_HPP
#define FZ_AUTHENTICATION_SYSTEM_IDENTITY_PROVIDER_HPP

#include <libfilezilla/string.hpp>
#include "../logger/modularized.hpp"

#include "identity_provider.hpp"

namespace fz::authentication {

class system_identity_provider: public identity_provider
{
public:
	system_identity_provider(logger_interface &logger = get_null_logger());

	error get_user_info(std::string_view username, const parameters &parameters, user_info &uinfo) override;
	const std::string &get_name() const override;
	user_properties get_default_user_properties() const override;
	std::optional<user_properties> get_properties(const parameters &parameters) const override;

	static const std::string name;

private:
	logger::modularized logger_;
};

}
#endif // FZ_AUTHENTICATION_SYSTEM_IDENTITY_PROVIDER_HPP
