2024-01-05 09:36:50 +00:00
|
|
|
// user management
|
|
|
|
//
|
|
|
|
// Date: 2024-01-04
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <base/utils.h>
|
|
|
|
#include <sane/sane_ex.h>
|
|
|
|
#include <map>
|
|
|
|
#include <sane_opt_json/base_opt.h>
|
|
|
|
|
|
|
|
|
|
|
|
// name password time-limit
|
|
|
|
//
|
|
|
|
// developer calc(dev-sn + login-times) 6min
|
|
|
|
//
|
|
|
|
// owner calc(dev-sn + login-times) 30min
|
|
|
|
//
|
|
|
|
// admin dev-sn 1hour
|
|
|
|
//
|
|
|
|
// user none, default level always
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
class user_priv : public sane_opt_provider
|
|
|
|
{
|
2024-03-12 08:25:55 +00:00
|
|
|
std::string hint_ = "";
|
2024-01-05 09:36:50 +00:00
|
|
|
std::string dev_sn_ = "01234567AABBCCDDEE";
|
2024-03-12 08:25:55 +00:00
|
|
|
std::string name_ = "";
|
|
|
|
std::string pwd_ = "";
|
2024-01-05 09:36:50 +00:00
|
|
|
|
|
|
|
int priv_ = USER_PRIVILEGE_COMMON;
|
|
|
|
|
|
|
|
bool login(void);
|
|
|
|
void reset_privilege(void);
|
|
|
|
|
|
|
|
public:
|
|
|
|
user_priv();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
~user_priv();
|
|
|
|
|
|
|
|
// sane_opt_provider
|
|
|
|
public:
|
|
|
|
virtual int set_value(const char* name, void* val) override;
|
2024-03-12 08:25:55 +00:00
|
|
|
virtual char* get_value(const char* name, void* value, size_t* size, int* err) override;
|
2024-01-05 09:36:50 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
bool has_privilege(int priv);
|
2024-03-12 08:25:55 +00:00
|
|
|
int get_current_privilege(void);
|
2024-01-05 09:36:50 +00:00
|
|
|
};
|
|
|
|
|