1 // This may look like C code, but it's really -*- C++ -*-
2 /*
3  * Copyright (C) 2021 Emweb bv, Herent, Belgium.
4  *
5  * See the LICENSE file for terms of use.
6  */
7 #ifndef SESSION_H_
8 #define SESSION_H_
9 
10 #include <Wt/Auth/Login.h>
11 #include <Wt/Auth/Dbo/UserDatabase.h>
12 
13 #include <Wt/Dbo/Session.h>
14 #include <Wt/Dbo/ptr.h>
15 
16 #include "User.h"
17 
18 namespace dbo = Wt::Dbo;
19 
20 using UserDatabase = Wt::Auth::Dbo::UserDatabase<AuthInfo>;
21 
22 class Session : public dbo::Session
23 {
24 public:
25   static void configureAuth();
26   static void finalizeAuth();
27 
28   Session(const std::string& sqliteDb);
29 
30   dbo::ptr<User> user() const;
31 
32   Wt::Auth::AbstractUserDatabase& users();
login()33   Wt::Auth::Login& login() { return login_; }
34 
35   static const Wt::Auth::AuthService& auth();
36   static const Wt::Auth::PasswordService& passwordAuth();
37   static const std::vector<const Wt::Auth::Saml::Service *> saml();
38 
39 private:
40   std::unique_ptr<UserDatabase> users_;
41   Wt::Auth::Login login_;
42 };
43 
44 #endif // SSESSION_H_
45