53 lines
936 B
C
53 lines
936 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::map<std::string, int> login_times_;
|
||
|
std::string cfg_file_;
|
||
|
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;
|
||
|
|
||
|
public:
|
||
|
bool has_privilege(int priv);
|
||
|
int get_current_user_login_times(void);
|
||
|
};
|
||
|
|