Web framework C++  2.0.0
Simple web framework on c++ designed to easily create web pages, etc
auth_middleware.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <functional>
4 #include "middleware.h"
5 #include "entity.h"
6 #include "auth_strategy.h"
7 
16 class AuthMiddleware : public Middleware {
17  const char * cookieMiddlewareID;
18  const char * jsonMiddlewareID;
19  Entity * currentUser = nullptr;
20  AuthStrategy * strategy = nullptr;
21  std::vector<AuthStrategy *> allStrategies;
22  std::function<Entity *(std::string &, std::string &)> onLogin = nullptr;
23  std::function<std::string(Entity *)> onSerialize = nullptr;
24  std::function<Entity *(std::string &)> onDeserialize = nullptr;
25 public:
36  AuthMiddleware(const char * nameID, const char * cookieID, const char * jsonID)
37  : Middleware(nameID), cookieMiddlewareID(cookieID), jsonMiddlewareID(jsonID), allStrategies() {}
38 
42  ~AuthMiddleware() override;
43 
52  void setOnSerialize(std::function<std::string(Entity *)> serialize);
53 
62  void setOnDeserialize(std::function<Entity *(std::string &)> deserialize);
63 
71  void setOnLogin(std::function<Entity *(std::string &, std::string &)> login);
72 
84  bool login(std::string & userName, std::string & password);
85 
92  bool autoExec() override;
93 
97  void exec() override;
98 
102  void clear() override { Middleware::clear(); setUser(nullptr); }
103 
110  Entity * getUser();
111 
119  void addStrategy(AuthStrategy * strategy);
120 private:
127  void setUser(Entity * user);
128 
135  void setStrategy(AuthStrategy * strategy);
136 };
virtual void clear()
void setOnDeserialize(std::function< Entity *(std::string &)> deserialize)
void setOnSerialize(std::function< std::string(Entity *)> serialize)
bool autoExec() override
Interface for auth strategy template.
Definition: auth_strategy.h:13
void exec() override
bool login(std::string &userName, std::string &password)
Cloneable interface of object wth value and serializable method.
Definition: entity.h:10
class wrapper for middleware
Definition: middleware.h:14
void clear() override
Definition: auth_middleware.h:102
void addStrategy(AuthStrategy *strategy)
~AuthMiddleware() override
Entity * getUser()
void setOnLogin(std::function< Entity *(std::string &, std::string &)> login)
This middleware performs authentication on your application.
Definition: auth_middleware.h:16
AuthMiddleware(const char *nameID, const char *cookieID, const char *jsonID)
Definition: auth_middleware.h:36