10#include <QLoggingCategory>
11#include <QTemporaryFile>
21StoreHtpasswd::~StoreHtpasswd()
27 const QString username = user.
value(QStringLiteral(
"username"));
30 tmp.setAutoRemove(
false);
32 qCWarning(CUTELYST_UTILS_AUTH) <<
"Failed to open temporary file for writing";
37 QFile file(m_filename);
39 while (!file.
atEnd()) {
44 user.
value(QStringLiteral(
"password")).toLatin1().replace(
':',
',') +
'\n';
54 user.
value(QStringLiteral(
"password")).toLatin1().replace(
':',
',') +
60 qCWarning(CUTELYST_UTILS_AUTH) <<
"Failed to remove auth file for replacement";
64 if (!tmp.rename(m_filename)) {
65 qCWarning(CUTELYST_UTILS_AUTH) <<
"Failed to rename temporary file";
73 const QString username = userInfo.
value(QStringLiteral(
"username"));
75 QFile file(m_filename);
77 while (!file.
atEnd()) {
80 if (parts.
size() >= 2 && !parts.
first().startsWith(
'#') &&
82 ret.insert(QStringLiteral(
"username"), username);
85 ret.insert(QStringLiteral(
"password"),
105#include "moc_htpasswd.cpp"
AuthenticationStore(QObject *parent=nullptr)
void setId(const QVariant &id)
Sets the unique user id restored from the store.
virtual AuthenticationUser findUser(Context *c, const ParamsMultiMap &userInfo) final
StoreHtpasswd(const QString &name, QObject *parent=nullptr)
virtual AuthenticationUser fromSession(Context *c, const QVariant &frozenUser) final
void addUser(const ParamsMultiMap &user)
virtual QVariant forSession(Context *c, const AuthenticationUser &user) final
The Cutelyst namespace holds all public Cutelyst API.
QMultiMap< QString, QString > ParamsMultiMap
QByteArray & replace(QByteArrayView before, QByteArrayView after)
QList< QByteArray > split(char sep) const const
QByteArray trimmed() const const
bool exists(const QString &fileName)
bool open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags)
virtual bool atEnd() const const override
virtual void close() override
QByteArray readLine(qint64 maxSize)
QList< T >::const_reference at(qsizetype i) const const
qsizetype size() const const
T value(const Key &key, const T &defaultValue) const const
QObject * parent() const const
QString fromLatin1(QByteArrayView str)
QByteArray toLatin1() const const
QString toString() const const