REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
|
Loading...
Searching...
No Matches
auth.h
Go to the documentation of this file.
150 endpoints.remove_if([](EndpointInformation &a) { return a.last_failure.expired(max_waiting_time); });
180struct Gatekeeper : public nvmconfig::PersistentSettings, public utils::HeapSingleton<Gatekeeper> {
196 int lock_acquire(JsonObjectConst msg_in, JsonObject &msg_out, AuthentificationContext &user_context);
197 int lock_release(JsonObjectConst msg_in, JsonObject &msg_out, AuthentificationContext &user_context);
213 void toJson(JsonObject target, nvmconfig::Context c = nvmconfig::Context::Flash) const override {
249 return !Gatekeeper::get().enable_auth || !Gatekeeper::get().enable_users || auth().can_do(_user, task);
254 return (can_do(SecurityLevel::RequiresAdmin) && !auth().can_do(other, SecurityLevel::RequiresAdmin)) ||
bool hasBetterClearenceThen(const User &other) const
Definition auth.h:253
bool can_do(SecurityLevel task) const
Definition auth.h:244
AuthentificationContext()
Definition auth.h:240
void set_remote_identifier(RemoteIdentifier r)
Definition auth.h:242
AuthentificationContext(User user)
Definition auth.h:238
size_t printTo(Print &p) const override
Definition auth.h:262
Simple failed login backoff to avoid login brute force attempts.
Definition auth.h:135
utils::time_ms failure_time(const IPAddress &ip)
Definition auth.h:161
Some basic information about the remote station. We interpret 0.0.0.0 als a local terminal.
Definition auth.h:92
A simple plaintext Username+Password authentification scheme backed against the EEPROM UserSettings.
Definition auth.h:52
void toJson(JsonObject target) const
Definition auth.cpp:53
bool is_valid(const User &user, const std::string &pwd)
Definition auth.h:67
static constexpr const char * admin
The admin user is singular and has all permissions.
Definition auth.h:58
void fromJson(JsonObjectConst serialized_conf)
Definition auth.cpp:46
bool can_do(const User &user, SecurityLevel task) const
Definition auth.h:71
Define singletons which are not static-space allocated (and thus consume valuable ICTM space).
Definition singleton.h:46
@ RequiresAdmin
@ RequiresLogin
@ RequiresNothing
static constexpr utils::time_ms max_lock_duration
Definition auth.h:109
void toJson(JsonObject target, nvmconfig::Context c=nvmconfig::Context::Flash) const override
Definition auth.h:213
int lock_release(JsonObjectConst msg_in, JsonObject &msg_out, AuthentificationContext &user_context)
Definition auth.cpp:121
bool enable_users
Enable/disable login at all, i.e. the user-password authentification.
Definition auth.h:182
void fromJson(JsonObjectConst src, nvmconfig::Context c=nvmconfig::Context::Flash) override
Definition auth.h:204
int lock_acquire(JsonObjectConst msg_in, JsonObject &msg_out, AuthentificationContext &user_context)
Definition auth.cpp:109
int login(JsonObjectConst msg_in, JsonObject &msg_out, AuthentificationContext &user_context)
Carrys out an actual login.
Definition auth.cpp:67
Definition persistent.h:28
bool expired(time_ms period) const
Returns true if period expired, false otherwise.
Definition durations.h:23