Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions src/libsync/creds/oauth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include <QBuffer>
#include <QDesktopServices>
#include <QFile>
#include <QIcon>
#include <QJsonArray>
#include <QJsonDocument>
Expand Down Expand Up @@ -60,20 +61,19 @@ auto defaultOauthPromtValue()

QString renderHttpTemplate(const QString &title, const QString &content)
{
const QString icon = [] {
const auto img = Theme::instance()->aboutIcon().pixmap(256).toImage();
QByteArray out;
QBuffer buffer(&out);
img.save(&buffer, "PNG");
return QString::fromUtf8(out.toBase64());
}();
auto loadFile = [](const QString &font) {
QFile f(font);
OC_ASSERT(f.open(QFile::ReadOnly));
return f.readAll().toBase64();
};
return Resources::Template::renderTemplateFromFile(QStringLiteral(":/client/resources/oauth/oauth.html.in"),
{
{QStringLiteral("TITLE"), title}, //
{QStringLiteral("CONTENT"), content}, //
{QStringLiteral("ICON"), icon}, //
{QStringLiteral("BACKGROUND_COLOR"), Theme::instance()->wizardHeaderBackgroundColor().name()}, //
{QStringLiteral("FONT_COLOR"), Theme::instance()->wizardHeaderTitleColor().name()} //
{"TITLE", title}, //
{"CONTENT", content}, //
{"ICON", loadFile(QStringLiteral(":/client/OpenCloud/theme/universal/wizard_logo.svg"))}, //
{"BACKGROUND_COLOR", Theme::instance()->wizardHeaderBackgroundColor().name()}, //
{"FONT_COLOR", Theme::instance()->wizardHeaderTitleColor().name()}, //
{"FONT", loadFile(QStringLiteral(":/client/OpenCloud/theme/OpenCloud500-Regular.woff2"))} //
});
}

