newtx/sdk/sane_opt_json/user.h

53 lines
987 B
C++

// 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
{
std::string hint_ = "";
std::string dev_sn_ = "01234567AABBCCDDEE";
std::string name_ = "";
std::string pwd_ = "";
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;
virtual char* get_value(const char* name, void* value, size_t* size, int* err) override;
public:
bool has_privilege(int priv);
int get_current_privilege(void);
};