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);
|
|
};
|
|
|