Expand Down Expand Up @@ -394,11 +394,11 @@ void OAuth::startAuthentication()
// Connected with the wrong user
qCWarning(lcOauth) << "We expected the user" << _idToken.preferred_username() << "but the server answered with user"
<< idToken.preferred_username();
const QString message = tr("<h1>Wrong user</h1>"
const QString message = tr("<h1>Incorrect user</h1>"
"<p>You logged-in with user <em>%1</em>, but must login with user <em>%2</em>.<br>"
"Please return to the %3 client and restart the authentication.</p>")
"Please return to the %3 and restart the authentication.</p>")
.arg(idToken.preferred_username(), _idToken.preferred_username(), Theme::instance()->appNameGUI());
httpReplyAndClose(socket, QStringLiteral("403 Forbidden"), tr("Wrong user"), message);
httpReplyAndClose(socket, QStringLiteral("403 Forbidden"), tr("Incorrect user"), message);
Q_EMIT result(Error);
} else {
setIdToken(std::move(idToken));
Expand All @@ -412,8 +412,8 @@ void OAuth::startAuthentication()

void OAuth::finalize(const QPointer<QTcpSocket> &socket, const QString &accessToken, const QString &refreshToken, const QUrl &messageUrl)
{
const QString loginSuccessfulHtml = tr("<h1>Login Successful</h1><p>You can close this window.</p>");
const QString loginSuccessfulTitle = tr("Login Successful");
const QString loginSuccessfulHtml = tr("<h1>Login successful</h1><p>You can close this window.</p>");
const QString loginSuccessfulTitle = tr("Login successful");
if (messageUrl.isValid()) {
httpReplyAndClose(socket, QStringLiteral("303 See Other"), loginSuccessfulTitle, loginSuccessfulHtml,
{QStringLiteral("Location: %1").arg(QString::fromUtf8(messageUrl.toEncoded()))});
Expand Down
1 change: 1 addition & 0 deletions src/resources/core_theme.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@
<file alias="theme/dark/state-sync.svg">theme/universal/opencloud-icon.svg</file>
<file>theme/universal/opencloud-icon.svg</file>
<file>theme/universal/wizard_logo.svg</file>
<file>theme/OpenCloud500-Regular.woff2</file>
</qresource>
</RCC>
12 changes: 10 additions & 2 deletions src/resources/oauth/oauth.html.in
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,18 @@ html, body {
margin: 0;
}

@font-face {
font-family: OpenCloud;
src: url('data:font/woff2;base64,@{FONT}') format('woff2');
font-weight: normal;
font-style: normal;

}

body {
background-color: @{BACKGROUND_COLOR};
color: @{FONT_COLOR};
font-family: "Noto Sans", OpenSans, Verdana, Helvetica, Arial, sans-serif;
font-family: OpenCloud, "Noto Sans", OpenSans, Verdana, Helvetica, Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
Expand All @@ -36,7 +44,7 @@ body {
<body>
<div class="row">
<div class="content">
<img src="data:image/png;base64,@{ICON}" />
<img src="data:image/svg+xml;base64,@{ICON}" />
@{CONTENT}
</div>
</div>
Expand Down
6 changes: 3 additions & 3 deletions src/resources/template.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ using namespace OCC::Resources;

Q_LOGGING_CATEGORY(lcResourcesTeplate, "sync.resoruces.template", QtInfoMsg)

QString Template::renderTemplateFromFile(const QString &filePath, const QMap<QString, QString> &values)
QString Template::renderTemplateFromFile(const QString &filePath, const QMap<QAnyStringView, QAnyStringView> &values)
{
return renderTemplate(
[&] {
Expand All @@ -36,7 +36,7 @@ QString Template::renderTemplateFromFile(const QString &filePath, const QMap<QSt
values);
}

QString Template::renderTemplate(QString &&templ, const QMap<QString, QString> &values)
QString Template::renderTemplate(QString &&templ, const QMap<QAnyStringView, QAnyStringView> &values)
{
static const QRegularExpression pattern(QStringLiteral("@{([^{}]+)}"));
const auto replace = [&templ, &values](QRegularExpressionMatchIterator it) {
Expand All @@ -50,7 +50,7 @@ QString Template::renderTemplate(QString &&templ, const QMap<QString, QString> &
}
return true;
}());
templ.replace(match.captured(0), values.value(match.captured(1)));
templ.replace(match.captured(0), values.value(match.captured(1)).toString());
}
};

Expand Down
4 changes: 2 additions & 2 deletions src/resources/template.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ namespace Resources {
/**
* Replace all occurances of @{} values in template with the values from values
*/
OPENCLOUD_RESOURCES_EXPORT QString renderTemplateFromFile(const QString &filePath, const QMap<QString, QString> &values);
OPENCLOUD_RESOURCES_EXPORT QString renderTemplate(QString &&templ, const QMap<QString, QString> &values);
OPENCLOUD_RESOURCES_EXPORT QString renderTemplateFromFile(const QString &filePath, const QMap<QAnyStringView, QAnyStringView> &values);
OPENCLOUD_RESOURCES_EXPORT QString renderTemplate(QString &&templ, const QMap<QAnyStringView, QAnyStringView> &values);
};
}
}
Binary file added src/resources/theme/OpenCloud500-Regular.woff2
Binary file not shown.
4 changes: 2 additions & 2 deletions test/testconnectionvalidator/testconnectionvalidator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@ class TestConnectionValidator : public QObject
enum class FailStage { Invalid, StatusPhp, Capabilities, UserInfo };

// we can't use QMap direclty with QFETCH
using Values = QMap<QString, QString>;
using Values = QMap<QAnyStringView, QAnyStringView>;
auto getPayload(const QString &payloadName)
{
QFile f(QStringLiteral(SOURCEDIR "/test/testconnectionvalidator/%1").arg(payloadName));
Q_ASSERT(f.open(QIODevice::ReadOnly));
return f.readAll();
}

auto getPayloadTemplated(const QString &payloadName, const QMap<QString, QString> &values)
auto getPayloadTemplated(const QString &payloadName, const Values &values)
{
return Resources::Template::renderTemplate(QString::fromUtf8(getPayload(payloadName)), values).toUtf8();
}
Expand Down
Loading