/********************************************************************* *文件说明: 用户管理模块 *作者: 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 //防止重复包含