/usr/lib/Wt/examples/qrlogin/QRAuth.C is in witty-examples 3.3.0-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | /*
* Copyright (C) 2010 Emweb bvba, Kessel-Lo, Belgium.
*
* See the LICENSE file for terms of use.
*/
#include <Wt/WApplication>
#include <Wt/WContainerWidget>
#include <Wt/WServer>
#include <Wt/Auth/AuthModel>
#include <Wt/Auth/PasswordService>
#include "QRAuthWidget.h"
#include "model/Session.h"
#include "model/QRTokenDatabase.h"
class AuthApplication : public Wt::WApplication
{
public:
AuthApplication(const Wt::WEnvironment& env)
: Wt::WApplication(env),
session_(appRoot() + "auth.db")
{
/*
* For better support for a mobile device. Note this requires
* progressive bootstrap being enabled (see wt_config.xml).
*/
addMetaHeader("viewport",
"width=device-width, initial-scale=1, maximum-scale=1");
session_.login().changed().connect(this, &AuthApplication::authEvent);
useStyleSheet("css/style.css");
messageResourceBundle().use(appRoot() + "templates");
QRAuthWidget *authWidget = new QRAuthWidget(session_.login());
Wt::Auth::AuthModel *model
= new Wt::Auth::AuthModel(Session::auth(), session_.users(), this);
model->addPasswordAuth(&Session::passwordAuth());
model->addOAuth(Session::oAuth());
authWidget->setModel(model);
authWidget->setRegistrationEnabled(true);
authWidget->configureQRAuth(Session::qrAuth(), session_.qrTokenDatabase());
authWidget->processEnvironment();
root()->addWidget(authWidget);
}
void authEvent() {
if (session_.login().loggedIn())
Wt::log("notice") << "User " << session_.login().user().id()
<< " logged in.";
else
Wt::log("notice") << "User logged out.";
}
private:
Session session_;
};
Wt::WApplication *createApplication(const Wt::WEnvironment& env)
{
return new AuthApplication(env);
}
int main(int argc, char **argv)
{
try {
Wt::WServer server(argv[0]);
server.setServerConfiguration(argc, argv, WTHTTP_CONFIGURATION);
server.addEntryPoint(Wt::Application, createApplication);
Session::configureAuth();
if (server.start()) {
Wt::WServer::waitForShutdown();
server.stop();
}
} catch (Wt::WServer::Exception& e) {
std::cerr << e.what() << std::endl;
} catch (std::exception &e) {
std::cerr << "exception: " << e.what() << std::endl;
}
}
|