Add aaa-12 新增删除用户、删除用户组、移动分组
RCA: SOL: 修改人:zhouzian 检视人:zhouzian
This commit is contained in:
parent
97a9c13cd3
commit
45bf923278
|
@ -99,6 +99,103 @@ static ret_code user_config_add_proc(uint source, uint config_type,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 删除用户-处理
|
||||
* iuput格式:
|
||||
* {
|
||||
* "type": 1,
|
||||
* "data": ["用户01", "用户02", "用户03"]
|
||||
* }
|
||||
*
|
||||
* output格式:
|
||||
* [{
|
||||
* "用户01": 0
|
||||
* },
|
||||
* {
|
||||
* "用户02": 1
|
||||
* },
|
||||
* {
|
||||
* "用户03": 2
|
||||
* }
|
||||
*]
|
||||
* 0:成功,1/2:失败,1:用户不存在,2:该用户绑定有策略,需先解除策略
|
||||
*/
|
||||
static ret_code user_config_del_proc(uint source, uint config_type,
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
ret_code ret = RET_OK;
|
||||
int array_size;
|
||||
cJSON *root, *data, *username_json, *ret_json, *ret_body_json;
|
||||
USER_DEL *username;
|
||||
char *ret_char = NULL;
|
||||
|
||||
/* 解析json串 */
|
||||
root = cJSON_Parse(input);
|
||||
data = cJSON_GetObjectItem(root, "data");
|
||||
if(!data)
|
||||
{
|
||||
ret = RET_INPUTERR;
|
||||
//ASSERT_RET(ret);
|
||||
cJSON_Delete(root);
|
||||
return ret;
|
||||
}
|
||||
|
||||
array_size = cJSON_GetArraySize(data);
|
||||
|
||||
username = (USER_DEL *)malloc(sizeof(USER_DEL));
|
||||
if(NULL == username)
|
||||
{
|
||||
ret = RET_INPUTERR;
|
||||
//ASSERT_RET(ret);
|
||||
cJSON_Delete(root);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret_json = cJSON_CreateArray();
|
||||
if(!ret_json)
|
||||
{
|
||||
ret = RET_ERR;
|
||||
//ASSERT_RET(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
for(int i = 0; i < array_size; i++)
|
||||
{
|
||||
int ret_del_user;
|
||||
char *ret_username = NULL;
|
||||
username_json = cJSON_GetArrayItem(data, i);
|
||||
//if(!username_json)
|
||||
ret_username = username_json->valuestring;
|
||||
username->type = DELUSER_BY_USERNAME;
|
||||
strcpy(username->id_name.uname, ret_username);
|
||||
ret_del_user = usermanager_del_user(username); //执行操作-删除用户
|
||||
|
||||
ret_body_json = cJSON_CreateObject();
|
||||
// if(!ret_result_json)
|
||||
// {
|
||||
// ret = RET_ERR;
|
||||
// return ret;
|
||||
// }
|
||||
cJSON_AddNumberToObject(ret_body_json, ret_username, ret_del_user);
|
||||
cJSON_AddItemToArray(ret_json, ret_body_json);
|
||||
}
|
||||
|
||||
|
||||
/* 处理返回结果 */
|
||||
ret_char = cJSON_PrintUnformatted(ret_json);
|
||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||
|
||||
/* 释放内存 */
|
||||
cJSON_Delete(root);
|
||||
cJSON_Delete(ret_json);
|
||||
UCHAR_FREE(ret_char);
|
||||
UCHAR_FREE(username);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 修改用户-web-处理
|
||||
* iuput格式:
|
||||
|
@ -264,6 +361,81 @@ static ret_code user_config_mod_line_proc(uint source, uint config_type,
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 修改用户-移动分组
|
||||
* iuput格式:
|
||||
* {
|
||||
* "type": 6,
|
||||
* "data": {
|
||||
* "user_id": 1,
|
||||
* "group_id": 3
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* output格式:{"result":true}
|
||||
* true:成功
|
||||
* false:失败
|
||||
*/
|
||||
static ret_code user_config_move_group_proc(uint source, uint config_type,
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
ret_code ret = RET_OK;
|
||||
bool ret_move_group;
|
||||
cJSON *root, *data, *userid_json, *groupid_json, *ret_json;
|
||||
char *ret_char = NULL;
|
||||
|
||||
/* 解析json串 */
|
||||
root = cJSON_Parse(input);
|
||||
data = cJSON_GetObjectItem(root, "data");
|
||||
if(!data)
|
||||
{
|
||||
ret = RET_INPUTERR;
|
||||
//ASSERT_RET(ret);
|
||||
cJSON_Delete(root);
|
||||
return ret;
|
||||
}
|
||||
userid_json = cJSON_GetObjectItem(data, "user_id");
|
||||
if(!userid_json)
|
||||
{
|
||||
ret = RET_INPUTERR;
|
||||
//ASSERT_RET(ret);
|
||||
cJSON_Delete(root);
|
||||
return ret;
|
||||
}
|
||||
groupid_json = cJSON_GetObjectItem(data, "group_id");
|
||||
if(!groupid_json)
|
||||
{
|
||||
ret = RET_INPUTERR;
|
||||
//ASSERT_RET(ret);
|
||||
cJSON_Delete(root);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 执行操作 */
|
||||
ret_move_group = move_user_group(userid_json->valueint, groupid_json->valueint);
|
||||
|
||||
/* 处理返回结果 */
|
||||
ret_json = cJSON_CreateObject();
|
||||
if(!ret_json)
|
||||
{
|
||||
ret = RET_ERR;
|
||||
//ASSERT_RET(ret);
|
||||
return ret;
|
||||
}
|
||||
cJSON_AddBoolToObject(ret_json, "result", ret_move_group);
|
||||
ret_char = cJSON_PrintUnformatted(ret_json);
|
||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||
|
||||
/* 释放内存 */
|
||||
cJSON_Delete(root);
|
||||
cJSON_Delete(ret_json);
|
||||
UCHAR_FREE(ret_char);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 处理函数接口,这里的config_type只设置为3:CM_CONFIG_SET,具体的函数类型设置在input的json中
|
||||
* iuput格式:{"type": 0,"data": {xxx}}
|
||||
|
@ -300,6 +472,11 @@ ret_code user_config_proc(uint source, uint config_type,
|
|||
input, input_len,
|
||||
output, output_len);
|
||||
break;
|
||||
case USER_CONFIG_DEL:
|
||||
ret = user_config_del_proc(source, config_type,
|
||||
input, input_len,
|
||||
output, output_len);
|
||||
break;
|
||||
case USER_CONFIG_MOD_WEB:
|
||||
ret = user_config_mod_web_proc(source, config_type,
|
||||
input, input_len,
|
||||
|
@ -310,6 +487,11 @@ ret_code user_config_proc(uint source, uint config_type,
|
|||
input, input_len,
|
||||
output, output_len);
|
||||
break;
|
||||
case USER_CONFIG_MOD_GROUP:
|
||||
ret = user_config_move_group_proc(source, config_type,
|
||||
input, input_len,
|
||||
output, output_len);
|
||||
break;
|
||||
default:
|
||||
ret = RET_NOTSUPPORT;
|
||||
}
|
||||
|
|
|
@ -24,8 +24,8 @@ ret_code usergroup_config_chk(uint source, uint *config_type,
|
|||
* 1/2/3/4:失败,1:用户组满了、2:用户组名或描述长度不符合要求、3:用户组名中包含特殊字符、4:用户组名重名
|
||||
*/
|
||||
static ret_code usergroup_config_add_proc(uint source, uint config_type,
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
ret_code ret = RET_OK;
|
||||
unsigned short result;
|
||||
|
@ -80,6 +80,86 @@ static ret_code usergroup_config_add_proc(uint source, uint config_type,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* 删除用户组-处理
|
||||
* iuput格式:
|
||||
* {
|
||||
* "type": 1,
|
||||
* "data": ["用户组01", "用户组02", "用户组03"]
|
||||
* }
|
||||
*
|
||||
* output格式:
|
||||
* [{
|
||||
* "用户组01": 0
|
||||
* },
|
||||
* {
|
||||
* "用户组02": 1
|
||||
* },
|
||||
* {
|
||||
* "用户组03": 2
|
||||
* }
|
||||
*]
|
||||
* 0:成功,1/2:失败,1:用户组不存在,2:该用户组绑定有策略,需先解除策略
|
||||
*/
|
||||
static ret_code usergroup_config_del_proc(uint source, uint config_type,
|
||||
pointer input, int input_len,
|
||||
pointer output, int *output_len)
|
||||
{
|
||||
ret_code ret = RET_OK;
|
||||
int array_size;
|
||||
cJSON *root, *data, *ret_json, *ret_body_json;
|
||||
char *ret_char = NULL;
|
||||
|
||||
/* 解析json串 */
|
||||
root = cJSON_Parse(input);
|
||||
data = cJSON_GetObjectItem(root, "data");
|
||||
if(!data)
|
||||
{
|
||||
ret = RET_INPUTERR;
|
||||
//ASSERT_RET(ret);
|
||||
cJSON_Delete(root);
|
||||
return ret;
|
||||
}
|
||||
|
||||
array_size = cJSON_GetArraySize(data);
|
||||
|
||||
ret_json = cJSON_CreateArray();
|
||||
if(!ret_json)
|
||||
{
|
||||
ret = RET_ERR;
|
||||
//ASSERT_RET(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
for(int i = 0; i < array_size; i++)
|
||||
{
|
||||
int ret_del_group;
|
||||
char *ret_groupname = NULL;
|
||||
ret_groupname = cJSON_GetArrayItem(data, i)->valuestring;
|
||||
ret_del_group = del_group_by_name(ret_groupname); //执行操作-删除用户组
|
||||
|
||||
ret_body_json = cJSON_CreateObject();
|
||||
// if(!ret_result_json)
|
||||
// {
|
||||
// ret = RET_ERR;
|
||||
// return ret;
|
||||
// }
|
||||
cJSON_AddNumberToObject(ret_body_json, ret_groupname, ret_del_group);
|
||||
cJSON_AddItemToArray(ret_json, ret_body_json);
|
||||
}
|
||||
|
||||
/* 处理返回结果 */
|
||||
ret_char = cJSON_PrintUnformatted(ret_json);
|
||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||
|
||||
/* 释放内存 */
|
||||
cJSON_Delete(root);
|
||||
cJSON_Delete(ret_json);
|
||||
UCHAR_FREE(ret_char);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*用户组配置处理
|
||||
*input格式:{"type": 0,"data": {xxx}}
|
||||
*output格式:{"result": 0}
|
||||
|
@ -116,6 +196,11 @@ ret_code usergroup_config_proc(uint source, uint config_type,
|
|||
input, input_len,
|
||||
output, output_len);
|
||||
break;
|
||||
case USERGROUP_CONFIG_DEL:
|
||||
ret = usergroup_config_del_proc(source, config_type,
|
||||
input, input_len,
|
||||
output, output_len);
|
||||
break;
|
||||
default:
|
||||
ret = RET_NOTSUPPORT;
|
||||
}
|
||||
|
|
|
@ -38,10 +38,8 @@ do { \
|
|||
def_type = cJSON_GetObjectItem(def_root, "type"); \
|
||||
if(def_type) { \
|
||||
fun_type = def_type->valueint; \
|
||||
cJSON_Delete(def_root); \
|
||||
}else{ \
|
||||
cJSON_Delete(def_root); \
|
||||
} \
|
||||
} \
|
||||
cJSON_Delete(def_root); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -10,12 +10,19 @@
|
|||
#define UTIME 20
|
||||
#define USER_ATTRIBUTE_NUM 7
|
||||
|
||||
#define ADD_FAIL_NOGROUP 1
|
||||
#define ADD_FAIL_NAMELEN 2
|
||||
#define ADD_FAIL_NAMESPE 3
|
||||
#define ADD_FAIL_NAMEDUP 4
|
||||
#define ADD_FAIL_USERFULL 5
|
||||
#define ADD_SUCCESS 0
|
||||
#define ADDUSER_FAIL_NOGROUP 1
|
||||
#define ADDUSER_FAIL_NAMELEN 2
|
||||
#define ADDUSER_FAIL_NAMESPE 3
|
||||
#define ADDUSER_FAIL_NAMEDUP 4
|
||||
#define ADDUSER_FAIL_USERFULL 5
|
||||
#define ADDUSER_SUCCESS 0
|
||||
|
||||
#define DELUSER_SUCCESS 0
|
||||
#define DELUSER_FAIL_NOTEXIST 1
|
||||
#define DELUSER_FAIL_STRTEGY 2
|
||||
|
||||
#define DELUSER_BY_USERNAME 1
|
||||
#define DELUSER_BY_USERID 2
|
||||
|
||||
typedef struct user
|
||||
{
|
||||
|
@ -49,6 +56,19 @@ typedef struct result_user_add
|
|||
int userID;
|
||||
}USERADD;
|
||||
|
||||
typedef union
|
||||
{
|
||||
unsigned short id;
|
||||
char uname[UNAMESIZE];
|
||||
}USER_ID_NAME;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int type;
|
||||
USER_ID_NAME id_name;
|
||||
}USER_DEL;
|
||||
|
||||
|
||||
/*初始化参数*/
|
||||
int init_user();
|
||||
|
||||
|
@ -67,4 +87,13 @@ unsigned short get_userid_by_name(char* UNAME);
|
|||
/* 修改用户-命令行 */
|
||||
bool mod_user_line(char* UNAME, const int INTYPE, char* IN);
|
||||
|
||||
/* 修改用户-移动分组 */
|
||||
bool move_user_group(unsigned short user_id, unsigned short group_id);
|
||||
|
||||
/* 删除用户
|
||||
* id_name:条件,包括用户名、用户ID
|
||||
* type:类型,1-用户名、2-用户ID
|
||||
*/
|
||||
int usermanager_del_user(USER_DEL* id_name);
|
||||
|
||||
#endif
|
|
@ -1,18 +1,20 @@
|
|||
#ifndef USER_GROUP_H_
|
||||
#define USER_GROUP_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#define GNAMESIZE (127 + 1)
|
||||
#define GDESIZE (127 + 1)
|
||||
|
||||
#define ADD_SUCCESS 0
|
||||
#define ADD_FAIL_FULL 1
|
||||
#define ADD_FAIL_LENGTH 2
|
||||
#define ADD_FAIL_SPECHARS 3
|
||||
#define ADD_FAIL_DUP 4
|
||||
#define ADDGROUP_SUCCESS 0
|
||||
#define ADDGROUP_FAIL_FULL 1
|
||||
#define ADDGROUP_FAIL_LENGTH 2
|
||||
#define ADDGROUP_FAIL_SPECHARS 3
|
||||
#define ADDGROUP_FAIL_DUP 4
|
||||
|
||||
#define DEL_SUCCESS 0
|
||||
#define DEL_FAIL_NOTEXIST 1
|
||||
#define DEL_FAIL_STRTEGY 2
|
||||
#define DELGROUP_SUCCESS 0
|
||||
#define DELGROUP_FAIL_NOTEXIST 1
|
||||
#define DELGROUP_FAIL_STRTEGY 2
|
||||
|
||||
typedef struct usergroup
|
||||
{
|
||||
|
@ -31,10 +33,10 @@ unsigned short add_group(char* UGNAME, char* UGDES);
|
|||
unsigned short get_group_count();
|
||||
|
||||
/* 查询用户组列表 */
|
||||
USERGROUP* show_group_list(USERGROUP* UGLIST);
|
||||
bool show_group_list(USERGROUP* UGLIST);
|
||||
|
||||
/* 根据用户组名查询用户组 */
|
||||
USERGROUP* find_group_by_name(char* UGNAME, USERGROUP* UGRES);
|
||||
bool find_group_by_name(char* UGNAME, USERGROUP* UGRES);
|
||||
|
||||
/* 根据用户组名查询用户组ID */
|
||||
unsigned short get_groupid_by_name(char* UGNAME);
|
||||
|
|
|
@ -39,27 +39,27 @@ void usermanager_add_user(char* uname, char* gname, USERADD* uaddres)
|
|||
/* 校验用户名长度 */
|
||||
if (NULL == uname || (UNAMESIZE) < strlen(uname) || 0 >= strlen(uname))
|
||||
{
|
||||
uaddres->result = ADD_FAIL_NAMELEN;
|
||||
uaddres->result = ADDUSER_FAIL_NAMELEN;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 校验用户名中不含特殊字符 */
|
||||
if (SPECHAR(uname))
|
||||
{
|
||||
uaddres->result = ADD_FAIL_NAMESPE;
|
||||
uaddres->result = ADDUSER_FAIL_NAMESPE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 根据用户组名查询用户组ID */
|
||||
if(NULL == gname)
|
||||
{
|
||||
uaddres->result = ADD_FAIL_NOGROUP;
|
||||
uaddres->result = ADDUSER_FAIL_NOGROUP;
|
||||
return;
|
||||
}
|
||||
unsigned short GID_temp = get_groupid_by_name(gname);
|
||||
if(INVALID_INDEX == GID_temp)
|
||||
{
|
||||
uaddres->result = ADD_FAIL_NOGROUP;
|
||||
uaddres->result = ADDUSER_FAIL_NOGROUP;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ void usermanager_add_user(char* uname, char* gname, USERADD* uaddres)
|
|||
{
|
||||
if (0 == strcmp(uname, g_user_table[i].uname))
|
||||
{
|
||||
uaddres->result = ADD_FAIL_NAMEDUP;
|
||||
uaddres->result = ADDUSER_FAIL_NAMEDUP;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ void usermanager_add_user(char* uname, char* gname, USERADD* uaddres)
|
|||
unsigned short ID = alloc_index(&g_user_index_head);
|
||||
if (INVALID_INDEX == ID)
|
||||
{
|
||||
uaddres->result = ADD_FAIL_USERFULL;
|
||||
uaddres->result = ADDUSER_FAIL_USERFULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ void usermanager_add_user(char* uname, char* gname, USERADD* uaddres)
|
|||
/* 连接数据库,存user表 */
|
||||
/* INSERT INTO `user` SET id = , group_id = , user_name = "", password = "", multi_player = , valid_always = */
|
||||
|
||||
uaddres->result = ADD_SUCCESS;
|
||||
uaddres->result = ADDUSER_SUCCESS;
|
||||
uaddres->userID = ID;
|
||||
|
||||
return;
|
||||
|
@ -271,3 +271,73 @@ bool mod_user_line(char* uname, const int intype, char* in)
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* 修改用户-移动分组 */
|
||||
bool move_user_group(unsigned short user_id, unsigned short group_id)
|
||||
{
|
||||
if(user_id != g_user_table[user_id].ID || group_id != g_group_table[group_id].ID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
g_user_table[user_id].GID = group_id;
|
||||
|
||||
/* 连接数据库,修改user表中的用户组id */
|
||||
/* UPDATE `user` u SET u.group_id = WHERE u.id = ; */
|
||||
|
||||
/* 发送消息(用户id - 用户组id)到策略模块,重查策略 */
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 删除用户 */
|
||||
int usermanager_del_user(USER_DEL* in)
|
||||
{
|
||||
unsigned short user_id_temp;
|
||||
if(NULL == in)
|
||||
{
|
||||
return DELUSER_FAIL_NOTEXIST;
|
||||
}
|
||||
|
||||
switch (in->type)
|
||||
{
|
||||
case DELUSER_BY_USERNAME:
|
||||
if(NULL == in->id_name.uname)
|
||||
{
|
||||
return DELUSER_FAIL_NOTEXIST;
|
||||
}
|
||||
/* 根据用户名查询用户id */
|
||||
user_id_temp = get_userid_by_name(in->id_name.uname);
|
||||
if (INVALID_INDEX == user_id_temp)
|
||||
{
|
||||
return DELUSER_FAIL_NOTEXIST;
|
||||
}
|
||||
break;
|
||||
|
||||
case DELUSER_BY_USERID:
|
||||
user_id_temp = in->id_name.id;
|
||||
if(user_id_temp < 1 || user_id_temp >= (USER_INDEX_MAX-1))
|
||||
{
|
||||
return DELUSER_FAIL_NOTEXIST;
|
||||
}
|
||||
|
||||
g_user_table[user_id_temp].ID = 0;
|
||||
break;
|
||||
default:
|
||||
return DELUSER_FAIL_NOTEXIST;
|
||||
break;
|
||||
}
|
||||
|
||||
/* 调用策略提供的接口,查询是否绑定策略,如果绑定了策略,返回删除失败-2:DELUSER_FAIL_STRTEGY*/
|
||||
|
||||
/* 根据用户ID删除用户列表中对应的用户 - 释放index、ID置0 */
|
||||
free_index(&g_user_index_head, user_id_temp);
|
||||
g_user_table[user_id_temp].ID = INVALID_INDEX;
|
||||
|
||||
/* DELETE FROM user WHERE user_name = "" */
|
||||
|
||||
/* 强制用户下线 */
|
||||
|
||||
return DELGROUP_SUCCESS;
|
||||
|
||||
}
|
|
@ -5,8 +5,11 @@
|
|||
#include "./include/array_index.h"
|
||||
#include "./include/user_group.h"
|
||||
#include "./include/common_user.h"
|
||||
#include "./include/user.h"
|
||||
|
||||
extern ARRAY g_group_index_head;
|
||||
extern ARRAY g_user_index_head;
|
||||
extern USERACCOUNT g_user_table[];
|
||||
USERGROUP g_group_table[GROUP_INDEX_MAX];
|
||||
|
||||
/* 初始化参数 */
|
||||
|
@ -32,13 +35,13 @@ unsigned short add_group(char* name, char* description)
|
|||
}
|
||||
if (NULL == name || GNAMESIZE < strlen(name) || GDESIZE < strlen(description))
|
||||
{
|
||||
return ADD_FAIL_LENGTH;
|
||||
return ADDGROUP_FAIL_LENGTH;
|
||||
}
|
||||
|
||||
/* 校验特殊字符 */
|
||||
if (SPECHAR(name))
|
||||
{
|
||||
return ADD_FAIL_SPECHARS;
|
||||
return ADDGROUP_FAIL_SPECHARS;
|
||||
}
|
||||
|
||||
/* 校验重名 */
|
||||
|
@ -46,7 +49,7 @@ unsigned short add_group(char* name, char* description)
|
|||
{
|
||||
if (0 == strcmp(name, g_group_table[i].gname))
|
||||
{
|
||||
return ADD_FAIL_DUP;
|
||||
return ADDGROUP_FAIL_DUP;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,7 +57,7 @@ unsigned short add_group(char* name, char* description)
|
|||
unsigned short ID = alloc_index(&g_group_index_head);
|
||||
if (INVALID_INDEX == ID)
|
||||
{
|
||||
return ADD_FAIL_FULL;
|
||||
return ADDGROUP_FAIL_FULL;
|
||||
}
|
||||
|
||||
/* 添加数据到内存g_group_table */
|
||||
|
@ -65,15 +68,15 @@ unsigned short add_group(char* name, char* description)
|
|||
/* 连接数据库,向user_group表中添加:用户组ID、用户组名和用户组描述 */
|
||||
/* INSERT INTO user_group SET id = "", gname = "", gdescription = "" */
|
||||
|
||||
return ADD_SUCCESS;
|
||||
return ADDGROUP_SUCCESS;
|
||||
}
|
||||
|
||||
/* 查询用户组-按用户名 */
|
||||
USERGROUP* find_group_by_name(char* gname, USERGROUP* groupout)
|
||||
bool find_group_by_name(char* gname, USERGROUP* groupout)
|
||||
{
|
||||
if (NULL == gname || NULL == groupout)
|
||||
{
|
||||
return NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 内存中查询数据 */
|
||||
|
@ -85,18 +88,13 @@ USERGROUP* find_group_by_name(char* gname, USERGROUP* groupout)
|
|||
groupout->ID = g_group_table[i].ID;
|
||||
strcpy(groupout->gname, g_group_table[i].gname);
|
||||
strcpy(groupout->gdescription, g_group_table[i].gdescription);
|
||||
return groupout;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (INVALID_INDEX == groupout->ID)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 连接数据库,根据用户名查询表user_group */
|
||||
/* SELECT UG.id, UG.gname, UG.gdescription FROM user_group UG WHERE UG.gname = "" */
|
||||
|
||||
return groupout;
|
||||
}
|
||||
|
||||
|
||||
|
@ -120,11 +118,11 @@ unsigned short get_group_count()
|
|||
}
|
||||
|
||||
/* 查询用户组列表 */
|
||||
USERGROUP* show_group_list(USERGROUP* grouplist)
|
||||
bool show_group_list(USERGROUP* grouplist)
|
||||
{
|
||||
if (NULL == grouplist)
|
||||
{
|
||||
return NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 内存查询数据 */
|
||||
|
@ -143,7 +141,7 @@ USERGROUP* show_group_list(USERGROUP* grouplist)
|
|||
/* 连接数据库,查询表user_group列表 */
|
||||
/* SELECT UG.id, UG.gname, UG.gdescription FROM user_group UG */
|
||||
|
||||
return grouplist;
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned short get_groupid_by_name(char* gname)
|
||||
|
@ -168,9 +166,9 @@ unsigned short get_groupid_by_name(char* gname)
|
|||
/*删除元素*/
|
||||
unsigned short del_group_by_name(char* gname)
|
||||
{
|
||||
if (CHECKOUTARG(gname))
|
||||
if (NULL == gname)
|
||||
{
|
||||
return DEL_FAIL_NOTEXIST;
|
||||
return DELGROUP_FAIL_NOTEXIST;
|
||||
}
|
||||
|
||||
/* 判断被删除的用户组是否存在 */
|
||||
|
@ -178,12 +176,22 @@ unsigned short del_group_by_name(char* gname)
|
|||
|
||||
if (INVALID_INDEX == GID_temp)
|
||||
{
|
||||
return DEL_FAIL_NOTEXIST;
|
||||
return DELGROUP_FAIL_NOTEXIST;
|
||||
}
|
||||
|
||||
/* 调用策略提供的接口,查询是否绑定策略*/
|
||||
/* 调用策略提供的接口,查询是否绑定策略,如果绑定了策略,返回删除失败-2:DELGROUP_FAIL_STRTEGY */
|
||||
|
||||
/* 根据用户组ID删除用户列表中对应的用户 */
|
||||
/* 根据用户组ID查询用户ID,按照用户ID删除用户 */
|
||||
for(int i = 1; i < USER_INDEX_MAX-1; i++)
|
||||
{
|
||||
if(g_user_table[i].GID == GID_temp)
|
||||
{
|
||||
free_index(&g_user_index_head, i);
|
||||
g_user_table[i].ID = INVALID_INDEX;
|
||||
}
|
||||
}
|
||||
|
||||
/* 连接数据库,根据用户组ID删除用户表中对应数据:DELETE FROM user WHERE group_id = */
|
||||
|
||||
/* 根据用户组ID删除用户组列表中对应的用户组 - 释放index、ID置0 */
|
||||
free_index(&g_group_index_head, GID_temp);
|
||||
|
@ -193,5 +201,5 @@ unsigned short del_group_by_name(char* gname)
|
|||
|
||||
/* 强制用户下线 */
|
||||
|
||||
return DEL_SUCCESS;
|
||||
return DELGROUP_SUCCESS;
|
||||
}
|
|
@ -44,7 +44,7 @@ bool mod_user_group(unsigned short uid, char* gname)
|
|||
/* 连接数据库,修改user表中的用户组id */
|
||||
/* UPDATE `user` u SET u.group_id = WHERE u.id = ; */
|
||||
|
||||
/* 强制用户下线 */
|
||||
/* 发送消息(用户id - 用户组id)到策略模块,重查策略 */
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -393,7 +393,40 @@ int main(void)
|
|||
|
||||
printf("*********************************************************************************\n");
|
||||
|
||||
char * output4;
|
||||
output4 = malloc(100);
|
||||
if (NULL == output4)
|
||||
{
|
||||
printf("ulist fail");
|
||||
}
|
||||
|
||||
char *testin4 = "{\"type\": 1,\"data\":[\"用户01\", \"用户02\", \"用户04\"]}";
|
||||
int *a4 = 1;
|
||||
ret_code c4 = user_config_proc(1, 1, testin4, 1, output4, a4);
|
||||
|
||||
printf("*******************************************************************************\n");
|
||||
printf("这里是个测试第四次结果,删除用户:%d\n", c4);
|
||||
printf("%s\n", output4);
|
||||
printf("*******************************************************************************\n");
|
||||
UCHAR_FREE(output4);
|
||||
|
||||
|
||||
char * output5;
|
||||
output5 = malloc(100);
|
||||
if (NULL == output5)
|
||||
{
|
||||
printf("ulist fail");
|
||||
}
|
||||
|
||||
char *testin5 = "{\"type\": 1,\"data\":[\"aaa\", \"aaa07\", \"aaa08\"]}";
|
||||
int *a5 = 1;
|
||||
ret_code c5 = usergroup_config_proc(1, 1, testin5, 1, output5, a5);
|
||||
|
||||
printf("*******************************************************************************\n");
|
||||
printf("这里是个测试第四次结果,删除用户组:%d\n", c5);
|
||||
printf("%s\n", output5);
|
||||
printf("*******************************************************************************\n");
|
||||
UCHAR_FREE(output5);
|
||||
|
||||
// USER_AUTH_RET* aret;
|
||||
// aret = (USER_AUTH_RET*)malloc(sizeof(USER_AUTH_RET));
|
||||
|
|
Loading…
Reference in New Issue