|
|
/*********************************************************************
|
|
|
*文件说明: 用户管理模块
|
|
|
*作者: logos
|
|
|
*日期: 2014/01/22
|
|
|
*修改日志: 2014/01/22 logos create
|
|
|
***********************************************************************/
|
|
|
#pragma once
|
|
|
#ifndef DLL_INCLUDE_LOGIN_H
|
|
|
#define DLL_INCLUDE_LOGIN_H
|
|
|
|
|
|
#ifndef WINAPI
|
|
|
#define WINAPI __stdcall
|
|
|
#endif
|
|
|
|
|
|
#ifndef EXPORT_C
|
|
|
#define EXPORT_C extern "C"
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_NAME_LEN
|
|
|
#define MAX_NAME_LEN 32
|
|
|
#endif
|
|
|
|
|
|
#ifndef MAX_PWD_LEN
|
|
|
#define MAX_PWD_LEN 16
|
|
|
#endif
|
|
|
|
|
|
#define MAX_LIMIT_CNT 32 //权限项最大值
|
|
|
|
|
|
enum EMUserGroup
|
|
|
{//用户等级
|
|
|
EUser_Level0 = 0, //未登录
|
|
|
EUser_Level1, //OP
|
|
|
EUser_Level2, //admin
|
|
|
EUser_Level3, //system
|
|
|
EUser_Level4, //root
|
|
|
};
|
|
|
|
|
|
struct TUser
|
|
|
{//用户信息
|
|
|
char name[MAX_NAME_LEN]; //用户名
|
|
|
unsigned int group; //组别
|
|
|
unsigned int limit; //权限 -- 位
|
|
|
};
|
|
|
|
|
|
struct TUserLimit
|
|
|
{//用户权限
|
|
|
char name[MAX_NAME_LEN]; //名称
|
|
|
char desc[MAX_NAME_LEN]; //标题
|
|
|
};
|
|
|
|
|
|
enum EM_ERR_USER
|
|
|
{//错误代码
|
|
|
ERR_NO_LOGIN = -1100, //未登录
|
|
|
ERR_NO_LIMIT, //无权限
|
|
|
ERR_USER_EXIST, //用户已存在
|
|
|
ERR_USER_TOO_LONG, //用户名过长
|
|
|
ERR_PWD_TOO_LONG, //密码过长
|
|
|
ERR_INVALID_USER, //用户名无效
|
|
|
ERR_INVALID_PWD, //密码无效
|
|
|
ERR_INVALID_LIMIT, //无效的权限项
|
|
|
ERR_REPEAT_LIMIT, //重复的权限项
|
|
|
ERR_LIMIT_OVER, //权限设置超限
|
|
|
};
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 初始化模块
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI user_init();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 释放模块 资源
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI user_deinit();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 用户登陆,成功后调用get_cur_limit获取权限
|
|
|
*Intput: lpUser 用户名
|
|
|
lpPwd 密码
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI login(const char* lpUser, const char* lpPwd);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 用户退出登陆
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI logout();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 修改用户信息, 权限足够才能调用
|
|
|
*Intput: lpOldUser 要修改的用户名
|
|
|
lpNewUser 新的用户名 默认值不修改
|
|
|
group 新的组别 admin/system 默认值不修改
|
|
|
limit 新的权限 默认值不修改
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI change_user(const char* lpOldUser, const char* lpNewUser = 0, unsigned int group = 0, unsigned int limit = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 修改用户密码
|
|
|
*Intput: lpUser 用户名
|
|
|
lpOldPwd 旧密码
|
|
|
lpNewPwd 新密码
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI change_pwd(const char* lpUser, const char* lpOldPwd, const char* lpNewPwd);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 清空密码, 权限足够才能调用
|
|
|
*Intput: lpUser 用户名
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI clear_pwd(const char* lpUser);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 增加一个用户
|
|
|
*Intput: lpUser 用户名
|
|
|
lpPwd 密码
|
|
|
group 组别 admin/system
|
|
|
limit 权限
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI add_user(const char* lpUser, const char* lpPwd, unsigned int group, unsigned int limit);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 删除一个用户
|
|
|
*Intput: lpUser 用户名
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI del_user(const char* lpUser);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取用户列表
|
|
|
*Intput: pstUser 用户缓冲区,可以传NULL获取数量
|
|
|
*Output: pstUser 用户缓冲区
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI get_user_list(TUser* pstUser = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取当前用户名
|
|
|
*Intput: NULL
|
|
|
*Output: NULL
|
|
|
*Return: 返回当前用户名,失败返回NULL
|
|
|
******************************************************/
|
|
|
EXPORT_C const char* WINAPI get_cur_user();
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取当前用户名
|
|
|
*Intput: NULL
|
|
|
*Output: pname 从这里返回名称
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI get_cur_users(char* pname);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取用户组别
|
|
|
*Intput: pszuser 用户名 传入空标识当前用户
|
|
|
*Output: NULL
|
|
|
*Return: 返回当前用户的组别
|
|
|
******************************************************/
|
|
|
EXPORT_C unsigned int WINAPI get_user_group(const char* pszuser = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取用户权限
|
|
|
*Intput: pszuser 用户名 传入空标识当前用户
|
|
|
*Output: NULL
|
|
|
*Return: 返回当前用户的权限
|
|
|
******************************************************/
|
|
|
EXPORT_C unsigned int WINAPI get_user_limit(const char* pszuser = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 判断当前用户是否有某项权限
|
|
|
*Intput: pszname 权限项名称
|
|
|
pszuser 用户名 传入空标识当前用户
|
|
|
*Output: NULL
|
|
|
*Return: 返回1标识有,0标识没有
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI chk_user_limit(const char* pszname, const char* pszuser = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 增加一项权限,最多支持32项权限
|
|
|
*Intput: index 索引,区间[0,32)
|
|
|
pszname 名称,不能重复
|
|
|
pszdesc 描述标题,显示在界面上的,若为空则显示名称
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
*PS: 在需要检测权限的代码中使用chk_user_limit函数,
|
|
|
可根据权限名判断当前用户是否有该项权限
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI add_limit(const char* pszname, const char* pszdesc = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 删除其中一项权限
|
|
|
*Intput: index 自定义权限索引
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
*PS: 必须保留最少一个权限项
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI del_limit(int index);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取权限项列表
|
|
|
*Intput: pstlimit 权限项数组,可以传NULL
|
|
|
*Output: pstlimit 权限项数组
|
|
|
*Return: 成功权限项数量, 失败返回错误码<0
|
|
|
*PS: 先传NULL获取数组大小,new申请内存传入指针获取列表
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI get_limit_list(TUserLimit* pstlimit = 0);
|
|
|
|
|
|
/****************************************************
|
|
|
*Function: 获取权限项描述-也可判断某权限项是否存在
|
|
|
*Intput: pszname 权限名称
|
|
|
pszdesc 权限描述,可以传NULL
|
|
|
*Output: NULL
|
|
|
*Return: 成功返回0, 失败返回错误码<0
|
|
|
******************************************************/
|
|
|
EXPORT_C int WINAPI get_limit_info(const char* pszname, char* pszdesc = 0);
|
|
|
|
|
|
#endif //防止重复包含
|